我有一个运行Linux 3.0.35内核的Variscite VAR-SOM-MX6,有两个USB端口。第一个端口是连接到外部迷你 OTG 插孔的 OTG 端口。第二个是内部主机端口,然后连接到集线器芯片,然后连接到其他一些设备。如果我将 OTG 电缆插入第一个端口,告诉它是主机,那么一切正常。如果我插入了一根普通电缆,或者根本没有插入电缆,则第二个主机端口无法正确枚举。电缆的另一端不必有任何内容,因此这是一个仅与OTG是尝试成为主机还是设备相关的错误。例如,如果我插入 OTG 电缆并重新启动,内核日志包含以下行。
usb 2-1: new high speed USB device number 2 using fsl-ehci
usb 2-1: New USB device found, idVendor=0424, idProduct=2534
usb 2-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
hub 2-1:1.0: USB hub found
hub 2-1:1.0: 4 ports detected
usb 2-1.1: new high speed USB device number 3 using fsl-ehci
usb 2-1.1: New USB device found, idVendor=0424, idProduct=9e00
usb 2-1.1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
usb 2-1.2: new high speed USB device number 4 using fsl-ehci
usb 2-1.2: New USB device found, idVendor=0403, idProduct=6011
usb 2-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
usb 2-1.2: Product: Quad RS232-HS
usb 2-1.2: Manufacturer: FTDI
如果我然后从端口 1 拉动 OTG 电缆,它会断开端口 2 上的所有连接:
usb 2-1: USB disconnect, device number 2
usb 2-1.1: USB disconnect, device number 3
usb 2-1.2: USB disconnect, device number 4
然后尝试重新枚举所有内容,但惨遭失败:
usb 2-1: new high speed USB device number 5 using fsl-ehci
usb 2-1: new high speed USB device number 6 using fsl-ehci
usb 2-1: new high speed USB device number 7 using fsl-ehci
usb 2-1: device not accepting address 7, error -71
usb 2-1: new high speed USB device number 8 using fsl-ehci
usb 2-1: device not accepting address 8, error -71
hub 2-0:1.0: unable to enumerate USB device on port 1
我怀疑某些代码正在使用物理端口号 1 和 2,无论端口是主机还是设备,而其他代码只查看实际的主机端口,并在内部混淆端口号。以前有人见过这个错误吗?谷歌搜索没有发现任何东西。还是有更专业的论坛,我应该发布这个问题?
如果有人感兴趣,这被证明是一个硬件设计问题。两个 USB PHY 均由主机 VBUS 或 OTG VBUS 的 +5V 电压(以较高者为准)的内部稳压器供电。设计人员认为这些是电压检测输入,并通过一个10K电阻以5V驱动主机VBUS。因此,当 OTG 端口未连接时,它用完了便便。将 10K 更改为 0 欧姆修复了它。