1 | Breakpoint 1, usbredir_interface_info (priv=0x55d7de1ff480, interface_info=0x55d7dcf57180) at hw/usb/ksvd_redirect.c:1267 |
gdb 断点调试法显示,usbredir_interface_info usbredir_device_connect之间,插入了一个disconnect导致失败
1 | static void usbredirhost_send_device_connect(struct usbredirhost *host) |
正常来说,send interface 和send connect都是连着的,中间没理由有一个disconnect
1 |
|
问题代码 Received 0 interval for isoc or irq endpoint\n
1 | (gdb) p *intf_desc |
设备有一个endpoint interval是0的
强制修改服务端代码,改为1规避
画面缺失问题
- 不开启摄像头优化
qemu-kvm: info: [28 03:52:06][114d:8589][47576]usbredirhost: [ISO] start iso stream dev:0x557c5b01b960, ep:129
qemu-kvm: info: [28 03:52:06][114d:8589][47576]usbredirhost: iso stream try start pkts/urb 32 urbs 15 ep 81
usbredir 的 包大小计算公式
1 | static void usbredirhost_set_max_packetsize(struct usbredirhost *host, |
实际上3.0的usbpacketsize计算方式并不是这样的
1 | Endpoint Descriptor: |
修改后,可以正常运行
- 本文作者: crazyboy
- 本文链接: http://crazyboy.www.crazyboy.info/blog/blog/2022/08/20/kylin/debug/819-uvc3.0-debug/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!