使用 TCP 的虚拟 USB 总线

iBe*_*eve 6 windows usb

我有一个路由器,可以连接打印机进行无线打印。看来 Windows 软件使用了使用 TCP 的虚拟 USB 总线。这使打印机看起来就像是直接插入计算机一样。

Windows 设备驱动程序

是否可以在 Ubuntu 上使用 TCP 创建虚拟 USB 总线,或者这是路由器和 Windows 软件使用的自定义协议?

小智 4

这可能是您的路由器和制造商设计的软件使用的自定义/专有协议。

然而,USB over IP 是一个东西,它可以在 Ubuntu 上使用。假设您的路由器使用标准 USB over IP,而不是自定义协议,页面(对于通过 google 找到此内容的任何人在下面进行解释)应该可以帮助您进行设置。

  1. 安装usbip

    sudo apt-get install usbip

  2. 加载vhci-hcd内核模块

    modprobe vhci-hcd

  3. 检查是否真的加载完毕

    lsmod | grep vhci_hcd

    (你的输出应该类似于下面)

    root@client1:~# lsmod | grep vhci_hcd
    vhci_hcd               19800  0
    usbip_common_mod       13605  1 vhci_hcd
    root@client1:~#
    
    Run Code Online (Sandbox Code Playgroud)
  4. (可选)添加启动时加载的模块

    sudo echo vhci-hcd >> /etc/modules

  5. 连接到服务器(您的路由器)并获取设备列表。

    usbip -l serverip

    替换serverip为您的路由器的 IP 地址。

    输出示例:

    root@client1:~# usbip -l 192.168.0.100
    - 192.168.0.100
         1-1: SanDisk Corp. : Cruzer Micro Flash Drive (0781:5151)
            : /sys/devices/pci0000:00/0000:00:07.2/usb1/1-1
            : (Defined at Interface level) (00/00/00)
            :  0 - Mass Storage / SCSI / Bulk (Zip) (08/06/50)
    
    Run Code Online (Sandbox Code Playgroud)

    记下您要使用的 USB 设备的名称(本例中为 1-1)。

  6. 将远程设备连接到本地计算机。

    usbip -a serverip designation
    
    Run Code Online (Sandbox Code Playgroud)

    例如

    usbip -a 192.168.12.34 1-1
    
    Run Code Online (Sandbox Code Playgroud)

    远程设备现在应该本地连接到您的计算机。lsusb如果从终端执行,您应该会看到它列出。