我有一个运行Linux3.0.35内核的variscite var-som-mx6,有两个USB端口。第一个端口是连接到外部小型OTG插孔的OTG端口。第二个是连接到集线器芯片的内部主机端口,然后连接到其他一些设备。
如果我把一根otg电缆插入第一个端口,告诉它是一个主机,那么一切正常。如果我插入了普通电缆,或者根本没有电缆,则第二个主机端口无法正确枚举。在电缆的另一端不必有任何东西,所以这是一个只与otg是试图成为主机还是设备相关的bug。
例如,如果我插入一根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都关闭了由主机vbu或otg vbu(以较高者为准)的+5v供电的内部调节器。设计者认为这些是电压感应输入,并通过一个10K电阻驱动主机的5伏VBU。所以当otg端口没有连接的时候,它就用完了。把10千欧姆改成0欧姆就好了。
关于linux - Linux OTG端口搞砸了我的其他主机端口,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38319062/