usbview 是一个可以查看usb 拓扑的工具,可以通过这个工具查看当前USB Host控制器的个数和连接device信息.
UBUNTU系统上安装usbview:
我用的小米笔记本,可以看到,有两个HOST,一个是480Mb的 USB2.0另一个是10 Gbps的USB3.2,3.2支持10G BPS。这和配置相符.
设备的描述符信息展示:
这是另外一台PC的USB 控制器配置,它也有两个USB 主机控制器,分别是2.0,3.0
同一个接口,插入USB3.0和2.0设备时表现:
3.0 PSSD:
2.0TF卡
上面用的是PC上支持USB3.0的接口,现在用usb2.0的接口接3.0设备,发现接到了2.0的控制器上。
所以,看起来,3.0的接口可以兼容2.0的设备,方法是将接口路由到2.0 controller.也就是说,PC上,接口和主机控制器之间没有绑定关系,一个物理接口,可以根据链接设备的不同,被不同的host controller接管。
印证了USB3.0 下面的拓扑结构
上图中的PSSD设备支持两个接口,subclass 0x50 的 bulk msc和 subclass 0x62的,0x62是UAS设备,3.0支持的超速运行。
USB无线网卡的例子
型号为ax88179_178a无线网卡:
根据驱动名,找到驱动文件,注意这里的BUS, Address相当于lsusb输出中的Bus和Dev. lsusb中的 Port即是物理USB Port口,和Dev设备号是一一对应的。
使用modinfo命令,可以查看到此网卡依赖的模块,比如这里我们知道了,此网卡驱动依赖mii.ko, usbnet.ko两个模块文件。
$ modinfo ax88179_178a
filename: /lib/modules/5.4.0-131-generic/kernel/drivers/net/usb/ax88179_178a.ko
license: GPL
description: ASIX AX88179/178A based USB 3.0/2.0 Gigabit Ethernet Devices
srcversion: DB4426E16E22CE0222515D8
alias: usb:v050Dp0128d*dc*dsc*dp*ic*isc*ip*in*
alias: usb:v17EFp304Bd*dc*dsc*dp*ic*isc*ip*in*
alias: usb:v04E8pA100d*dc*dsc*dp*ic*isc*ip*in*
alias: usb:v0DF6p0072d*dc*dsc*dp*ic*isc*ip*in*
alias: usb:v2001p4A00d*dc*dsc*dp*ic*isc*ip*in*
alias: usb:v04B4p3610d*dc*dsc*dp*ic*isc*ip*in*
alias: usb:v0B95p178Ad*dc*dsc*dp*ic*isc*ip*in*
alias: usb:v0B95p1790d*dc*dsc*dp*ic*isc*ip*in*
depends: usbnet,mii
retpoline: Y
intree: Y
name: ax88179_178a
vermagic: 5.4.0-131-generic SMP mod_unload modversions
signat: PKCS#7
signer:
sig_key:
sig_hashalgo: md4