关于在Mac,Linux(虚拟机),树莓派,Quark上的调试过程小结 #169
coolflyreg
started this conversation in
General
Replies: 1 comment 2 replies
-
不错,你可以把修改的描述符提个pr。 |
Beta Was this translation helpful? Give feedback.
2 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
调试过程小结
1、Linux在USB连接后,需要调用libusb_detach_kernel_driver,去detach掉linux内核cdc_acm驱动。至于第二个参数interface_number,0或1都可以。如果不detach kernel driver,claim的时候,会返回设备busy(-16)的错误



Mac不需要detach kernel driver
detach前
detach后
2、Mac下需要调用usb_claim_interface才能通讯,不需要detach kernel driver。目前在打开后USB立刻调用了一次。

3、关于usb_claim_interface的调用参数
对于Mac和树莓派(kernel 5.15.32-v7l+),claim是0或是1都没问题,视频流畅。
对于quark(ubuntu 16.x kernel 4.14.111),claim 1的话,会奇慢无比,需要使用claim 0,然后略微有点慢,比如30帧降到20帧的感觉,但是看不到三段刷新。
对于Linux虚拟机(UOS 20 kernel 5.10.0),不管是0还是1,都很慢,但是比quark的奇慢无比要快一点,大约1秒3帧左右,能明显看到分三段刷新。
仔细测试了下:虚拟机的Linux的和虚拟机的Win10,串口都比较慢,虚拟机的win10比虚拟机linux略快一点
4、在quark(ubuntu 16.x kernel 4.14.111)和Linux虚拟机(UOS 20 kernel 5.10.0)上连接的时候,需要先启动上位机,然后再插设备,才能正常通讯。正常通讯以后,不拔插设备,等Sample播完,可以再次运行Sample。使用如下图方法来等待连接

在Mac和树莓派(kernel 5.15.32-v7l+)上,先插后插都可以
5、如果想让Linux插ElectronBot后,不自动attach kernel driver,那么就要设置设备描述符DeviceClass为0xff,即厂商自定义。
DeviceClass改为0xff后,Win10上一样可以
目前不解的问题
1、[已解]Quark上的速度播放掉帧率,是不是因为H3本身的性能问题。
测试结果:没有修改代码,仅仅将视频转为了240x240的大小,再次测试,效果也差不多。结论:还是性能不足导致卡顿
Beta Was this translation helpful? Give feedback.
All reactions