Android系统分析

基于 usbip 实现共享 usb 设备

2020-12-09  本文已影响0人  走在成长的道路上

usbip 架构

usbip 架构

usbiplinux 系统中默认集成到 Linux-3.17 主线上

电脑主机做服务器

# 安装 usbip 软件
$ sudo apt-get install usbip

# 使能 usbip 驱动模块
sudo modprobe  usbip-core  usbip-host  usbip-vudc
# 查看模块状态,也可添加到:/etc/modules 每次开机自启
$ lsmod | grep usbip

# 查看电脑主机上的usb设备
$ usbip list -l
 - busid 1-4 (046d:c52b)
   Logitech, Inc. : Unifying Receiver (046d:c52b)

 - busid 1-6 (5986:2113)
   Acer, Inc : unknown product (5986:2113)

 - busid 1-8 (06cb:00a2)
   Synaptics, Inc. : unknown product (06cb:00a2)

# 启动服务,
$ usbipd -D &
# 把usb设备添加到usbip中去:可以添加多个
# 1-4就是上面的编号,无线usb鼠标
$ usbip bind -b 1-4  

# 解除绑定usb设备
$ sudo usbip unbind -b 1-4

树莓派作为客户端

# 安装usbip软件
$ sudo apt-get install usbip

# 启动 vhci_hcd 模块
# 也就是:USB Virtual Host Controller Interface
$ sudo modprobe vhci_hcd  
# 查看 vhci_hcd 模块,也可添加到:/etc/modules 每次开机自启
$ lsmod | grep vhci_hcd

# 查看远端服务器电脑主机上的usb设备
$ usbip list -r 192.168.1.1
Exportable USB devices
======================
 - 192.168.1.1
        1-4: Logitech, Inc. : Unifying Receiver (046d:c52b)
           : /sys/devices/pci0000:00/0000:00:14.0/usb1/1-4
           : (Defined at Interface level) (00/00/00)

# 将远端服务器电脑主机上的usb设备添加到本地
$ usbip attach -r 192.168.1.1 -b 1-4
# 可以查看到本地已经添加上无线鼠标了
$ lsusb 

# 解除远程usb设备
$ usbip port
# 端口号根据上面的查到
$ usbip detach -p 0 

usbip 模块命令参数:

usage: usbip [--debug] [--log] [--tcp-port PORT] [version]
             [help] <command> <args>

  attach     Attach a remote USB device           #客户端添加远程usb设备
  detach     Detach a remote USB device           #客户端解除远程usb设备
  list       List exportable or local USB devices #客户端远端usb设备、服务器端查看本地usb设备
  bind       Bind device to usbip-host.ko         #服务器端添加(绑定)本地usb设备到usbip
  unbind     Unbind device from usbip-host.ko     #服务器端从usbip中解除(解绑)本地usb设备
  port       Show imported USB devices            #客户端已添加的远端usb设备

参考

上一篇 下一篇

猜你喜欢

热点阅读