找回密码
 立即注册
搜索
热搜: 星闪 最新 活动
查看: 322|回复: 0

[Hi3751v352] HDMI USB dongle不支持热插拔问题及解决

[复制链接]

20

主题

0

回帖

180

积分

超级版主

积分
180
发表于 2025-9-29 18:01:26 | 显示全部楼层 |阅读模式
本帖最后由 xusheng 于 2025-9-29 18:18 编辑

【运行环境】:
硬件:Hi3751v352 + HDMI USB Dongle
软件:Android 9 SDK

【问题描述】:
1. 不打开audio capture, 只打开video capute,可以热插拔;
2. 同时打开video 和audio capture,热插拔失效。应用软件无法正常工作。

【问题分析】:
1. 在不启用客户Capture应用程序的情况下,Dongle设备插入和拔除,设备节点是正常增加和删除


插入Dongle设备后,dmesg提示:
usb 1-3: new high-speed USB device number 3 using ehci-platform
uvcvideo: Found UVC 1.00 device USB Video (534d:2109)
hid-generic 0003:534D:2109.0002: hidraw0: USB HID v1.10 Device [MACROSILICON USB Video] on usb-f9890000.ehci-3/input4

拔出Dongle设备后,dmesg提示:
usb 1-3: USB disconnect, device number 2

2. 启用客户Capture应用程序后
插入Dongle设备后,dmesg提示:
usb 1-3: new high-speed USB device number 4 using ehci-platform
uvcvideo: Found UVC 1.00 device USB Video (534d:2109)
hid-generic 0003:534D:2109.0003: hidraw0: USB HID v1.10 Device [MACROSILICON USB Video] on usb-f9890000.ehci-3/input4

拔出Dongle设备后,dmesg提示:
usb 1-3: cannot submit urb 0, error -19: no device
usb 1-3: cannot submit urb 0, error -19: no device
usb 1-3: cannot submit urb 0, error -19: no device
而且设备节点没有自动删除
# lsusb -l
Bus 001 Device 001: ID 1d6b:0002
Bus 001 Device 003: ID 534d:2109
Bus 002 Device 001: ID 1d6b:0001
手动强制退出客户应用后,该设备节点才会自动删除
# lsusb -l
Bus 001 Device 001: ID 1d6b:0002
Bus 002 Device 001: ID 1d6b:0001

3. 没有运行客户程序时,拔出该USB设备,中断次数会加1
运行客户程序后,拔出该USB设备,中断次数会持续增加

4. 分析结论:USB设备拔出时,由于客户应用程序一直尝试从相关设备节点读取数据,导致相关节点无法销毁,与内核usb驱动存在关联

【解决方案】
方案1:修改应用程序,在无法获取到有效数据时、主动关闭对相关设备的读取操作,并周期性判断相关设备节点是否存在。
结论:因为android 9 环境下设备节点销毁异常,无法通过常规判断节点是否还存在的方式处理。

方案2:升级到Android 12 版本,内核同步升级为5.1
结论:已在352 DEMO板上验证,Dongle 多次插入及拔出,相关设备节点的创建和销毁正常,客户Capture应用工作正常。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|【淇诺科技】技术论坛 ( 粤ICP备14010465号-1|粤ICP备14010465号-1 )

GMT+8, 2026-4-2 15:47 , Processed in 0.122394 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表