如何在 WSL 中访问/安装 Windows USB 设备

如何在 WSL 中访问/安装 Windows USB 设备

在我的 Windows 10 主机操作系统中,我有一个生物识别 USB 设备(指纹扫描仪) 安装:

❯ GET-CimInstance -query "SELECT * from Win32_PNPEntity where PNPClass = 'Biometric'"

Caption                     : U.are.U® 4500 Fingerprint Reader (WBF)
Description                 : U.are.U® 4500 Fingerprint Reader (WBF)
InstallDate                 :
Name                        : U.are.U® 4500 Fingerprint Reader (WBF)
Status                      : OK
Availability                :
ConfigManagerErrorCode      : 0
ConfigManagerUserConfig     : False
CreationClassName           : Win32_PnPEntity
DeviceID                    : USB\VID_05BA&PID_000A\{06EC1368-38E7-2F4A-A748-97F206FC72A5}
ErrorCleared                :
ErrorDescription            :
LastErrorCode               :
PNPDeviceID                 : USB\VID_05BA&PID_000A\{06EC1368-38E7-2F4A-A748-97F206FC72A5}
PowerManagementCapabilities :
PowerManagementSupported    :
StatusInfo                  :
SystemCreationClassName     : Win32_ComputerSystem
SystemName                  : B11CCETPROF1141
ClassGuid                   : {53d29ef7-377c-4d14-864b-eb3a85769359}
CompatibleID                : {USB\Class_FF&SubClass_FF&Prot_FF, USB\Class_FF&SubClass_FF, USB\Class_FF}
HardwareID                  : {USB\VID_05BA&PID_000A&REV_0103, USB\VID_05BA&PID_000A}
Manufacturer                : CROSSMATCH
PNPClass                    : Biometric
Present                     : True
Service                     : WUDFRd
PSComputerName              :

而且,我已经安装了 WSL2 来运行客户机 Ubuntu 20.04。

现在,我想直接从 Ubuntu 访问(或挂载,或至少“查看”)我的生物识别 USB 设备(客人,通过 WSL)。

我怎样才能做到这一点?

观察:Ubuntu 的命令lshw没有检测到 USB 设备。

答案1

WSL2 对 Windows 主机硬件没有太多访问权限。随着 Windows 11 和安装物理驱动器的能力的出现,这种情况已经开始略有改变,但 USB 仍然无法用于 WSL2。在虚拟化 WSL2 环境中也无法访问电源控制、网络接口和其他区域。

一种可能的解决方法是使用 USBIP 将 USB 设备从 Windows 共享到 WSL。我个人从未尝试过这种方法,所以我不能保证它一定有效。

这来自于在 Home Assistant 论坛上发帖人们一直在 WSL 上运行 Home Assistant(家庭自动化平台)。

由于大多数(所有?)PC Z-wave 接口都是通过 USB 加密狗实现的,因此关键障碍之一就是如何从 WSL 原生使用 USB Z-wave 加密狗。我不会重复这些论坛上的全部评论,而是总结一下(并调整“生物识别设备”的说明):

  • 使用以下方式在 Windows 下将设备作为 USB/IP 设备共享用于 Windows 的 USB/IP
  • 截至几周前(本文编辑时),微软的Linux-MSFT-WSL-5.10.60.1(可能以后) 内核版本现在已内置 USBIP。在此之前,您需要构建自己的 WSL 内核以包含 USB/IP 模块。Home Assistant 帖子的作者也提供了一个。
  • 如果使用新内核,请设置.wslconfig指向它。在某个时候,我假设wsl --update会自动将内核更新为带有 USB/IP 的版本。
  • sudo modprobe您的设备所需的任何模块。
  • usbip list -r $HOSTNAME.local以便(希望)看到您的 Windows USB 设备列表及其关联的总线 ID。
  • usbip attach -r $HOSTNAME.local -b <bus_id>随身携带的相机就是公交车上的相机。

有了这些,WSL/Linux 系统应该将您的生物识别设备视为原生 USB 设备,让您像在直接连接原生 USB 设备的原生 Linux 系统上一样进行访问。

相关内容