USB是不是不支持热插拔
-
USB是不是不支持热插拔。发现如果先供电,再插入USB,会自动断开USB。如何配置热插拔呢?
您好,USB HOST模式是支持热拔插的,前提是供电需要稳定,不然接入USB设备时可能会因为工作电压不稳定重启,实测Ultra系列使用POE供电是可以热拔插USB-A口的,其他型号设计时没有为热拔插作设计,如果接入负载大的设备可能也会导致重启。
如果USB运行在peripheral模式在第一次usb连接时申请相关资源但是不对断开作处理,第二次连接时由于第一次连接申请的资源申请没有释放所以无法进行后续操作。作为peripheral 设备时无论是用作调试还是模拟UMS设备或者RNDIS设备都没有热拔插的需求,所以android_work的内核实现和相关的配置脚本都不做热拔插支持。
如果USB运行在peripheral模式在第一次usb连接时申请相关资源但是不对断开作处理,第二次连接时由于第一次连接申请的资源申请没有释放所以无法进行后续操作。作为peripheral 设备时无论是用作调试还是模拟UMS设备或者RNDIS设备都没有热拔插的需求,所以android_work的内核实现和相关的配置脚本都不做热拔插支持。
可能不是热插拔问题,有这么个现象“
1. 板子通电后启动,然后插入USB,发现也是不识别
2. 断电后,保持USB插入后重启,识别。
3. 2情况下拔掉USB,再插入,打印下面的消息,发现自动断开了。
#
# [ 1124.228141] dwc3 ffb00000.usb: device disconnect
[ 1124.230035] android_work: sent uevent USB_STATE=DISCONNECTED ----这里拔掉USB
[ 1127.591923] dwc3 ffb00000.usb: device reset
[ 1127.923996] dwc3 ffb00000.usb: device reset
[ 1127.989854] android_work: sent uevent USB_STATE=CONNECTED ----这里插入USB
[ 1127.996405] android_work: sent uevent USB_STATE=CONFIGURED
[ 1127.999403] read descriptors
[ 1127.999432] read strings
[ 1127.999862] android_work: sent uevent USB_STATE=DISCONNECTED ----发现会自动断开
1. 板子通电后启动,然后插入USB,发现也是不识别
2. 断电后,保持USB插入后重启,识别。
3. 2情况下拔掉USB,再插入,打印下面的消息,发现自动断开了。
#
# [ 1124.228141] dwc3 ffb00000.usb: device disconnect
[ 1124.230035] android_work: sent uevent USB_STATE=DISCONNECTED ----这里拔掉USB
[ 1127.591923] dwc3 ffb00000.usb: device reset
[ 1127.923996] dwc3 ffb00000.usb: device reset
[ 1127.989854] android_work: sent uevent USB_STATE=CONNECTED ----这里插入USB
[ 1127.996405] android_work: sent uevent USB_STATE=CONFIGURED
[ 1127.999403] read descriptors
[ 1127.999432] read strings
[ 1127.999862] android_work: sent uevent USB_STATE=DISCONNECTED ----发现会自动断开
Last edited by xlh145 on 2024-09-30 4:00, edited 1 time in total.
如果您使用的是peripheral模式的话请参考我上一个回答,拔掉USB再插入属于第二次连接了,通电后插入/etc/init.d/S50usbdevice 已经执行过了资源分配了,都不能成功,直接让luckfox-pico作为设备接入PC并经过启动脚本运行后才能识别,如果需要在peripheral下实现热插拔可以自行研究一下UDC-core 相关的内核选项,我们没有在这部分做过相关测试