シリアル番号を読みたいUSBスティックがあります。コマンドを呼び出すと、この行
lsusb -v
の出力は次のiSerial
ようになります。
iSerial 3
/proc/scsi/usb-storage
ファイルを表示するには、次の結果が表示されます。
Host scsi10: usb-storage
Vendor: USB
Product: Disk 2.0
Serial Number: 92071573E1272519149
Protocol: Transparent SCSI
Transport: Bulk
Quirks:
一方では、このコマンドにシリアル出力がないが、lsusb
他方ではシリアル出力が得られない/proc/scsi/usb-storage
のはなぜですか?シーケンスを収集するこの2つの方法の違いは何ですか?
答え1
lsusb
USBデバイスを次のように開こうとすることができますO_RDWR
(読み取り/書くモード)、ユーザーにこの操作を実行する権限がない可能性があります(その場合は、「デバイスを開くことができません。一部の情報が失われます」出力間にエラーメッセージが表示される必要があります)。 rootで始まる場合は、lsusb
iSerial値全体も印刷する必要があります。
答え2
通常、さまざまなUSBデバイス(キーボード、マウス、ウェブカメラ...)があります。lsusb
USBプロトコルレベルで接続されているデバイスを処理します。
一部のUSBデバイスはストレージデバイスです(USBメモリースティック、USBハードドライブ...)。彼らはUSBプロトコルに加えて、さまざまなプロトコル(ややSCSI)を理解しています。このプロトコルでは、USBストレージデバイスにはATAデバイスと同様にシリアル番号があります。これがで見ることができるものです/proc/scsi/usb-storage
。
iSerial
ご覧の数字はlsusb
今回の出来事とは関係ありません。
これがまさに1つの方法を使用すると興味のあるシリアル番号を見ることができますが、他の方法を使用すると見ることができない理由です。そのため、lsusb
興味のあるシリアル番号を取得するために使用することはできません。
答え3
verbose フラグを使用できますが、lsusb
必ず使用してください。sudo
それ以外の場合は、順序が正しくありません。
sudo lsusb -v
あまりにも詳細な場合は、次のコマンドを実行してlsusb
デバイスIDを取得します。
$ lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 012: ID 1ab1:0e11 Rigol Technologies
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
次にフラグをlsusb
使用して実行し、指定され-s
たデバイスのみを表示し、シリアル番号のgrepを表示します。
したがって、Rigolデバイスのシリアル番号は次のようになります。
$ sudo lsusb -s 012 -v|grep -i iserial
iSerial 3 DP8C221100000
lsusb
この--help
フラグの使用に関する追加情報:
$ lsusb --help
Usage: lsusb [options]...
List USB devices
-v, --verbose
Increase verbosity (show descriptors)
-s [[bus]:][devnum]
Show only devices with specified device and/or
bus numbers (in decimal)
-d vendor:[product]
Show only devices with the specified vendor and
product ID numbers (in hexadecimal)
-D device
Selects which device lsusb will examine
-t, --tree
Dump the physical USB device hierarchy as a tree
-V, --version
Show version of program
-h, --help
Show usage and help