欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

RK3288】【安卓-5.1USB HUB 低概率断开和重新连接

最编程 2024-03-23 13:44:52
...

底板的USB拓扑结构如下图:

现象1

问题是以太网和camera(都是usb接口)同时用不了了,低概率发生。
看内核日志发现hub断开又连上,而且是隔段时间之后又断开又连上了,如此反复。
具体问题log如下:
<3>[104107.454754] hub 1-1.4:1.0: cannot reset port 3 (err = -71)
<3>[104107.458923] hub 1-1.4:1.0: cannot reset port 3 (err = -71)
<3>[104107.458934] hub 1-1.4:1.0: Cannot enable port 3. Maybe the USB cable is bad?
<3>[104107.463115] hub 1-1.4:1.0: cannot disable port 3 (err = -71)
<3>[104107.463129] hub 1-1.4:1.0: unable to enumerate USB device on port 3
<3>[104107.467296] hub 1-1.4:1.0: cannot disable port 3 (err = -71)
<3>[104107.467323] hub 1-0:1.0: port 1 disabled by hub (EMI?), re-enabling...
<6>[104107.467339] usb 1-1: USB disconnect, device number 16
<6>[104107.467349] usb 1-1.1: USB disconnect, device number 17
<6>[104107.469353] usb 1-1.2: USB disconnect, device number 18
<3>[104107.471403] scsi 8:0:0:0: rejecting I/O to offline device
<6>[104107.471419] scsi 8:0:0:0: [sdb] killing request
<6>[104107.471449] scsi 8:0:0:0: [sdb] Unhandled error code
<6>[104107.471458] scsi 8:0:0:0: [sdb] 
<4>[104107.471467] Result: hostbyte=DID_NO_CONNECT driverbyte=DRIVER_OK
<6>[104107.471475] scsi 8:0:0:0: [sdb] CDB: 
<4>[104107.471482] Read(10): 28 00 00 00 00 00 00 00 08 00
<3>[104107.471506] end_request: I/O error, dev sdb, sector 0
<6>[104107.473646] usb 1-1.3: USB disconnect, device number 19
<6>[104107.476054] eth0: unregister 'asix' usb-ff500000.usb-1.3, ASIX AX88772C USB 2.0 Ethernet
<6>[104107.561476] usb 1-1.4: USB disconnect, device number 20
<6>[104107.836467] usb 1-1: new high-speed USB device number 34 using rockchip_ehci_host
<6>[104107.986232] usb 1-1: New USB device found, idVendor=05e3, idProduct=0610
<6>[104107.986366] usb 1-1: New USB device strings: Mfr=0, Product=1, SerialNumber=0
<6>[104107.986527] usb 1-1: Product: USB2.0 Hub
<6>[104107.991104] hub 1-1:1.0: USB hub found
<6>[104107.991753] hub 1-1:1.0: 4 ports detected
<6>[104108.269821] usb 1-1.1: new full-speed USB device number 35 using rockchip_ehci_host
<6>[104108.380957] usb 1-1.1: New USB device found, idVendor=2309, idProduct=0706
<6>[104108.381059] usb 1-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
<6>[104108.381117] usb 1-1.1: Product: HSIC USBKey
<6>[104108.381163] usb 1-1.1: Manufacturer: HongSi-IC
<6>[104108.384702] usb-storage 1-1.1:1.0: USB Mass Storage device detected
<6>[104108.385579] scsi9 : usb-storage 1-1.1:1.0
<6>[104108.466492] usb 1-1.2: new full-speed USB device number 36 using rockchip_ehci_host
<6>[104108.577730] usb 1-1.2: New USB device found, idVendor=0483, idProduct=5720
<6>[104108.577835] usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
<6>[104108.577896] usb 1-1.2: Product: Mass Storage in FS Mode
<6>[104108.577945] usb 1-1.2: Manufacturer: ZKTeco
<6>[104108.578056] usb 1-1.2: SerialNumber: 204E39695852
<6>[104108.582166] usb-storage 1-1.2:1.0: USB Mass Storage device detected
<6>[104108.584304] scsi10 : usb-storage 1-1.2:1.0
<6>[104108.663141] usb 1-1.3: new high-speed USB device number 37 using rockchip_ehci_host
<6>[104108.784915] usb 1-1.3: New USB device found, idVendor=0b95, idProduct=772b
<6>[104108.785015] usb 1-1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
<6>[104108.785071] usb 1-1.3: Product: AX88772C
<6>[104108.785119] usb 1-1.3: Manufacturer: ASIX Elec. Corp.
<6>[104108.785164] usb 1-1.3: SerialNumber: 110F15
<6>[104108.790126] ASIX USB Ethernet Adapter:v4.22.101 http://www.asix.com.tw

最开始有怀疑会不会是hub的5V供电不稳定,但是主控otg那一路也挂了一颗同样的hub,
而且也是同一个网络的5V电源,但是log上并没有发现这一路的hub有断开的情况。

原因分析:

报的都是硬件的错误,跟供电/走线都有关,先检查硬件。

“跟供电/走线都有关”。
飞线之类的做些交叉实验等。

离cup端最近的地方割线、飞线usb座子,外接hub验证。

现象2

客户同时还反应:

同样的是这个核心板,不同的是客户底板,客户反馈说USB设备接上以后反复断开并重连。USB设备是客户研发的掌静脉USB采集设备,idVendor=1b55, idProduct=0700。
这个底板在HOST1下同样挂了一颗HUB,不同的是HUB下接的设备和之前的底板不一样,而这个反复断开又重连的设备刚好挂在这颗HUB下面。

具体log如下:
<6>[22546.982618] usb 1-1.1: USB disconnect, device number 36
<6>[22548.977228] usb 1-1.1: new high-speed USB device number 37 using rockchip_ehci_host
<6>[22549.086909] usb 1-1.1: New USB device found, idVendor=1b55, idProduct=0700
<6>[22549.087091] usb 1-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
<6>[22549.087149] usb 1-1.1: Product: PAR200
<6>[22549.087232] usb 1-1.1: Manufacturer: ZKTeco.Inc
<6>[22549.087278] usb 1-1.1: SerialNumber: 0000
<6>[22554.287747] usb 1-1.1: USB disconnect, device number 37
<6>[22556.288246] usb 1-1.1: new high-speed USB device number 38 using rockchip_ehci_host
<6>[22556.397978] usb 1-1.1: New USB device found, idVendor=1b55, idProduct=0700
<6>[22556.398110] usb 1-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
<6>[22556.398191] usb 1-1.1: Product: PAR200
<6>[22556.398238] usb 1-1.1: Manufacturer: ZKTeco.Inc
<6>[22556.398308] usb 1-1.1: SerialNumber: 0000
断开连接从log看间隔非常短。

同时客户抓出来的log还报了很多:
<4>[ 218.625121] usb 1-1.1: usbfs: process 1616 (Thread-195) did not claim interface 0 before use

客户同时还反馈问题不是必现,是突然发现了这个问题,也是低概率。

原因分析:

这种只有设备掉了,hub没掉,检查hub和设备之间的硬件。

底层已经有个驱动跟这个设备绑定了,现在上层要接管这个设备,
代码要先控制将设备跟底层驱动解绑,然后自己绑定上。
did not claim interface 0 before use:这种log的意思就是上层没有将底层驱动解绑就想去控制设备。

客户的APP需要优化!