rk3588端使用UAC2 gadget设备只有第一次创建能被外部windows电脑枚举,卸载uac2 gadget再创建后无法再次被枚举(必现问题)

一秋 2024-06-28 16:44:36 编辑

硬件链接方式:
安卓端生成UAC2设备,通过otg线链接到外部windows电脑

开机后使用以下命令创建uac设备:

mkdir /config/usb_gadget/g1/functions/cvt_uac2.usb0

echo "none" > /config/usb_gadget/g1/UDC
echo UVC_UAC > /config/usb_gadget/g1/strings/0x409/product
echo "comm_audio_touch_ncm" > /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration

删除link的function
rm -rf /config/usb_gadget/g1/configs/b.1/f*
链接function
ln -s /config/usb_gadget/g1/functions/cvt_uac2.usb0 /config/usb_gadget/g1/configs/b.1/f2
使能udc
echo fc000000.usb > /config/usb_gadget/g1/UDC
setprop sys.usb.state fc000000.usb

第一次创建后能够被windows电脑正常枚举:

再次# 删除link的uac2 function重新创建后无法被windows电脑枚举:
无法获取配置描述符,不断触发usb reset

以下是使用wireshark重新抓取了枚举异常的过程,获取配置描述符后host端没有进行下一步动作,一段时间后就发起了reset操作:
10345352011

补充情况:
1、windows无法枚举时,更换windows电脑也无法恢复,只能通过重启安卓才能恢复,unbind udc也无法恢复。

2、该问题与windows电脑相关,接linux系统能正常枚举。

有大佬解答下为什么吗?

USB中文网 2024-06-28 16:59:04 编辑

Windows验证和linux验证的可能有不同。
你可以用usbtreeviewer在Windows下复位设备端口,试一下.