【WSL2】配置连接 USB 设备并使用主机的 USB 摄像头

【WSL2】配置连接 USB 设备并使用主机的 USB 摄像头

  • 1 概述
  • 2 安装 USBIPD-WIN
  • 3 在 Linux 中安装 USBIP 工具和硬件数据库
  • 4 附加 USB 设备

1 概述

先说明清楚,WSL2 内核中暂时不包含 USB 摄像头驱动,所以如果不是刚需,建议直接开润。
在这里插入图片描述

如果真的要折腾一下,可以跟着官方的教程去编译一个带有额外 USB 驱动的内核

下面简单说一下,如何让 WSL2 连接主机的 USB 设备。

参考博客:WSL2连接调用USB设备

2 安装 USBIPD-WIN

参考文章:官方文档

WSL2 本身并不支持连接 USB 设备,所以需要安装 usbipd-win

  1. 如果已安装 winget,只需使用命令 winget install --interactive --exact dorssel.usbipd-win 安装。
  2. 如果 1 不可以,GitHub 下载 .msi 文件,双击安装。

【WSL2】配置连接 USB 设备并使用主机的 USB 摄像头_第1张图片

3 在 Linux 中安装 USBIP 工具和硬件数据库

我安装的是 Ubuntu20.04

  • 运行下面的命令(适用于 Ubuntu
sudo apt install linux-tools-5.4.0-77-generic hwdata
sudo update-alternatives --install /usr/local/bin/usbip usbip /usr/lib/linux-tools/5.4.0-77-generic/usbip 20

其他发行版看官网,如下图:
【WSL2】配置连接 USB 设备并使用主机的 USB 摄像头_第2张图片

完成上述步骤后,现在一个服务正在 Windows 上运行以共享 USB 设备,并且在 WSL2 中安装了必要的工具来连接到共享设备。

4 附加 USB 设备

  • 管理员模式打开 PowerShell 并输入以下命令
usbipd wsl list

可以看到现在状态都是 Not attached,左边的 BUSID 下一步会用到
【WSL2】配置连接 USB 设备并使用主机的 USB 摄像头_第3张图片

  • 选择要附加到 WSL2 的设备总线 ID
usbipd wsl attach --busid <busid>

这一步可能会报错:

  1. usbipd: error: Access denied; this operation requires administrator privileges.
  2. usbipd: error: WSL kernel is not USBIP capable; update with 'wsl --update'

解决方法:
1: 一定要管理员模式打开 PowerShell
2:

  • wsl --update
  • wsl --shutdown
  • 重新以管理员模式打开 PowerShell
  • 打开 Ubuntu20.04
lsusb

可以看到刚刚附加的设备,后续可能需要配置 udev 规则以允许非 root 用户访问设备

  • 使用完后,可物理断开 USB 设备,或在管理员模式下 PowerShell 中执行 usbipd wsl detach --busid

你可能感兴趣的:(WSL2,linux,服务器,windows)