usbip:错误:附加请求失败 - 设备繁忙(已导出)

usbip:错误:附加请求失败 - 设备繁忙(已导出)

我已在 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

因此您可以看到可以遵循的唯一有效命令usbipdattachdetachlist

正如它所说,这些是“便利命令”。它们是简写:

  • 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>
    

    这三者都具有相同的效果。

  • usbipd wsl detach -b <busid>类似,并且做了两件事:

    • 在 WSL 中,usbip detach是设备
    • 在 PowerShell 中,usbipd unbind是设备
  • usbipd wsl listUbuntu/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。查看并关闭可能使用该端口的程序

相关内容