
Ich habe einen USB-Stick, von dem ich die Seriennummer auslesen möchte. Wenn ich den Befehl aufrufe, lautet lsusb -v
die Ausgabe in der Zeile :iSerial
iSerial 3
Wenn ich /proc/scsi/usb-storage
die Datei anschaue, erhalte ich die folgende Ausgabe:
Host scsi10: usb-storage
Vendor: USB
Product: Disk 2.0
Serial Number: 92071573E1272519149
Protocol: Transparent SCSI
Transport: Bulk
Quirks:
Warum bekomme ich bei dem lsusb
Befehl einerseits keine Seriennummer ausgegeben, andererseits aber eine Seriennummer angezeigt /proc/scsi/usb-storage
. Wo liegt der Unterschied zwischen den beiden Methoden zur Ermittlung der Seriennummer?
Antwort1
lsusb
versucht möglicherweise, das USB-Gerät als O_RDWR
(read/schreibenModus) und Ihr Benutzer hat möglicherweise nicht die Rechte, dies zu tun (in diesem Fall sollte die Fehlermeldung „Gerät konnte nicht geöffnet werden, einige Informationen fehlen“ zwischen den Ausgaben erscheinen). Als Root gestartet lsusb
sollte es auch möglich sein, den gesamten iSerial-Wert auszugeben.
Antwort2
Generell gibt es viele verschiedene USB-Geräte (Tastaturen, Mäuse, Webcams, ...). lsusb
behandelt die angeschlossenen Geräte auf der USB-Protokollebene.
Einige USB-Geräte sind Speichergeräte (USB-Sticks, USB-Festplatten, ...). Sie verstehen zusätzlich zum USB-Protokoll ein anderes Protokoll (mehr oder weniger SCSI). Innerhalb dieses Protokolls hat ein USB-Speichergerät eine Seriennummer (wie auch ein ATA-Gerät). Dies sehen Sie in /proc/scsi/usb-storage
.
Die iSerial
Nummer, die Sie sehen, lsusb
hat damit nichts zu tun.
Deshalb sehen Sie die Seriennummer, an der Sie interessiert sind, mit einer Methode, aber nicht mit der anderen Methode. Und deshalb können Sie nicht verwenden, lsusb
um die Art der Seriennummer zu erhalten, an der Sie interessiert sind
Antwort3
Sie können es lsusb
mit dem ausführlichen Flag verwenden, müssen aber darauf achten, es sudo
zusammen mit diesem zu verwenden, da sonst die Seriennummer falsch ist.
sudo lsusb -v
Wenn das zu ausführlich ist, führen Sie Folgendes aus, lsusb
um die Geräte-ID abzurufen:
$ 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
Führen Sie es dann lsusb
mit -s
der Flagge aus, um nur das angegebene Gerät anzuzeigen, und suchen Sie mit grep nach der Seriennummer.
Also für die Seriennummer des Rigol-Geräts:
$ sudo lsusb -s 012 -v|grep -i iserial
iSerial 3 DP8C221100000
Weitere Informationen zur lsusb
Verwendung der --help
Flagge:
$ 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