我有一个嵌入式linuxUSB主机它拒绝检测我的一些 USB 设备。主机运行Ubutun 20.04LTS
检测失败期间 dmesg 中不会显示任何内容,之后 USB 端口将无法用于任何 USB 设备,直到主机重新启动。
主机检测到一些设备,包括大容量存储设备和网络摄像头(具有图像和音频接口)。失败的设备包括 Zoom H1n 录音机、USB 转串口适配器电缆和这个设备。我的 Windows 笔记本电脑、Ubuntu 台式机和 Windows 笔记本电脑均成功检测到所有失败的设备另一个运行 Debian 的基于 sama5d27 的嵌入式 Linux SBC。
据我了解,这不是缺少内核模块的问题,因为仍应在 dmesg 中报告无法识别/不受支持的设备。
我安装了 usbmon 并在连接一台设备时捕获了此跟踪。这是一个 pcap 表示。
c24a4900 803906549 S Ci:1:001:0 s a3 00 0000 0001 0004 4 <
c24a4900 803906679 C Ci:1:001:0 0 4 = 00010000
c24a4900 803906728 S Ci:1:001:0 s a3 00 0000 0002 0004 4 <
c24a4900 803906760 C Ci:1:001:0 0 4 = 01050100
c24a4900 803906792 S Co:1:001:0 s 23 01 0010 0002 0000 0
c24a4900 803906822 C Co:1:001:0 0 0
c24a4900 803906849 S Ci:1:001:0 s a3 00 0000 0003 0004 4 <
c24a4900 803906874 C Ci:1:001:0 0 4 = 00010000
c1e14580 804020108 S Ii:1:001:1 -115:2048 4 <
c24a4900 804020218 S Ci:1:001:0 s a3 00 0000 0002 0004 4 <
c24a4900 804020293 C Ci:1:001:0 0 4 = 01050000
c24a4900 804020409 S Co:1:001:0 s 23 03 0004 0002 0000 0
c24a4900 804020472 C Co:1:001:0 0 0
c24a4400 804100105 S Ci:1:001:0 s a3 00 0000 0002 0004 4 <
c1e14580 804100183 C Ii:1:001:1 0:2048 1 = 04
c1e14580 804100209 S Ii:1:001:1 -115:2048 4 <
c24a4400 804100749 C Ci:1:001:0 0 4 = 01051000
c24a4400 804100826 S Co:1:001:0 s 23 03 0004 0002 0000 0
c24a4400 804100875 C Co:1:001:0 0 0
c24a4400 804320164 S Ci:1:001:0 s a3 00 0000 0002 0004 4 <
c24a4400 804320239 C Ci:1:001:0 0 4 = 00010100
c24a4400 804540102 S Ci:1:001:0 s a3 00 0000 0002 0004 4 <
c24a4400 804540175 C Ci:1:001:0 0 4 = 00010100
c24a4400 804760112 S Ci:1:001:0 s a3 00 0000 0002 0004 4 <
c24a4400 804760185 C Ci:1:001:0 0 4 = 00010100
c24a4400 804980144 S Ci:1:001:0 s a3 00 0000 0002 0004 4 <
c24a4400 804980220 C Ci:1:001:0 0 4 = 00010100
c24a4400 804980262 S Co:1:001:0 s 23 01 0014 0002 0000 0
c24a4400 804980294 C Co:1:001:0 0 0
c24a4400 804980329 S Co:1:001:0 s 23 01 0001 0002 0000 0
c24a4400 804980359 C Co:1:001:0 0 0
c24a4400 804980413 S Co:1:001:0 s 23 01 0001 0002 0000 0
c24a4400 804980447 C Co:1:001:0 0 0
c24a4400 804980517 S Ci:1:001:0 s a3 00 0000 0002 0004 4 <
c24a4400 804980556 C Ci:1:001:0 0 4 = 00010100
c24a4400 804980586 S Co:1:001:0 s 23 01 0010 0002 0000 0
c24a4400 804980616 C Co:1:001:0 0 0
c24a4400 804980648 S Ci:1:001:0 s a3 00 0000 0002 0004 4 <
c24a4400 804980678 C Ci:1:001:0 0 4 = 00010000
c24a4400 805030147 S Ci:1:001:0 s a3 00 0000 0002 0004 4 <
c24a4400 805030221 C Ci:1:001:0 0 4 = 00010000
c24a4400 805080107 S Ci:1:001:0 s a3 00 0000 0002 0004 4 <
c24a4400 805080176 C Ci:1:001:0 0 4 = 00010000
c24a4400 805130098 S Ci:1:001:0 s a3 00 0000 0002 0004 4 <
c24a4400 805130167 C Ci:1:001:0 0 4 = 00010000
c24a4400 805180127 S Ci:1:001:0 s a3 00 0000 0002 0004 4 <
c24a4400 805180195 C Ci:1:001:0 0 4 = 00010000
c1e14580 805180329 C Ii:1:001:1 -2:2048 0
最后一行表示错误状态 -2 ENOENT,这意味着“指定的接口或端点不存在或未启用”,这是由设备发送到主机的。这是什么意思?
为什么主机无法检测到该设备?
答案1
事实证明,这是因为制造商提供的设备树包含 EHCI 但不包含 OHCI。因此,仅检测到高速 USB 设备,而不是全速设备。