我有一台运行Linux 3.0.35内核的Variscite VAR-SOM-MX6,带有两个USB端口。第一个端口是连接到外部mini-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,无论端口是主机还是设备,而其他代码只查看实际主机端口,并在内部混淆端口号。有没有人见过这个bug?谷歌搜索没有任何改变。或者是否有一个更专业的论坛,我应该发布这个问题?
答案 0 :(得分:1)
如果有人对此感兴趣,那么这就是硬件设计问题。两个USB PHY均由内部稳压器供电,该稳压器由主机VBUS或OTG VBUS的+ 5V供电,以较高者为准。设计人员认为这些是电压感应输入,并通过10K电阻将主机VBUS驱动为5V。因此,当OTG端口没有连接时,它就会用完便便。将10K改为0欧姆可以修复它。