项目十--USB over IP server on microWRT

来自Microduino Wikipedia
跳转至: 导航搜索

本教程主要介绍一下USB over IP,以及在microWRT上的实现。

USB/IP介绍

USB/IP 是一种通过IP在不同系统之间共享USB设备的技术。为了能够在不同的系统之间共享USB设备,需要把USB接口协议的报文放在TPC/IP报文 中进行传递。这样本地的USB设备,就可以通过网络被远端的设备来操作。如果将两者绑定在一起后,本地PC就可以操作远程的设备,比如:

    • USB存储设备:fdisk,mkfs,mount/unmount, 文件操作等。
    • USB键盘:使用linux 控制台或者X Window System。
    • USB网络摄像头和USB麦克风:看视频,捕获图像以及播放音乐。
    • USB打印机,扫描仪等其他一些USB转换设备。

在整个USB/IP 系统中分为Server/Client, 一般是在Server上连接usb设备,并安装相依的server端软件,而client端可以是linux系统的PC, 也可以是Window系统。同样需要安装相应的client软件。系统原理图如下:

文件:USBoverIP1.jpg
USB/IP Overview

microWRT USB/IP Server搭建

1.软件配置 目前openWRT的BB版本已经支持了USB/IP,我们只要按照下图进行配置,并编译固件,即可。

文件:USBoverIP2.jpg
USB/IP Configuration

2.将固件烧写到MicroWRT板子上,通过“usbip list -l" 命令能列出可用的USB设备,在下面的例子中是一个hub和一个鼠标。如下:

root@microWRT:~# usbip list -l Local USB devices: ================== - busid 2-1 (06e8:0407) 2-1:1:1.0 -> hub

- busid 2-2 (079e:2410) 2-2:1.0 -> unknown

3. 下面将设备2-2添加到/etc/rc.local 中。

usbipd -D &

 sleep 1
 usbip bind -b 2-2
 exit 0

至此microWRT端就配置好了。我们可以通过下面的命令来查看是否通过网络找到USB设备,如下:

root@microWrt:~# netstat -alpt

 Active Internet connections (servers and established)
 Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
 tcp        0      0 0.0.0.0:3320            0.0.0.0:*               LISTEN      356/usbipd

Client端搭建

1. Linux 系统

(1) 安装usbip在PC上,如下:

 jason@ubuntu:~$ sudo apt-get install usbip
 Reading package lists... Done
 Building dependency tree       
 Reading state information... Done
 The following extra packages will be installed:
    libsysfs2 libusbip0
 The following NEW packages will be installed:
    libsysfs2 libusbip0 usbip

(2) 装载vhci mod

 jason@ubuntu:~$ sudo modprobe vhci_hcd   
  

(3) 测试远端USB设备是否可访问

 jason@ubuntu:~$ usbip list -r 192.168.1.1
 Exportable USB devices
 ======================
  - 192.168.1.1
       2-2: Pixart Imaging, Inc. : Optical Mouse (093a:2510)
          : /sys/devices/platform/bcm63xx_ohci.0/usb2/2-2
          : (Defined at Interface level) (00/00/00)
          :  0 - Human Interface Device / Boot Interface Subclass / Mouse (03/01/02)
          

(4) 绑定远端USB设备

 jason@ubuntu:~$ usbip attach -r 192.168.1.1 -b 2-2
 

如果一切正常的话,就可以在PC上操作远端的鼠标了。

2. Windows系统

在window系统上安装usbip驱动有时会遇到问题,主要是版本不匹配。每个系统安装后也不一样。详细的安装方法可以参考下面几个链接。

下载源码自己编译: http://sourceforge.net/p/usbip/code/HEAD/tree/

下载编译好的驱动: http://sourceforge.net/projects/usbip/

安装好驱动后,在windows的命令行窗口中运行如下命令,查看设备

 usbip.exe -l 192.168.1.1