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编译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