USB sous Linux

De system.co.free.fr.

retour vers Linux


Sommaire

documentation

http://www.linux-usb.org/

lsusb

/usr/bin/lsusb
paquet:usbutils

cette commande permet d'afficher des informations relatives aux bus USB du système et aux périphériques qui y sont connectés.
voir man lsusb

Exemple 1: liste de tout les périphériques usb, contrôleur usb compris

 lsusb
 Bus 001 Device 002: ID 1b1c:1a03 Corsair 
 Bus 002 Device 002: ID 046d:0994 Logitech, Inc. QuickCam Orbit/Sphere AF
 Bus 002 Device 004: ID 0bb4:0ff9 HTC (High Tech Computer Corp.) Desire / Desire HD / Hero (Charge Mode)
 Bus 008 Device 002: ID 046d:c505 Logitech, Inc. Cordless Mouse+Keyboard Receiver
 Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
 Bus 002 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 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

Pour avoir le détail sur un périphérique particulier, passer en root.
Et, par exemple,pour le detail de la QuickCam Sphere de la 2eme ligne:
-v pour le detail
-d avec l'identifiant vendeur suivi de ":" et de l'identifiant de périphérique. ( a la suite d' ID de la commande simple lsusb)

 sudo lsusb -v -d 046d:0994
 Bus 002 Device 002: ID 046d:0994 Logitech, Inc. QuickCam Orbit/Sphere AF
 Device Descriptor:
   bLength                18
   bDescriptorType         1
   bcdUSB               2.00
   bDeviceClass          239 Miscellaneous Device
   bDeviceSubClass         2 ?
   bDeviceProtocol         1 Interface Association
   bMaxPacketSize0        64
   idVendor           0x046d Logitech, Inc.
   idProduct          0x0994 QuickCam Orbit/Sphere AF
   bcdDevice            0.08
 
   [... Il y a plus de 916 ligne, je vous les passe]
 
   bDeviceClass          239 Miscellaneous Device
   bDeviceSubClass         2 ?
   bDeviceProtocol         1 Interface Association
   bMaxPacketSize0        64
   bNumConfigurations      1
 Device Status:     0x0000
 (Bus Powered)
   



Exemple 2: liste de tout les périphériques d'un constructeur

Avec l'option -d vous pouvez lister tout les périphérique d'un constructeur, ou l'inverse, tout les constructeurs d'un périphérique. Ici, la liste des périphériques de chez logitech (on sait par lsusb que l'idendentifiant du constructeur est le premier nombre après ID du résultat de la commande lsusb):

 lsusb -d 046d:
 Bus 002 Device 002: ID 046d:0994 Logitech, Inc. QuickCam Orbit/Sphere AF
 Bus 008 Device 002: ID 046d:c505 Logitech, Inc. Cordless Mouse+Keyboard Receiver



Exemple 3: connaître le pilote associé a un périphérique usb

Avec l'option -t nous allons afficher l'arborescence hiérarchique des périphériques connectés (ports usb, périphérique(s) connecté a ce port, vitesse max de transmission, classes des périphériques et pilotes associés aux périphériques). Option -t n'est pas compatible avec les autres options et les annule.

 lsusb -t 
/:  Bus 08.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
   |__ Port 1: Dev 2, If 0, Class=HID, Driver=usbhid, 1.5M
    |__ Port 1: Dev 2, If 1, Class=HID, Driver=usbhid, 1.5M
/:  Bus 07.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
/:  Bus 06.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
/:  Bus 05.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
/:  Bus 04.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
/:  Bus 03.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=ehci_hcd/6p, 480M
    |__ Port 4: Dev 2, If 0, Class='bInterfaceClass 0x0e not yet handled', Driver=uvcvideo, 480M
    |__ Port 4: Dev 2, If 1, Class='bInterfaceClass 0x0e not yet handled', Driver=uvcvideo, 480M
    |__ Port 4: Dev 2, If 2, Class=audio, Driver=snd-usb-audio, 480M
    |__ Port 4: Dev 2, If 3, Class=audio, Driver=snd-usb-audio, 480M
    |__ Port 6: Dev 4, If 0, Class=stor., Driver=usb-storage, 480M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci_hcd/6p, 480M

On voit ici rattaché au bus 02 le port 4 et le port 6. Ce sont 2 périphériques différents. Isolons le port 4:

 lsusb -t | grep "Port 4"
    |__ Port 4: Dev 2, If 0, Class='bInterfaceClass 0x0e not yet handled', Driver=uvcvideo, 480M
    |__ Port 4: Dev 2, If 1, Class='bInterfaceClass 0x0e not yet handled', Driver=uvcvideo, 480M
    |__ Port 4: Dev 2, If 2, Class=audio, Driver=snd-usb-audio, 480M
    |__ Port 4: Dev 2, If 3, Class=audio, Driver=snd-usb-audio, 480M

Tout cela correspond au périphérique "Logitech, Inc. QuickCam Orbit/Sphere AF". Et on voit 2 Drivers differents: uvcvideo et snd-usb-audio
soit la video webcam et le son.

Fichier listant le nom des peripheriques USB pour leurs identifications

Fichier contenant la correspondance entre id d'entreprise=nom d'entreprise et id de peripherique=nom de periphérique (les nom de la dernière colonne que vous renvoi lsusb)
/usr/share/misc/usb.ids
paquet:usbutils

La liste de tous les identifiants constructeurs et peripheriques connus (vendeurs, produits, classes, sous-classes et protocoles) par votre systèmes.

/usr/share/kde4/apps/kcmusb/usb.ids
paquet:kinfocenter

le même fichier que précédemment. Attention cependant, il n'est pas nécessairement de la même version. Il est utilisé pour identifier les périphériques par kinfocenter.

/var/lib/misc/usb.ids

encore le même fichier.

La dernière version peut être trouvé sur http://www.linux-usb.org/usb.ids

Mettre a jour son fichier /usr/share/misc/usb.ids

Ancienne version de kubuntu

/usr/sbin/update-usbids.sh
paquet:usbutils
met a jour le fichier /usr/share/misc/usb.ids a partir de la page http://www.linux-usb.org/usb.ids

/proc/bus/usb

Une interface vers les périphériques USB fournie par les noyaux Linux postérieurs à la version 2.3.15. Elle contient un sous-répertoire par bus qui contient un fichier par périphérique et un fichier devices qui contient certains descripteurs pour chaque périphérique USB. Cette interface est également prise en charge par certains noyaux Linux 2.2.

Version recente de Kubuntu

/usr/sbin/update-usbids
paquet:usbutils

met a jour le fichier /usr/share/misc/usb.ids a partir de la page http://www.linux-usb.org/usb.ids


Déterminer le nom et type de son contrôleur USB, coté Carte Mère

Commande lspci

la commande est lspci | grep -i usb. Sur ma carte mère AsRock X79 Extrême 11 cela donne:

lspci | grep -i usb
00:1a.0 USB controller: Intel Corporation C600/X79 series chipset USB2 Enhanced Host Controller #2 (rev 06)
00:1d.0 USB controller: Intel Corporation C600/X79 series chipset USB2 Enhanced Host Controller #1 (rev 06)
14:00.0 USB controller: Texas Instruments TUSB73x0 SuperSpeed USB 3.0 xHCI Host Controller (rev 02)
15:00.0 USB controller: Texas Instruments TUSB73x0 SuperSpeed USB 3.0 xHCI Host Controller (rev 02)


J'ai donc 2 types de controleurs:

  • USB2: intel X79/C600 ( sur le chipset Intel X79 comme me l'indique google )
  • USB3: Texas Instrument TUSB73x0 SuperSpeed

Pour avoir plus de détail

Je note les premier caractères correspondant ici au bus:slot.fonction soit 00:1a.0 et 00:1d.0 pour l'usb2 et 14:00.0 et 15:00.0 pour l'usb3. Pour avoir plus d'info je regarde le man lspci:

  • Pour connaître le pilote linux utilisé:
lspci -ks 14:00.0
14:00.0 USB controller: Texas Instruments TUSB73x0 SuperSpeed USB 3.0 xHCI Host Controller (rev 02)
        Subsystem: ASRock Incorporation Device 8241
        Kernel driver in use: xhci_hcd
Ici, clairement indiqué nous avons xhci_hcd
  • Pour avoir encore plus d'info (nécessite les droits root ):
sudo lspci -vs 14:00.0
14:00.0 USB controller: Texas Instruments TUSB73x0 SuperSpeed USB 3.0 xHCI Host Controller (rev 02) (prog-if 30 [XHCI])
        Subsystem: ASRock Incorporation Device 8241
        Flags: bus master, fast devsel, latency 0, IRQ 18
        Memory at fbb00000 (64-bit, non-prefetchable) [size=64K]
        Memory at fbb10000 (64-bit, non-prefetchable) [size=8K]
        Capabilities: [40] Power Management version 3
        Capabilities: [48] MSI: Enable- Count=1/8 Maskable- 64bit+
        Capabilities: [70] Express Endpoint, MSI 00
        Capabilities: [c0] MSI-X: Enable+ Count=8 Masked-
        Capabilities: [100] Advanced Error Reporting
        Capabilities: [150] Device Serial Number 08-00-28-00-00-20-00-00
        Kernel driver in use: xhci_hcd
  • Pour avoir encore, encore, encore plus d'info (nécessite les droits root ):
     sudo lspci -vvvs 14:00.0 
    

14:00.0 USB controller: Texas Instruments TUSB73x0 SuperSpeed USB 3.0 xHCI Host Controller (rev 02) (prog-if 30 [XHCI])

       Subsystem: ASRock Incorporation Device 8241
       Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
       Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
       Latency: 0, Cache Line Size: 64 bytes
       Interrupt: pin A routed to IRQ 18
       Region 0: Memory at fbb00000 (64-bit, non-prefetchable) [size=64K]
       Region 2: Memory at fbb10000 (64-bit, non-prefetchable) [size=8K]
       Capabilities: [40] Power Management version 3
               Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=100mA PME(D0+,D1+,D2+,D3hot+,D3cold+)
               Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
       Capabilities: [48] MSI: Enable- Count=1/8 Maskable- 64bit+
               Address: 0000000000000000  Data: 0000
       Capabilities: [70] Express (v2) Endpoint, MSI 00
               DevCap: MaxPayload 1024 bytes, PhantFunc 0, Latency L0s unlimited, L1 unlimited
                       ExtTag- AttnBtn- AttnInd- PwrInd- RBE+ FLReset-
               DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
                       RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
                       MaxPayload 128 bytes, MaxReadReq 512 bytes
               DevSta: CorrErr+ UncorrErr- FatalErr- UnsuppReq+ AuxPwr+ TransPend-
               LnkCap: Port #0, Speed 5GT/s, Width x1, ASPM L0s L1, Exit Latency L0s <512ns, L1 <64us
                       ClockPM+ Surprise- LLActRep- BwNot-
               LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- CommClk+
                       ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
               LnkSta: Speed 5GT/s, Width x1, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
               DevCap2: Completion Timeout: Not Supported, TimeoutDis+, LTR-, OBFF Not Supported
               DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR-, OBFF Disabled
               LnkCtl2: Target Link Speed: 5GT/s, EnterCompliance- SpeedDis-
                        Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
                        Compliance De-emphasis: -6dB
               LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete-, EqualizationPhase1-
                        EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
       Capabilities: [c0] MSI-X: Enable+ Count=8 Masked-
               Vector table: BAR=2 offset=00000000
               PBA: BAR=2 offset=00001000
       Capabilities: [100 v2] Advanced Error Reporting
               UESta:  DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
               UEMsk:  DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
               UESvrt: DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
               CESta:  RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr+
               CEMsk:  RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr+
               AERCap: First Error Pointer: 00, GenCap+ CGenEn- ChkCap+ ChkEn-
       Capabilities: [150 v1] Device Serial Number 08-00-28-00-00-20-00-00
       Kernel driver in use: xhci_hcd




Pour developpez sur usb:libusb



Outils personnels