私は本当に気難しいUSBデバイス(モデム)を持っています。正常に動作する場合もありますが、接続を拒否する場合もあります。悪い状態になったら修正するために私が見つけた唯一の解決策は、デバイスを物理的に取り外してから再度接続することです。ただし、接続されているマシンに常に物理的にアクセスできるとは限らないため、 mコマンドラインからこれを行う方法を探しています。
この投稿 実行を提案します:
$ Sudo modprobe -w -r usb_storage; Sudo modprobe usb_storage
ただし、「不明なオプション-w」の出力が表示されます。このわずかに変更されたコマンド:
$ Sudo modprobe -r usb_storage
「致命的:モジュールusb_storageは使用中です」というメッセージで失敗します。実行する前に[usb-storage]とマークされたプロセスを-9キルしようとすると、それらは死ぬことを拒否します(カーネルと深く結びついているためだと思います)。
誰かがこれを行う方法を知っていますか?
注: serverfaultにこれをクロスポストしました どちらがより適切かわからなかったため。最初に回答した方を削除またはリンクします。
私はUbuntu14.04.4を持っています。これが10.04で機能するかどうかはわかりません。 Cyborg Rumble Pad(および一般的なUSBフラッシュドライブ)でテストしました。
デバイスを接続した直後:
dmesg | grep usb | tail -n 20
私は(多分とりわけ)得ます:
[ 2875.790610] usb 2-1.2: new full-speed USB device number 7 using ehci-pci
[ 2875.887485] usb 2-1.2: New USB device found, idVendor=0738, idProduct=cb02
[ 2875.887489] usb 2-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 2875.887490] usb 2-1.2: Product: Cyborg Rumble Pad - PC/Xbox 360
[ 2875.887492] usb 2-1.2: Manufacturer: Saitek
[ 2875.887493] usb 2-1.2: SerialNumber: 0CFE6B97
重要な部分は2-1.2
ストリング。 USBポートを識別します。良いニュースは、デバイスを別のポートに接続しない限り変更されないため、文字列を1回だけ取得する必要があることです。
次に、私は正しい場所に行きます:
cd /sys/bus/usb/drivers/usb
rootとしてを呼び出します(例:Sudo bash
最初):
echo 2-1.2 > unbind ; sleep 3 ; echo 2-1.2 > bind
その結果、ランブルパッドは、プラグを抜いて再度差し込んだかのように再初期化されます。 USBフラッシュドライブもテストしました。それ(そのLED)は何も起こらなかったかのように動作しますが、それでも私のKDEは反応し、マウントするかどうかを尋ねます。
デバイスの電源が入っている間は常に。電力不足のためにモデムがリセットされた場合、この方法は機能しません。
usbreset
を使用して、USBデバイスのリセットを試みることができます。ソースへのリンクは次のとおりです--- http://marc.info/?l=linux-usb&m=121459435621262&w=2
リセットしたいデバイスを探すだけです(lsusb
):
# lsusb
Bus 005 Device 004: ID 0951:1642 Kingston Technology DT101 G2
その後:
# usbreset /dev/bus/usb/005/004
これは「方法」の解決策ですが、機能する可能性があります。
usbip
をインストールします。usbip
をインストールします。usbip
を構成します。ssh
を構成するか、リモートでPCにアクセスしてコマンドを発行できるようにします。reboot
コマンドで2台目のPCを再起動し、復旧したら、usbip
が提供する機能を使用して再接続します(実際にusbip
)。これでデバイスがリセットされます。あなたはおそらくこれをスクリプト化することができます。コマンドラインから任意のUSBデバイスの電源を切る最も簡単な方法(つまり、USBへの実際の電源を入れ直す):
デバイスがUSBモデムであるのに、なぜusb_storage
モジュールをアンロードしようとしているのですか?
Sudo lshw
を実行し、USBモデムのエントリを見つけます。次のようなconfiguration:
行があるはずです(ドライバーは明らかに異なります):
configuration: ... driver=iwlagn ...
モジュールがロードされていることを確認します(正しいドライバー名に置き換えます)。
lsmod | grep iwlagn
次に、次のようにします。
Sudo modprobe -r iwlagn && sleep 2 && Sudo modprobe iwlagn
デバイスの電源を切るのに時間がかかる場合に備えて、そこにsleep
を入れるのが好きです。