解决usbip-win项目中的USB设备共享连接问题

解决usbip-win项目中的USB设备共享连接问题

【免费下载链接】usbip-win 【免费下载链接】usbip-win 项目地址: https://gitcode.com/gh_mirrors/usb/usbip-win

问题背景

在使用usbip-win项目进行USB设备共享时,用户可能会遇到连接失败的问题。具体表现为在Windows客户端执行usbip attach命令时出现错误提示:"usbip: error: failed to attach on client"和"usbipd: info: request 0x8003(5): failed on server"。本文将详细分析这一问题并提供解决方案。

环境配置

要成功实现USB设备共享,需要正确配置以下环境:

  1. 服务器端:使用Ubuntu 20.04系统,运行usbip-utils 2.0版本
  2. 客户端:Windows系统,运行usbip-win 0.3.6版本

问题分析

当用户尝试直接从Windows客户端执行usbip attach命令时,连接会失败。这是因为在建立连接前,客户端需要先获取服务器上可用的USB设备列表信息。直接执行attach命令会导致协议握手不完整,从而引发连接失败。

解决方案

正确的操作流程如下:

  1. 在Ubuntu服务器端

    • 启动usbip守护进程:sudo usbipd -D
    • 绑定要共享的USB设备:sudo usbip bind -b <设备总线ID>
  2. 在Windows客户端端

    • 首先执行设备列表查询命令:usbip.exe list -r <Ubuntu服务器IP>
    • 然后再执行设备连接命令:usbip.exe attach -r <Ubuntu服务器IP> -b <设备总线ID>

技术原理

这种操作顺序要求的原因在于usbip协议的工作机制:

  1. 设备枚举阶段:客户端需要先通过list命令获取服务器上可用的USB设备信息,这会建立初始的通信通道。
  2. 设备连接阶段:在枚举完成后,客户端才能通过获取的设备信息建立实际的USB设备连接。

跳过枚举阶段直接尝试连接会导致协议握手不完整,服务器无法正确处理连接请求,从而返回错误代码0x8003(5)。

注意事项

  1. 确保服务器和客户端之间的网络连接畅通,安全设置不会阻止相关端口。
  2. 确认使用的usbip版本兼容,不同版本间可能存在协议差异。
  3. 在Ubuntu服务器上,确保已加载必要的内核模块:modprobe usbip-coremodprobe usbip-host
  4. 对于需要特殊权限的设备,可能需要调整udev规则或使用root权限。

总结

通过遵循正确的操作顺序:先查询设备列表再连接设备,可以解决usbip-win项目中的USB设备共享连接问题。这一解决方案不仅适用于文中提到的特定版本组合,也适用于大多数usbip实现,因为这是由usbip协议本身的工作机制决定的。

【免费下载链接】usbip-win 【免费下载链接】usbip-win 项目地址: https://gitcode.com/gh_mirrors/usb/usbip-win

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值