问题描述
我想将 Intel Realsense 摄像头 (D455) 连接到我的 android 虚拟设备,在 android 模拟器上运行,以便我可以使用 Realsense 摄像头调试我的 android APP。
在this page上,似乎最新的android studio emulator支持USB passthrough,所以我尝试了以下命令:
./emulator -avd Nexus_6P_API_29 -qemu -usb -device usb-host,vendorid=0x8086,productid=0x0b5c
其中-avd Nexus_6P_API_29
指定android虚拟设备的名称,vendorid
和productid
由lsusb
获取。
qemu-system-x86_64: Warning: speed mismatch trying to attach usb device "Intel(R) RealSense(TM) Depth Ca" ( speed) to bus "usb-bus.0",port "1" (full speed)
似乎模拟器确实找到了设备,但存在“速度不匹配”问题。我在 this page 上找到了对该问题的很好解释,说 usb-bus
对应于 USB 1.0。由于实感摄像头支持usb-3.2,我觉得我应该用usb-3.0,所以我尝试了以下方法:
./emulator -avd Nexus_6P_API_29 -qemu -usb -device nec-usb-xhci,id=xhci -device usb-host,productid=0x0b5c
为 usb-3.0 指定 nec-usb-xhci
。
但是我收到的错误消息是:
qemu-system-x86_64: Warning: speed mismatch trying to attach usb device "Intel(R) RealSense(TM) Depth Ca" ( speed) to bus "xhci.0",port "1" (full+high+super speed)
我注意到,相机的速度显示为(速度)。 (即实际速度,通常应为(全速)/(高速)/(超速)之一,为空白。) 我猜速度不匹配问题与这个空白速度有关。有没有人有类似的经历?提前致谢!
解决方法
只有 EHCI 已经内置在 AVD 的内核中。
我在 XDA 上写了一个小指南,里面有一些更深入的信息。
您可以阅读更多there。
如果您的设备可以处理 EHCI,您可以尝试:
-qemu -usb -device usb-ehci,id=ehci -device usb-host,bus=ehci.0,vendorid=0x8086,productid=0x0b5c
否则,请在启用 XHCI 的情况下重新编译内核。 也许其他一些步骤也是必要的。比如给android.hardware.usb.host添加权限
更新:22.03.2021 我认为这是(曾经)模拟器 qemu 的速度报告问题。现在使用仿真器版本 30.5.3,这个问题得到了解决,它适用于我所有的 UVC 标准相机,在 EHCI 和 XHCI 上。内置的 Face Time 摄像头也可用作 USB 连接设备。但是,只有来自 PlayStore 的两个应用程序能够向我展示这些镜头。 USB Camera - Connect EasyCap or USB WebCam 非常流畅和漂亮的镜头。 UVC Camera / Usb Camera with driver from userspace 与休抖动。