我已在 WSL2 中将 USB 网络摄像头连接到 Ubuntu 20.04 或从 Ubuntu 20.04 分离usbipd-win使用中的说明连接 USB 设备。来自 PowerShell:
usbipd wsl attach --busid 2-4
完成后,我将分离:
usbipd wsl detach --busid 2-4
但是,当我第二次尝试使用相同的命令连接相同的 USB 网络摄像头设备时:
usbipd wsl attach --busid 2-4
...PowerShell 控制台显示此错误:
usbip: error: Attach Request for 2-4 failed - Device busy (exported)
USB 网络摄像头正忙是什么意思?
尽管我之前已将其分离,但为什么网络摄像头仍会很忙?
你好,如果我尝试使用 WSL2 :
~$ sudo usbip port
表明 :
Imported USB devices
====================
如果我尝试在 Power Shell 中:
PS C:\Windows\System32> usbipd wsl list
BUSID DEVICE STATE
2-2 USBIP Shared Device, NexiGo N950P 4K Webcam, NexiGo N950P... Not attached
另外,如果我尝试 PS,(注意不带“wsl”):
PS C:\Windows\System32> usbipd unbind --busid 2-2
现在它不会给我一个错误,只是它不起作用
如果我尝试:
PS C:\Windows\System32> usbipd bind --busid 2-2
usbipd:信息:总线 ID 为“2-2”的设备已被共享。
答案1
我没有回答还没有为您提供,但我们已经超出了评论中可以解释的范围,所以在我们解决这个问题时,我将在这里添加一些信息。
您在评论中提到尝试:
usbipd wsl unbind --busid <busid>
...在 PowerShell 中并收到错误。这是可以预料的。跑步:
$ usbipd wsl -h
usbipd-win 2.2.0
Description:
Convenience commands for attaching and detaching devices to Windows Subsystem for Linux.
Usage:
usbipd wsl [command] [options]
Options:
-?, -h, --help Show help and usage information
Commands:
attach Attach a USB device to a WSL instance
detach Detach a USB device from a WSL instance
list List USB devices
因此您可以看到可以遵循的唯一有效命令usbipd
是attach
、detach
和list
。
正如它所说,这些是“便利命令”。它们是简写:
usbipd wsl attach -b <busid>
做了两件事:- 在 PowerShell 中,它分享该设备通过
usbipd bind -b <busid>
- 在您的默认 WSL 实例中,它附件通过 到共享设备
sudo usbip attach -r $(hostname).local -b <busid>
。它不需要sudo
密码即可完成此操作,因为它本质上使用该wsl -u root
命令。
例如,在 PowerShell 中,以下命令应与上述便捷版本具有相同的效果:
usbipd bind -b <busid> wsl -u root -e usbip attach -r "$(hostname.exe).local" -b <busid>
或者您可以在 PowerShell 中运行第一个命令,然后进入 Ubuntu 并运行:
sudo usbip attach -r $(hostname).local -b <busid>
这三者都具有相同的效果。
- 在 PowerShell 中,它分享该设备通过
usbipd wsl detach -b <busid>
类似,并且做了两件事:- 在 WSL 中,
usbip detach
是设备 - 在 PowerShell 中,
usbipd unbind
是设备
- 在 WSL 中,
usbipd wsl list
Ubuntu/WSL2 中确实没有类似的东西。它更像usbipd list
是添加了显示哪个 WSL2 实例连接了设备的功能。
重要的提示:很容易忽略这是两个单独的命令,因为它们非常相似。
- 在 PowerShell 中,命令是
usbipd
- 从 WSL2 开始,命令是
usbip
(不带“d”)
故障排除
考虑到这一点,当遇到问题时,请尝试在 Ubuntu 中运行一些命令。
尝试:
sudo usbip port
sudo usbip detach -p 00 # Or whatever the previous command showed
看看这是否会向您提供任何不同的消息,以帮助我们确定原因:
usbipd wsl attach --busid 2-4
...给你一个错误。
答案2
错误
usbip:错误:2-4 的附加请求失败 - 设备繁忙(已导出)
确实与使用外设的 Windows 端的某些内容有关。
在 Windows 端运行任务管理器,识别哪个应用程序正在使用您的外设,结束该任务。
现在你会发现它有效。就我而言,它是 Android adb 管理器。我结束了它,一切都很好。
答案3
某些程序可以使用该端口。就我而言,G-helper 使用该端口。我关闭了 G-helper,我可以附加到 wsl2。查看并关闭可能使用该端口的程序