LinuxでUSBポートを無効にする

LinuxでUSBポートを無効にする

私はこの質問に対する答えを見つけるために多くの努力をしましたが、私が見つけることができる最も近い解決策は次のとおりです。これしかし、これは私にとってはうまくいきません。

これは私のシステムです。

# uname -a
Linux vin 4.4.0-1-amd64 #1 SMP Debian 4.4.6-1 (2016-03-17) x86_64 GNU/Linux

問題はこれです:USBポートの1つが機能していないようです。 「/sys/bus/usb/devices/usb1/descriptors」を読み取ろうとするすべてのプログラムは、プログラムを中断して終了できない状態になります。

残念ながら、ChromeやBlenderを含む多くのソフトウェアがUSB1にアクセスしたいと思うので、これは私を悩ませています。 straceを使用してこれらのプログラムを呼び出すと、「/sys/bus/usb/devices/usb1/descriptors」を開こうとすると常にハングします。

"echo suspend> /sys/bus/usb/devices/usb1/power/level"のような操作を試しましたが、正しく動作しません。コマンドは他のコマンドと同様に中断されます。

上記の記事に記載されているHubpowerコードを試してみましたが、他のコードと同じように動作が停止しているようです。

システム全体をシャットダウンし、コンピュータ自体を開いてUSBポートを直接取り外してみましたが、USBポートの完全なコレクション(その多く)がマザーボードと非常に緊密に統合されているように見えません。 USBポート何でも分離できる方法です。もちろん、私はマザーボードにワイヤーを差し込んで外す経験はあまりありません。唯一の希望がそうすることであれば、私はそうすることができるという希望を持っています。

BIOSに入り、1つを除くすべてのUSBポートを無効にし、次のポートを除くすべてのポートを無効にして、どのポートが問題であるかを確認しました。しかし、何の効果もないようです。 LinuxはまだUSBマウスとキーボードを使用できるほどポートを認識します。 LinuxはBIOS構成が何であるか気にしないようです。

LinuxカーネルにUSB1を無視するように指示する方法があるかもしれないと思いました。しかし、実際にUSB1と対話しようとせずにそれを行うことができます(これは終了できない中断を引き起こすようです)。しかし、どうすればいいのかわかりません。

答え1

部分的な答え:1つのUSBポートのみを無効にできるかどうかはわかりませんが、コントローラとすべてのポートを無効にできます。

lspciを使用してコントローラを一覧表示できます。lspci -k| grep -i usb -A2 たとえば、次のような結果が得られます。

03:00.0 USB controller: ASMedia Technology Inc. ASM1142 USB 3.1 Host Controller
        Subsystem: Micro-Star International Co., Ltd. [MSI] ASM1142 USB 3.1 Host Controller
        Kernel driver in use: xhci_hcd
        Kernel modules: xhci_pci

これは、PCIポート03:00.0のUSBコントローラがxhcp_pciカーネルモジュールによって処理されることを意味します。

以下を使用して、ドライバにそのコントローラを管理しないように要求できます。

echo "0000:03:00.0" | sudo tee /sys/bus/pci/drivers/xhci_hcd/unbind

コントローラの他のUSBポートを紛失しても問題ない場合は、これが解決策かもしれません。

関連情報