在我的 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 系统上一样进行访问。