使用 TCP 的虚拟 USB 总线

使用 TCP 的虚拟 USB 总线

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

Windows 设备驱动程序

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

答案1

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

但是,USB over IP 确实存在,并且可以在 Ubuntu 上使用。假设您的路由器使用的是标准 USB over IP 而不是自定义协议,页面(对于任何通过谷歌找到此内容的人来说,下面都有解释)应该可以帮助您进行设置。

  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:~#
    
  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)
    

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

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

    usbip -a serverip designation
    

    例如

    usbip -a 192.168.12.34 1-1
    

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

相关内容