USB驱动之USB网络共享

一 编译USB/IP组件

USB/IP组件包含两部分:USB/IP协议栈和USB/IP驱动模块

USB/IP协议栈源码位于linux_kernel/tools/usb/usbip

USB/IP驱动模块位于linux_kernel/drivers/usb/usbip

1.

  1. 1.1编译USB/IP协议栈

1 进入USB/IP协议栈目录

cd linux_kernel/tools/usb/usbip

2 执行如下命令,生成configure

./autogen.sh

打印信息如下图1所示:

                     图1

3 执行如下命令,生成Makefile

./configure --host=arm-linux-gnueabihf --target=arm-linux-gnueabihf --prefix=/home/quan/Desktop/usbip

4 编译并且安装USB/IP协议栈

make; make install

USB/IP协议栈如下图2所示:

           图2

1.2 编译USB/IP驱动模块

1 执行如下命令,选择USB/IP驱动模块

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig

依次选择Device Drivers -> USB support -> USB/IP support

2 执行如下命令,编译USB/IP驱动模块

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- modules

编译成功后生成3个驱动模块,如下所示:

drivers/usb/usbip/usbip-core.ko

drivers/usb/usbip/usbip-host.ko

drivers/usb/usbip/vhci-hcd.ko

二 测试USB/IP组件

服务器执行如下步骤,开启USB网络共享

1 加载服务器驱动

insmod usbip-core.ko

insmod usbip-host.ko

2 启动usbipd后台程序

usbipd –D

3 扫描连接的USB设备

usbip list -l

注意:

I 确保服务器端已连接USB设备

II 请忽略错误信息:failed to open /usr/share/hwdata//usb.ids

4 共享USB设备给客户端

usbip bind --busid 3-1

为了防止数据冲突,共享USB设备后,服务器会卸载该USB设备

5 关闭USB网络共享

usbip unbind --busid 3-1

客户端执行如下步骤,绑定USB设备

1 加载客户端驱动

insmod usbip-core.ko

insmod vhci-hcd.ko

2 扫描服务器USB设备

usbip list --remote 192.168.0.227

注意:

请忽略错误信息failed to open /usr/share/hwdata//usb.ids

3 绑定服务器USB设备

usbip attach --remote 192.168.0.227 --busid 3-1.1

4 列出当前绑定的USB设备,然后解除绑定

usbip port

usbip detach --port 0

转载于:https://blog.51cto.com/jiangniu/2084461

你可能感兴趣的:(USB驱动之USB网络共享)