USB 直通连接 Android 模拟器中的 RealSense 摄像头
USB passthrough to connect a RealSense camera in Android Emulator
我想将英特尔实感摄像头 (D455) 连接到我的 android 虚拟设备,android 模拟器上的 运行,这样我就可以调试我的 android使用实感摄像头的APP。
在this page上,好像最新的android studio模拟器支持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
获得。
模拟器给出以下错误消息(显示 3 次):
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。由于Realsense摄像头支持usb-3.2,我想我应该用usb-3.0,所以我尝试了以下方法:
./emulator -avd Nexus_6P_API_29 -qemu -usb -device nec-usb-xhci,id=xhci -device usb-host,vendorid=0x8086,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,这个问题就解决了,它适用于我在 EHCI 和 XHCI 上的所有 UVC 标准相机。内置的 Face Time 相机也可用作 USB 连接设备。但是,PlayStore 中只有两个应用程序能够向我展示视频片段。 USB Camera - Connect EasyCap or USB WebCam very smooth and nice footage. UVC Camera / Usb Camera with driver from userspace抖动。
我想将英特尔实感摄像头 (D455) 连接到我的 android 虚拟设备,android 模拟器上的 运行,这样我就可以调试我的 android使用实感摄像头的APP。
在this page上,好像最新的android studio模拟器支持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
获得。
模拟器给出以下错误消息(显示 3 次):
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。由于Realsense摄像头支持usb-3.2,我想我应该用usb-3.0,所以我尝试了以下方法:
./emulator -avd Nexus_6P_API_29 -qemu -usb -device nec-usb-xhci,id=xhci -device usb-host,vendorid=0x8086,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,这个问题就解决了,它适用于我在 EHCI 和 XHCI 上的所有 UVC 标准相机。内置的 Face Time 相机也可用作 USB 连接设备。但是,PlayStore 中只有两个应用程序能够向我展示视频片段。 USB Camera - Connect EasyCap or USB WebCam very smooth and nice footage. UVC Camera / Usb Camera with driver from userspace抖动。