WSL2中加载USB相机

两篇官方参考

(1)微软:Connect USB Devices

(2)Git:Linux下usbipd安装

一、系统配置需求

1.已成功安装wsl2

2.window版本

win10版本号2004以上

3. WSL版本

wsl2的linux内核版本号5.10.60.1及以上,查看方法:linux命令行界面输入 uname -a

最新内核地址:Windows Subsystem for Linux Updatehttps://www.catalog.update.microsoft.com/Search.aspx?q=wsl,更新内核时要关闭wsl。

二、在Windows下安装usbipd-win

        下载安装usbipd-win

三、在Linux下安装USB/IP client工具

sudo apt install linux-tools-virtual hwdata
sudo update-alternatives --install /usr/local/bin/usbip usbip /usr/lib/linux-tools/*/usbip 20

        若要在linux下能访问usb设备,尤其是嵌入式开发板,还需要配置udev规则,最直接的方式是安装openocd,然后将share/openocd/contrib/60-openocd.rules文件拷贝到/etc/udev/rules.d文件夹下,并执行:udevadm control --reload。如果出现"Failed to send reload request: No such file or directory"错误,执行sudo service udev restart命令,并重新执行udevadm control --reload。

四、WSL命令实现USB相机映射

        在window下安装成功usbipd后,需要将usb相机映射到linux。

1. 首先确保wsl控制台开启,在window下以管理员身份运行控制台,输入如下命令查看usb设备信息

C:\WINDOWS\system32> usbipd wsl list
BUSID  VID:PID    DEVICE                        STATE
1-1    05a3:8830  HD USB Camera                 Not attached
1-7    093a:2510  USB 输入设备                   Not attached
1-8    1c4f:0002  USB 输入设备                   Not attached

2. 其次在window控制台执行映射

 C:\WINDOWS\system32> usbipd wsl attach --busid 1-1

         最终结果如下

 C:\WINDOWS\system32> usbipd wsl list
BUSID  VID:PID    DEVICE                       STATE
1-1    05a3:8830  HD USB Camera                Attached - Ubuntu-22.04
1-7    093a:2510  USB 输入设备                  Not attached
1-8    1c4f:0002  USB 输入设备                  Not attached

3. 最后,在wsl控制台下查看映射结果

$ lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 004: ID 05a3:8830 ARC International USB 2.0 Camera
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

        如上所示,设备004,ID为05a3:8830为映射成功的usb相机

4. 在 WSL 中使用完设备后,可以直接Windows弹出USB 设备或者直接拔掉,即从物理层面断开USB设备连接,也可以在控制台运行命令:

usbipd wsl detach --busid 

注意:设备重连后要重新执行映射操作


至此,wsl下已能连接上usb相机,其他usb存储也可参照此方法连接。但usb相机还无法正常读取,实质在于wsl下没有相机驱动,将在后面的文章中讨论opencv的安装,并读取相机数据时,解决这个问题。

注:下面这条命令可安装camera工具,先记录下来

sudo apt install libcamera-tools

2022.06.17

很遗憾的发现wsl虽然能识别usb相机,但是opencv的capture语句无法识别相机,应该是wsl中没有相机驱动,网上有一些资料,但是有点复杂要重新编译内核,中间有一步出错,后面都接不上。

你可能感兴趣的:(WSL2,wsl连接usb设备)