Lsusb: Unterschied zwischen den Versionen

Aus wiki.archlinux.de
(Artikel angelegt)
K (→‎Installation: vorlage:installation)
Markierung: Zurückgesetzt
(7 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
{{titel|lsusb}}{{righttoc}}
{{SEITENTITEL:lsusb}}{{righttoc}}
Mittels des Tools <code>lsusb</code> kann man sich alle am Computer per USB angeschlossenen Geräte anzeigen lassen. Genauer genommen handelt es sich um ein Informationstool, mittels dessen das USB-System analysiert und durchsucht werden kann. Mittels verschiedener Parameter kann die Ausgabe angepasst werden.
Mittels des Tools {{ic|lsusb}} kann man sich alle am Computer per USB angeschlossenen Geräte anzeigen lassen. Genauer genommen handelt es sich um ein Informationstool, mittels dessen das USB-System analysiert und durchsucht werden kann. Mittels verschiedener Parameter kann die Ausgabe angepasst werden.


==Installation==
{{installation|repo=core|paket=usbutils}}
Das Programm <code>lsusb</code> ist teil des Paketes <code>usbutils</code>, welches sich im „core“-Repository befindet. Dieses Paket kann mittels [[Pacman]] installiert werden.


pacman -S usbutils
Um alle Funktionen (insbesondere die erweiterten Informationen zu Bus-Abschnitten und Geräten) verwenden zu können, sind root-Rechte erforderlich. Für den „täglichen Standard-Gebrauch“ ist dies nicht nötig.
 
Um alle Funktionen (insbesondere die erweiterten Informationen su Bus-Abschnitten und Geräten) verwenden zu können, sind root-Rechte erforderlich. Für den „täglichen Standard-Gebrauch“ ist dies nicht nötig.


==Einsatzzweck==
==Einsatzzweck==
Für die Anzeige durch <code>lsusb</code> ist es nicht wichtig, ob die Hardware von Linux erkannt wird. So lange die Hardware sich über USB am System anmeldet, können entsprechende Informationen angezeigt werden. <code>lsusb</code> eignet sich daher also sehr gut, um im Zuge einer Fehleranalyse die generelle Funktionsfähigkeit von Hardware zu überprüfen.
Für die Anzeige durch {{ic|lsusb}} ist es nicht wichtig, ob die Hardware von Linux erkannt wird. So lange die Hardware sich über USB am System anmeldet, können entsprechende Informationen angezeigt werden. {{ic|lsusb}} eignet sich daher also sehr gut, um im Zuge einer Fehleranalyse die generelle Funktionsfähigkeit von Hardware zu überprüfen.


Wenn USB-Hardware duch <code>lsusb</code> nicht angezeigt werden kann, ist es wahrscheinlich, dass die Hardware nicht funktioniert, sich einem Funktionsmodus befindet, in dem USB deaktiviert ist, oder das USB-System nicht funktioniert.
Wenn USB-Hardware duch {{ic|lsusb}} nicht angezeigt werden kann, ist es wahrscheinlich, dass die Hardware nicht funktioniert, sich in einem Funktionsmodus befindet, in dem USB deaktiviert ist, oder das USB-System nicht funktioniert.


==Beispiele==
==Beispiele==
Nachfolgende Beispiele verdeutlichen die Verwendung von <code>lsusb</code>. Einige der Aufrufe bedürfen root-Rechten, da direkt auf die Hardware zugegriffen wird, was mit User-Rechten nicht uneingeschränkt möglich ist.
Nachfolgende Beispiele verdeutlichen die Verwendung von {{ic|lsusb}}. Einige der Aufrufe bedürfen root-Rechten, da direkt auf die Hardware zugegriffen wird, was mit User-Rechten nicht uneingeschränkt möglich ist.


===Standard-Aufruf/Erläuterung===
===Standard-Aufruf/Erläuterung===
Mittels der einfachen Eingabe von <code>lsusb</code> wird das USB-System durchsucht, und es werden Informationen über die gefundenen Geräte ausgegeben.
Mittels der einfachen Eingabe von {{ic|lsusb}} wird das USB-System durchsucht, und es werden Informationen über die gefundenen Geräte ausgegeben.


$ lsusb
{{hc|lsusb|Bus 001 Device 003: ID 2040:7070 Hauppauge Nova-T Stick 3
Bus 001 Device 003: ID 2040:7070 Hauppauge Nova-T Stick 3
  Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
  Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
  Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
  Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Zeile 33: Zeile 29:
  Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
  Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
  Bus 002 Device 002: ID 0644:0200 TEAC Corp.  
  Bus 002 Device 002: ID 0644:0200 TEAC Corp.  
  Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
  Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub}}


Die Standard-Ausgabe gliedert sich in drei Bereiche, der Bus-Bereich (<code>Bus 001 Device 003</code>) bestimmt die „physische“ Position der Hardware. Pro Bus können mehrere Devices vorhanden sein. Die Ausgabe unterscheidet sich je Mainboard. Die Anzahl der Busse und Devices stimmt oft nicht mit den Tatsächlich vorhandenen USB-Anschlüssen überein, da <code>lsusb</code> auch interne Verbindungen mit auflistet.
Die Standard-Ausgabe gliedert sich in drei Bereiche, der Bus-Bereich ({{ic|Bus 001 Device 003}}) bestimmt die „physische“ Position der Hardware. Pro Bus können mehrere Devices vorhanden sein. Die Ausgabe unterscheidet sich je Mainboard. Die Anzahl der Busse und Devices stimmt oft nicht mit den tatsächlich vorhandenen USB-Anschlüssen überein, da {{ic|lsusb}} auch interne Verbindungen mit auflistet.


Der ID-Abschnitt (<code>ID 2040:7070</code>) bestimmt eindeutig, um welche Art von Hardware es sich Handelt. Jeder Anbieter hat eine Vendor-ID (vor dem Doppelpunkt) und jedes gerät hat eine Product-ID (nach dem Doppelpunkt). Anhand dieser beiden Angaben kann man ein Gerät identifizieren.
Der ID-Abschnitt ({{ic|ID 2040:7070}}) bestimmt eindeutig, um welche Art von Hardware es sich handelt. Jeder Anbieter hat eine Vendor-ID (vor dem Doppelpunkt) und jedes Gerät hat eine Product-ID (nach dem Doppelpunkt). Anhand dieser beiden Angaben kann man ein Gerät identifizieren.


Der Namensteil (<code>Hauppauge Nova-T Stick 3</code>) kann vom Anbieter völlig frei gewählt werden (weiter Informationen siehe Abschnitt [[#Zuordungs-Datei|Zuordnungs-Datei]]). In Verbindung mit der Bus-Angabe und der ID kann man so ein bestimmtes Gerät an einem Bestimmten USB-Anschluss eindeutig identifizieren.
Der Namensteil ({{ic|Hauppauge Nova-T Stick 3}}) kann vom Anbieter völlig frei gewählt werden (weiter Informationen siehe Abschnitt [[#Zuordungs-Datei|Zuordnungs-Datei]]). In Verbindung mit der Bus-Angabe und der ID kann man so ein bestimmtes Gerät an einem bestimmten USB-Anschluss eindeutig identifizieren.


===Suche nach Geräte-IDs===
===Suche nach Geräte-IDs===
Will man sich nur die Geräte eines bestimmten Herstellers anzeigen lassen, und kennt man dessen Vendor-ID bedient man sich des Parameters <code>-d</code>.
Will man sich nur die Geräte eines bestimmten Herstellers anzeigen lassen, und kennt man dessen Vendor-ID bedient man sich des Parameters {{ic|-d}}.


lsusb -d 046d:
{{hc|lsusb -d 046d:|Bus 005 Device 003: ID 046d:c043 Logitech, Inc. MX320/MX400 Laser Mouse
Bus 005 Device 003: ID 046d:c043 Logitech, Inc. MX320/MX400 Laser Mouse
Bus 004 Device 002: ID 046d:08b2 Logitech, Inc. QuickCam Pro 4000}}
Bus 004 Device 002: ID 046d:08b2 Logitech, Inc. QuickCam Pro 4000


Da <code>046d</code> die Vendor-ID von Logitech ist, werden nun nur noch alle Logitech-Geräte aufgelistet. Will man die Suche noch weiter spezifizieren, kann man zusätzlich zur Vendor-ID auch die Product-ID angeben.
Da {{ic|046d}} die Vendor-ID von Logitech ist, werden nun nur noch alle Logitech-Geräte aufgelistet. Will man die Suche noch weiter spezifizieren, kann man zusätzlich zur Vendor-ID auch die Product-ID angeben.


$ lsusb -d 046d:c043
{{hc|lsusb -d 046d:c043|Bus 005 Device 003: ID 046d:c043 Logitech, Inc. MX320/MX400 Laser Mouse}}
Bus 005 Device 003: ID 046d:c043 Logitech, Inc. MX320/MX400 Laser Mouse


Es wird nun nur noch die Zeile der am Rechner angeschlossenen Maus „Logitech MX400 Laser“ angezeigt. Nur der Vollständigkeit halber: Die Suche nur nach der Product-ID, dann mit vorangestelltem Doppelpunkt, funktioniert genau so.
Es wird nun nur noch die Zeile der am Rechner angeschlossenen Maus „Logitech MX400 Laser“ angezeigt. Nur der Vollständigkeit halber: Die Suche nur nach der Product-ID, dann mit vorangestelltem Doppelpunkt, funktioniert genau so.


===Suche nach der Position im Bus===
===Suche nach der Position im Bus===
Will man sich Informationen darüber anzeigen lassen, welche Geräte an einem bestimmten Bus angeschlossen sind, bedient man sich des Parameters <code>-s</code>.
Will man sich Informationen darüber anzeigen lassen, welche Geräte an einem bestimmten Bus angeschlossen sind, bedient man sich des Parameters {{ic|-s}}.


$ lsusb -s 005:
{{hc|lsusb -s 005:|Bus 005 Device 003: ID 046d:c043 Logitech, Inc. MX320/MX400 Laser Mouse
Bus 005 Device 003: ID 046d:c043 Logitech, Inc. MX320/MX400 Laser Mouse
Bus 005 Device 002: ID 04b4:00ff Cypress Semiconductor Corp.  
Bus 005 Device 002: ID 04b4:00ff Cypress Semiconductor Corp.  
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub}}
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub


Es werden nun nur noch alle Geräte ausgegeben, die am Bus <code>005</code> angeschlossen sind. Will man dies noch weiter Spezifizieren, kann man zusätzlich auch noch die Device-Nummer angeben.
Es werden nun nur noch alle Geräte ausgegeben, die am Bus {{ic|005}} angeschlossen sind. Will man dies noch weiter spezifizieren, kann man zusätzlich auch noch die Device-Nummer angeben.


$ lsusb -s 005:003
{{hc|lsusb -s 005:003|Bus 005 Device 003: ID 046d:c043 Logitech, Inc. MX320/MX400 Laser Mouse}}
Bus 005 Device 003: ID 046d:c043 Logitech, Inc. MX320/MX400 Laser Mouse


Jetzt wird nur noch die Zeile des Gerätes ausgegeben, das als drittes Gerät an Bus <code>005</code> angeschlossen wurde. Auch hier gilt wieder: Die Suche kann auch nur nach Device-Nummern, wieder mit vorangestelltem Doppelpunkt, vorgenommen werden.
Jetzt wird nur noch die Zeile des Gerätes ausgegeben, das als drittes Gerät an Bus {{ic|005}} angeschlossen wurde. Auch hier gilt wieder: Die Suche kann auch nur nach Device-Nummern, wieder mit vorangestelltem Doppelpunkt, vorgenommen werden.


===Ausgabe anhand einer Gerätedatei===
===Ausgabe anhand einer Gerätedatei===
Statt den Bus zu durchsuchen, kann man <code>lsusb</code> mittels des Parameters <code>-D</code> auch anweisen, eine bestimmte Gerätedatei als Quelle für die Ausgabe zu verwenden.
Statt den Bus zu durchsuchen, kann man {{ic|lsusb}} mittels des Parameters {{ic|-D}} auch anweisen, eine bestimmte Gerätedatei als Quelle für die Ausgabe zu verwenden.


$ lsusb -D /dev/bus/usb/005/003
{{hc|lsusb -D /dev/bus/usb/005/003|Device: ID 046d:c043 Logitech, Inc. MX320/MX400 Laser Mouse
Device: ID 046d:c043 Logitech, Inc. MX320/MX400 Laser Mouse
[weitere Informationen]
[weitere Informationen]
can't get device qualifier: Operation not permitted
can't get device qualifier: Operation not permitted
can't get debug descriptor: Operation not permitted
can't get debug descriptor: Operation not permitted
cannot read device status, Operation not permitted (1)}}
cannot read device status, Operation not permitted (1)


Da hier direkt auf Gerätedateien zugegriffen wird, und über diese direkt auf die Hardware, können mit User-Rechten nicht alle Informationen ausgelesen werden.
Da hier direkt auf Gerätedateien zugegriffen wird, und über diese direkt auf die Hardware, können mit User-Rechten nicht alle Informationen ausgelesen werden.


===Erweiterte Ausgabe===
===Erweiterte Ausgabe===
Die erweiterte Ausgabe mittels des Parameters <code>-v</code> entspricht der Ausgabe nach der Gerätedatei mittels des Parameters <code>-D</code>. Auch bei der erweiterten Ausgabe mittels <code>-v</code> werden für die Ausgabe aller Informationen root-Rechte benötigt.
Die erweiterte Ausgabe mittels des Parameters {{ic|-v}} entspricht der Ausgabe nach der Gerätedatei mittels des Parameters {{ic|-D}}. Auch bei der erweiterten Ausgabe mittels {{ic|-v}} werden für die Ausgabe aller Informationen root-Rechte benötigt.


Es ist Ratsam, <code>-v</code> mit einem Filter-Parameter zu kombinieren, da sonst für alle Geräte ausführliche Informationen ausgegeben werden, was die Ausgabe sehr unübersichtlich und umfangreich macht.
Es ist ratsam, {{ic|-v}} mit einem Filter-Parameter zu kombinieren, da sonst für alle Geräte ausführliche Informationen ausgegeben werden, was die Ausgabe sehr unübersichtlich und umfangreich macht.


# lsusb -v -s 005:003
{{hc|lsusb -v -s 005:003|Bus 005 Device 003: ID 046d:c043 Logitech, Inc. MX320/MX400 Laser Mouse
Device Descriptor:
Bus 005 Device 003: ID 046d:c043 Logitech, Inc. MX320/MX400 Laser Mouse
  bLength                18
Device Descriptor:
  bDescriptorType        1
  bLength                18
  bcdUSB              2.00
  bDescriptorType        1
  bDeviceClass            0 (Defined at Interface level)
  bcdUSB              2.00
  bDeviceSubClass        0  
  bDeviceClass            0 (Defined at Interface level)
  bDeviceProtocol        0  
  bDeviceSubClass        0  
  bMaxPacketSize0        8
  bDeviceProtocol        0  
  idVendor          0x046d Logitech, Inc.
  bMaxPacketSize0        8
  idProduct          0xc043 MX320/MX400 Laser Mouse
  idVendor          0x046d Logitech, Inc.
  bcdDevice          27.10
  idProduct          0xc043 MX320/MX400 Laser Mouse
  iManufacturer          1 Logitech
  bcdDevice          27.10
  iProduct                2 USB-PS/2 Optical Mouse
  iManufacturer          1 Logitech
  iSerial                0  
  iProduct                2 USB-PS/2 Optical Mouse
  bNumConfigurations      1
  iSerial                0  
[weitere Informationen]
  bNumConfigurations      1
Device Status:    0x0000
[weitere Informationen]
  (Bus Powered)}}
Device Status:    0x0000
  (Bus Powered)


Je nach abgefragtem Gerät variieren die angezeigten Informationen.
Je nach abgefragtem Gerät variieren die angezeigten Informationen.


# lsusb -v -s 004:002
{{hc|lsusb -v -s 004:002|[…]
[…]
  idVendor          0x046d Logitech, Inc.
  idVendor          0x046d Logitech, Inc.
  idProduct          0x08b2 QuickCam Pro 4000
  idProduct          0x08b2 QuickCam Pro 4000
[…]
[…]
    AudioControl Interface Descriptor:
    AudioControl Interface Descriptor:
      bLength                12
      bLength                12
      bDescriptorType        36
      bDescriptorType        36
      bDescriptorSubtype      2 (INPUT_TERMINAL)
      bDescriptorSubtype      2 (INPUT_TERMINAL)
      bTerminalID            1
      bTerminalID            1
      wTerminalType      0x0201 Microphone
      wTerminalType      0x0201 Microphone
      bAssocTerminal          0
      bAssocTerminal          0
      bNrChannels            1
      bNrChannels            1
      wChannelConfig    0x0000
      wChannelConfig    0x0000
      iChannelNames          0  
      iChannelNames          0  
      iTerminal              0  
      iTerminal              0  
[…]}}
[…]


Die als zweites Gerät an Bus <code>004</code> verfügt also über ein Mikrofon, das per USB ansteuerbar ist. Wenn man die Hardware nicht kennt, kann man mittels der erweiterten Ausgabe Informationen über dessen Funktionen erlangen.
Die als zweites Gerät an Bus {{ic|004}} angeschlossene Hardware verfügt also über ein Mikrofon, das per USB ansteuerbar ist. Wenn man die Hardware nicht kennt, kann man mittels der erweiterten Ausgabe Informationen über dessen Funktionen erlangen.


==Zuordungs-Datei==
==Zuordungs-Datei==
Unter Arch befinden sich alle Informationen über die Product- und Vendor-IDs in der Datei <code>/usr/share/hwdata/usb.ids</code>. In dieser Datei werden nach einem recht einfachen Schema, welches im Kopfbereich der Datei erläutert wird, alle IDs aufgelistet. Änderungen an der Datei wirken sich auf die Ausgabe von <code>lsusb</code> aus.
Unter Arch befinden sich alle Informationen über die Product- und Vendor-IDs in der Datei {{ic|/usr/share/hwdata/usb.ids}}. In dieser Datei werden nach einem recht einfachen Schema, welches im Kopfbereich der Datei erläutert wird, alle IDs aufgelistet. Änderungen an der Datei wirken sich auf die Ausgabe von {{ic|lsusb}} aus.


$ lsusb -s 005:003
{{hc|lsusb -s 005:003|Bus 005 Device 003: ID 046d:c043 Logitech, Inc. blubb}}
Bus 005 Device 003: ID 046d:c043 Logitech, Inc. blubb


Hier wurde der Produktnamen-String in der Datei auf „blubb“ geändert. Nach Wiederherstellung des Originalzustandes, zeigt <code>lsusb</code> das Gerät wieder richtig an.
Hier wurde der Produktnamen-String in der Datei auf „blubb“ geändert. Nach Wiederherstellung des Originalzustandes, zeigt {{ic|lsusb}} das Gerät wieder richtig an.


$ lsusb -s 005:003
{{hc|lsusb -s 005:003|Bus 005 Device 003: ID 046d:c043 Logitech, Inc. MX320/MX400 Laser Mouse}}
Bus 005 Device 003: ID 046d:c043 Logitech, Inc. MX320/MX400 Laser Mouse


Da die Produktnamen-Strings nur beschreibende Funktion haben hat eine Änderung des Strings keinen Einfluss auf die Funktionsweise des Gerätes. Allerdings wird der String überall angezeigt, sollte also das Gerät schon richtig beschreiben. Fehlerhafte Beschreibungen sollten dem Maintainer der Datei gemeldet werden sollten.
Da die Produktnamen-Strings nur beschreibende Funktion haben hat eine Änderung des Strings keinen Einfluss auf die Funktionsweise des Gerätes. Allerdings wird der String überall angezeigt, sollte also das Gerät schon richtig beschreiben. Fehlerhafte Beschreibungen sollten dem Maintainer der Datei gemeldet werden.


==Script <code>usb-devices</code>==
==Script {{ic|usb-devices}}==
Das Paket <code>usbutils</code> wird mit einem Script <code>usb-devices</code> ausgeliefert, welches Informationen über alle aktiven USB-Geräte in kompakter, leicht parsbarer Form anzeigt. Die Anzeige ist identisch des Inhaltes der Datei <code>usb/devices</code> innerhalb eines Mountpoints von <code>usbfs</code>, oder innerhalb eines Mountpoints von <code>debugfs</code>.
Das Paket {{ic|usbutils}} wird mit einem Script {{ic|usb-devices}} ausgeliefert, welches Informationen über alle aktiven USB-Geräte in kompakter, leicht parsbarer Form anzeigt. Die Anzeige ist identisch des Inhaltes der Datei {{ic|usb/devices}} innerhalb eines Mountpoints von {{ic|usbfs}}, oder innerhalb eines Mountpoints von {{ic|debugfs}}.


Anstatt einfach den Inhalt der Datei auszugeben, ermittelt <code>usb-devices</code> die Daten selbständig. Da weder <code>usbfs</code>, noch <code>debugfs</code> gemountet sein müssen, hat man mittels <code>usb-devices</code> neben <code>lsusb</code> eine einfache Möglichkeit, um an Informationen über USB-Geräte zu gelangen, ohne, dass man einen <code>usbfs</code>-, oder <code>debugfs</code>-Mountpoint anlegen muss.
Anstatt einfach den Inhalt der Datei auszugeben, ermittelt {{ic|usb-devices}} die Daten selbständig. Da weder {{ic|usbfs}}, noch {{ic|debugfs}} gemountet sein müssen, hat man mittels {{ic|usb-devices}} neben {{ic|lsusb}} eine einfache Möglichkeit, um an Informationen über USB-Geräte zu gelangen, ohne, dass man einen {{ic|usbfs}}-, oder {{ic|debugfs}}-Mountpoint anlegen muss.


==Siehe auch==
==Siehe auch==
* [[Mounten]] und [[fstab]] – Mounten von Dateisystemen (<code>usbfs</code>)
* [[Mounten]] und [[fstab]] – Mounten von Dateisystemen ({{ic|usbfs}})


==Weblinks==
==Weblinks==

Version vom 15. Juni 2013, 23:03 Uhr

Mittels des Tools lsusb kann man sich alle am Computer per USB angeschlossenen Geräte anzeigen lassen. Genauer genommen handelt es sich um ein Informationstool, mittels dessen das USB-System analysiert und durchsucht werden kann. Mittels verschiedener Parameter kann die Ausgabe angepasst werden.

Installation

Das Programm ist als usbutils in core verfügbar, und kann von dort mittels Pacman installiert werden.

pacman -S usbutils

Um alle Funktionen (insbesondere die erweiterten Informationen zu Bus-Abschnitten und Geräten) verwenden zu können, sind root-Rechte erforderlich. Für den „täglichen Standard-Gebrauch“ ist dies nicht nötig.

Einsatzzweck

Für die Anzeige durch lsusb ist es nicht wichtig, ob die Hardware von Linux erkannt wird. So lange die Hardware sich über USB am System anmeldet, können entsprechende Informationen angezeigt werden. lsusb eignet sich daher also sehr gut, um im Zuge einer Fehleranalyse die generelle Funktionsfähigkeit von Hardware zu überprüfen.

Wenn USB-Hardware duch lsusb nicht angezeigt werden kann, ist es wahrscheinlich, dass die Hardware nicht funktioniert, sich in einem Funktionsmodus befindet, in dem USB deaktiviert ist, oder das USB-System nicht funktioniert.

Beispiele

Nachfolgende Beispiele verdeutlichen die Verwendung von lsusb. Einige der Aufrufe bedürfen root-Rechten, da direkt auf die Hardware zugegriffen wird, was mit User-Rechten nicht uneingeschränkt möglich ist.

Standard-Aufruf/Erläuterung

Mittels der einfachen Eingabe von lsusb wird das USB-System durchsucht, und es werden Informationen über die gefundenen Geräte ausgegeben.

lsusb
Bus 001 Device 003: ID 2040:7070 Hauppauge Nova-T Stick 3
 Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
 Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
 Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
 Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
 Bus 008 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
 Bus 005 Device 003: ID 046d:c043 Logitech, Inc. MX320/MX400 Laser Mouse
 Bus 005 Device 002: ID 04b4:00ff Cypress Semiconductor Corp. 
 Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
 Bus 004 Device 002: ID 046d:08b2 Logitech, Inc. QuickCam Pro 4000
 Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
 Bus 002 Device 002: ID 0644:0200 TEAC Corp. 
 Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Die Standard-Ausgabe gliedert sich in drei Bereiche, der Bus-Bereich (Bus 001 Device 003) bestimmt die „physische“ Position der Hardware. Pro Bus können mehrere Devices vorhanden sein. Die Ausgabe unterscheidet sich je Mainboard. Die Anzahl der Busse und Devices stimmt oft nicht mit den tatsächlich vorhandenen USB-Anschlüssen überein, da lsusb auch interne Verbindungen mit auflistet.

Der ID-Abschnitt (ID 2040:7070) bestimmt eindeutig, um welche Art von Hardware es sich handelt. Jeder Anbieter hat eine Vendor-ID (vor dem Doppelpunkt) und jedes Gerät hat eine Product-ID (nach dem Doppelpunkt). Anhand dieser beiden Angaben kann man ein Gerät identifizieren.

Der Namensteil (Hauppauge Nova-T Stick 3) kann vom Anbieter völlig frei gewählt werden (weiter Informationen siehe Abschnitt Zuordnungs-Datei). In Verbindung mit der Bus-Angabe und der ID kann man so ein bestimmtes Gerät an einem bestimmten USB-Anschluss eindeutig identifizieren.

Suche nach Geräte-IDs

Will man sich nur die Geräte eines bestimmten Herstellers anzeigen lassen, und kennt man dessen Vendor-ID bedient man sich des Parameters -d.

lsusb -d 046d:
Bus 005 Device 003: ID 046d:c043 Logitech, Inc. MX320/MX400 Laser Mouse
Bus 004 Device 002: ID 046d:08b2 Logitech, Inc. QuickCam Pro 4000

Da 046d die Vendor-ID von Logitech ist, werden nun nur noch alle Logitech-Geräte aufgelistet. Will man die Suche noch weiter spezifizieren, kann man zusätzlich zur Vendor-ID auch die Product-ID angeben.

lsusb -d 046d:c043
Bus 005 Device 003: ID 046d:c043 Logitech, Inc. MX320/MX400 Laser Mouse

Es wird nun nur noch die Zeile der am Rechner angeschlossenen Maus „Logitech MX400 Laser“ angezeigt. Nur der Vollständigkeit halber: Die Suche nur nach der Product-ID, dann mit vorangestelltem Doppelpunkt, funktioniert genau so.

Suche nach der Position im Bus

Will man sich Informationen darüber anzeigen lassen, welche Geräte an einem bestimmten Bus angeschlossen sind, bedient man sich des Parameters -s.

lsusb -s 005:
Bus 005 Device 003: ID 046d:c043 Logitech, Inc. MX320/MX400 Laser Mouse
Bus 005 Device 002: ID 04b4:00ff Cypress Semiconductor Corp. 
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

Es werden nun nur noch alle Geräte ausgegeben, die am Bus 005 angeschlossen sind. Will man dies noch weiter spezifizieren, kann man zusätzlich auch noch die Device-Nummer angeben.

lsusb -s 005:003
Bus 005 Device 003: ID 046d:c043 Logitech, Inc. MX320/MX400 Laser Mouse

Jetzt wird nur noch die Zeile des Gerätes ausgegeben, das als drittes Gerät an Bus 005 angeschlossen wurde. Auch hier gilt wieder: Die Suche kann auch nur nach Device-Nummern, wieder mit vorangestelltem Doppelpunkt, vorgenommen werden.

Ausgabe anhand einer Gerätedatei

Statt den Bus zu durchsuchen, kann man lsusb mittels des Parameters -D auch anweisen, eine bestimmte Gerätedatei als Quelle für die Ausgabe zu verwenden.

lsusb -D /dev/bus/usb/005/003
Device: ID 046d:c043 Logitech, Inc. MX320/MX400 Laser Mouse
[weitere Informationen]
can't get device qualifier: Operation not permitted
can't get debug descriptor: Operation not permitted
cannot read device status, Operation not permitted (1)

Da hier direkt auf Gerätedateien zugegriffen wird, und über diese direkt auf die Hardware, können mit User-Rechten nicht alle Informationen ausgelesen werden.

Erweiterte Ausgabe

Die erweiterte Ausgabe mittels des Parameters -v entspricht der Ausgabe nach der Gerätedatei mittels des Parameters -D. Auch bei der erweiterten Ausgabe mittels -v werden für die Ausgabe aller Informationen root-Rechte benötigt.

Es ist ratsam, -v mit einem Filter-Parameter zu kombinieren, da sonst für alle Geräte ausführliche Informationen ausgegeben werden, was die Ausgabe sehr unübersichtlich und umfangreich macht.

lsusb -v -s 005:003
Bus 005 Device 003: ID 046d:c043 Logitech, Inc. MX320/MX400 Laser Mouse
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0         8
  idVendor           0x046d Logitech, Inc.
  idProduct          0xc043 MX320/MX400 Laser Mouse
  bcdDevice           27.10
  iManufacturer           1 Logitech
  iProduct                2 USB-PS/2 Optical Mouse
  iSerial                 0 
  bNumConfigurations      1
[weitere Informationen]
Device Status:     0x0000
  (Bus Powered)

Je nach abgefragtem Gerät variieren die angezeigten Informationen.

lsusb -v -s 004:002
[…]
  idVendor           0x046d Logitech, Inc.
  idProduct          0x08b2 QuickCam Pro 4000
[…]
    AudioControl Interface Descriptor:
      bLength                12
      bDescriptorType        36
      bDescriptorSubtype      2 (INPUT_TERMINAL)
      bTerminalID             1
      wTerminalType      0x0201 Microphone
      bAssocTerminal          0
      bNrChannels             1
      wChannelConfig     0x0000
      iChannelNames           0 
      iTerminal               0 
[…]

Die als zweites Gerät an Bus 004 angeschlossene Hardware verfügt also über ein Mikrofon, das per USB ansteuerbar ist. Wenn man die Hardware nicht kennt, kann man mittels der erweiterten Ausgabe Informationen über dessen Funktionen erlangen.

Zuordungs-Datei

Unter Arch befinden sich alle Informationen über die Product- und Vendor-IDs in der Datei /usr/share/hwdata/usb.ids. In dieser Datei werden nach einem recht einfachen Schema, welches im Kopfbereich der Datei erläutert wird, alle IDs aufgelistet. Änderungen an der Datei wirken sich auf die Ausgabe von lsusb aus.

lsusb -s 005:003
Bus 005 Device 003: ID 046d:c043 Logitech, Inc. blubb

Hier wurde der Produktnamen-String in der Datei auf „blubb“ geändert. Nach Wiederherstellung des Originalzustandes, zeigt lsusb das Gerät wieder richtig an.

lsusb -s 005:003
Bus 005 Device 003: ID 046d:c043 Logitech, Inc. MX320/MX400 Laser Mouse

Da die Produktnamen-Strings nur beschreibende Funktion haben hat eine Änderung des Strings keinen Einfluss auf die Funktionsweise des Gerätes. Allerdings wird der String überall angezeigt, sollte also das Gerät schon richtig beschreiben. Fehlerhafte Beschreibungen sollten dem Maintainer der Datei gemeldet werden.

Script usb-devices

Das Paket usbutils wird mit einem Script usb-devices ausgeliefert, welches Informationen über alle aktiven USB-Geräte in kompakter, leicht parsbarer Form anzeigt. Die Anzeige ist identisch des Inhaltes der Datei usb/devices innerhalb eines Mountpoints von usbfs, oder innerhalb eines Mountpoints von debugfs.

Anstatt einfach den Inhalt der Datei auszugeben, ermittelt usb-devices die Daten selbständig. Da weder usbfs, noch debugfs gemountet sein müssen, hat man mittels usb-devices neben lsusb eine einfache Möglichkeit, um an Informationen über USB-Geräte zu gelangen, ohne, dass man einen usbfs-, oder debugfs-Mountpoint anlegen muss.

Siehe auch

Weblinks