Linux USB device load identification exploration. SD card is connected with 16GB and 32GB cards respectively. It can be seen that there is a sequence (from small to large) when starting to scan the usb bus.
Hardware connection
Start printing
ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver before uhci_hcd and ohci_hcd, not after hiusb-ehci hiusb-ehci.0: HIUSB EHCI hiusb-ehci hiusb-ehci.0: new USB bus registered, assigned bus number 1 hiusb-ehci hiusb-ehci.0: irq 51, io mem 0x10040000 hiusb-ehci hiusb-ehci.0: USB 0.0 started, EHCI 1.00 hub 1-0:1.0: USB hub found hub 1-0:1.0: 2 ports detected ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver hiusb-ohci hiusb-ohci.0: HIUSB OHCI hiusb-ohci hiusb-ohci.0: new USB bus registered, assigned bus number 2 hiusb-ohci hiusb-ohci.0: irq 50, io mem 0x10030000 ata1: SATA link down (SStatus 0 SControl 300) hub 2-0:1.0: USB hub found hub 2-0:1.0: 2 ports detected usbcore: registered new interface driver usb-storage usbcore: registered new interface driver usbhid usbhid: USB HID core driver usb 1-2: new high-speed USB device number 2 using hiusb-ehci hub 1-2:1.0: USB hub found hub 1-2:1.0: 4 ports detected usb 1-2.2: new high-speed USB device number 3 using hiusb-ehci usb-storage 1-2.2:1.0: USB Mass Storage device detected scsi2 : usb-storage 1-2.2:1.0 usb 1-2.3: new high-speed USB device number 4 using hiusb-ehci usb-storage 1-2.3:1.0: USB Mass Storage device detected scsi3 : usb-storage 1-2.3:1.0 scsi 2:0:0:0: Direct-Access Generic MassStorageClass 2402 PQ: 0 ANSI: 6 sd 2:0:0:0: Attached scsi generic sg0 type 0 sd 2:0:0:0: [sda] 30253056 512-byte logical blocks: (15.4 GB/14.4 GiB) sd 2:0:0:0: [sda] Write Protect is off sd 2:0:0:0: [sda] Mode Sense: 21 00 00 00 sd 2:0:0:0: [sda] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA sda: sda1 sd 2:0:0:0: [sda] Attached SCSI removable disk scsi 3:0:0:0: Direct-Access Generic MassStorageClass 2402 PQ: 0 ANSI: 6 sd 3:0:0:0: Attached scsi generic sg1 type 0 sd 3:0:0:0: [sdb] 60456960 512-byte logical blocks: (30.9 GB/28.8 GiB) sd 3:0:0:0: [sdb] Write Protect is off sd 3:0:0:0: [sdb] Mode Sense: 21 00 00 00 sd 3:0:0:0: [sdb] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA sdb: sdb1 sd 3:0:0:0: [sdb] Attached SCSI removable disk
usb debugging information printing
mount -t debugfs none /sys/kernel/debug/
cat /sys/kernel/debug/usb/devices
T: Bus=02 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=12 MxCh= 2 B: Alloc= 0/900 us ( 0%), #Int= 0, #Iso= 0 D: Ver= 1.10 Cls=09(hub ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1 P: Vendor=1d6b ProdID=0001 Rev= 3.10 S: Manufacturer=Linux 3.10.0 ohci_hcd S: Product=HIUSB OHCI S: SerialNumber=hiusb-ohci C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr= 0mA I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub E: Ad=81(I) Atr=03(Int.) MxPS= 2 Ivl=255ms
It can be seen that the driver supports the hub of USB1.1 downward, and the OHCI protocol has two ports.
T: Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=480 MxCh= 2 B: Alloc= 0/800 us ( 0%), #Int= 1, #Iso= 0 D: Ver= 2.00 Cls=09(hub ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1 P: Vendor=1d6b ProdID=0002 Rev= 3.10 S: Manufacturer=Linux 3.10.0 ehci_hcd S: Product=HIUSB EHCI S: SerialNumber=hiusb-ehci C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr= 0mA I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub E: Ad=81(I) Atr=03(Int.) MxPS= 4 Ivl=256ms
Above is the driver supporting the USB 2.0 version of the hub, which uses the EHCI protocol and has two ports.
T: Bus=01 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#= 2 Spd=480 MxCh= 4 D: Ver= 2.00 Cls=09(hub ) Sub=00 Prot=02 MxPS=64 #Cfgs= 1 P: Vendor=05e3 ProdID=0610 Rev=32.98 S: Product=USB2.0 Hub C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=100mA I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=01 Driver=hub E: Ad=81(I) Atr=03(Int.) MxPS= 1 Ivl=256ms I:* If#= 0 Alt= 1 #EPs= 1 Cls=09(hub ) Sub=00 Prot=02 Driver=hub E: Ad=81(I) Atr=03(Int.) MxPS= 1 Ivl=256ms
It can be seen that the above is an external USB2.0 hub, which is connected to a USB port from the internal hub of the chip, with four ports.
T: Bus=01 Lev=02 Prnt=02 Port=01 Cnt=01 Dev#= 3 Spd=480 MxCh= 0 D: Ver= 2.01 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1 P: Vendor=05e3 ProdID=0761 Rev=24.02 S: Product=USB Storage S: SerialNumber=000000002402 C:* #Ifs= 1 Cfg#= 1 Atr=a0 MxPwr=500mA I:* If#= 0 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage E: Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms E: Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms T: Bus=01 Lev=02 Prnt=02 Port=02 Cnt=02 Dev#= 4 Spd=480 MxCh= 0 D: Ver= 2.01 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1 P: Vendor=05e3 ProdID=0761 Rev=24.02 S: Product=USB Storage S: SerialNumber=000000002402 C:* #Ifs= 1 Cfg#= 1 Atr=a0 MxPwr=500mA I:* If#= 0 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage E: Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms E: Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
It can be seen that there are two USB2.0 ports above.
~ # lsusb Bus 001 Device 002: ID 05e3:0610 Bus 001 Device 001: ID 1d6b:0002 Bus 002 Device 001: ID 1d6b:0001 Bus 001 Device 003: ID 05e3:0761 Bus 001 Device 004: ID 05e3:0761
What do you think of the information above? How does it correspond?