usbip--ubuntu 16.04(USB區域網共享)
usbip
的目的是為了開發一個在區域網內共享的USB裝置,也就是說你可以直接訪問區域網內其他計算機的USB
裝置。
下面我們看一下如何在ubuntu 16.04
跟樹莓派(raspberry pi
)以及樹莓派之間實現USB
裝置在區域網的共享。
樹莓派端配置為服務端,我們把USB
裝置接入到樹莓派上,服務端的樹莓派上執行如下操作:
# 升級核心以及附屬驅動模組 $ sudo rpi-update $ sudo apt-get install usbip # 載入驅動模組 $ sudo modprobe usbip-core $ sudo modprobe vhci-hcd $ sudo modprobe usbip_host # 開啟監聽服務接收來自其他機器的請求 $ sudo usbipd -D # 列出本機的USB裝置列表 $ sudo usbip list -l # 通知底層驅動,繫結裝置,遠端可看到我們繫結過的裝置,我們的裝置ID為1-1.3 $ sudo usbip --debug bind -b 1-1.3
客戶端的樹莓派或者ubuntu 16.04
,執行如下操作檢視以及操作服務端的裝置。
樹莓派
$ sudo apt-get install usbip # 'sudo usbip version' usbip (usbip-utils 2.0) raspberry pi # 伺服器IP地址 192.168.1.201 ,列出服務端的裝置列表 $ sudo usbip list -r 192.168.1.201 --debug # 伺服器IP地址 192.168.1.201 ,裝置ID 1-1.3 $ sudo usbip attach -r 192.168.1.201 -b 1-1.3
ubuntu 16.04
$ sudo apt-get install linux-tools-`uname -r` # 'sudo /usr/lib/linux-tools/`uname -r`/usbip version' usbip (usbip-utils 2.0) raspberry pi # 伺服器IP地址 192.168.1.201 ,列出服務端的裝置列表 $ sudo /usr/lib/linux-tools/`uname -r`/usbip list -r 192.168.1.201 --debug # 伺服器IP地址 192.168.1.201 ,裝置ID 1-1.3 $ sudo /usr/lib/linux-tools/`uname -r`/usbip attach -r 192.168.1.201 -b 1-1.3
出錯資訊
如果出錯資訊如下:
pi@raspberrypi:~ $ sudo usbip port usbip: error: failed to open /usr/share/hwdata//usb.ids libusbip: error: udev_device_new_from_subsystem_sysname failed usbip: error: open vhci_driver usbip: error: list imported devices
出錯的原因為核心驅動沒有正確載入,解決方法為:
# 載入驅動模組 $ sudo modprobe usbip-core $ sudo modprobe vhci-hcd
如果出錯資訊如下(比如ubuntu 16.04
):
$ sudo usbip --list 192.168.1.201 --debug usbip dbg: usbip_network.c: 221 (tcp_connect ) trying 192.168.1.201 port 3240 usbip dbg: usbip_network.c: 241 (tcp_connect ) connected to 192.168.1.201:3240 - 192.168.1.201 usbip err: usbip_network.c: 119 (usbip_recv_op_common) recv op_common, -1 usbip err: vhci_attach.c: 202 (query_exported_devices) recv op_common usbip err: vhci_attach.c: 417 (show_exported_devices) query
此時檢視軟體版本,可以看到如下:
$ sudo usbip -v usbip 0.1.7 ($Id: vhci_attach.c 42 2007-09-07 12:07:51Z hirofuchi $)
這個原因是由於軟體安裝的是很早的一個版本,無法跟現在最新的版本進行通訊。
這個驅動很早就以及整合進入了Linux
核心,控制軟體也是核心提供。使用如下命令安裝跟當前核心匹配的版本:
$ sudo apt-get install linux-tools-`uname -r` $ sudo /usr/lib/linux-tools/`uname -r`/usbip list -r 192.168.1.201 --debug
如果出錯資訊如下:
$ sudo usbip --debug bind -b 1-1.3 usbip: debug: usbip.c:141:[run_command] running command: `bind' usbip: debug: sysfs_utils.c:18:[write_sysfs_attribute] error opening attribute /sys/bus/usb/drivers/usbip-host/match_busid usbip: debug: utils.c:50:[modify_match_busid] failed to write match_busid: No such file or directory usbip: error: unable to bind device on 1-1.3
原因為usbip_host.ko
這個核心驅動沒有載入,使用如下命令載入驅動:
$ sudo modprobe usbip_host
參考連結
- ofollow,noindex" target="_blank">USBIP --ubuntu 11.04(USB區域網共享)
- USB/IP PROJECT
- How do I make my Raspberry Pi act as a wireless USB controller?\
- USB redirector
- SOLVED: is usbip usb redirector working for anyone?
- USBIP package not working in "Raspbian GNU/Linux 7 (wheezy)"
- Linux, RPi and USB over IP updated
- usbip / Linux-tools for 4.14?
- git clone --depth=1 之後怎樣獲取完整倉庫?
- UPDATING THE KERNEL
- libusbip: error: udev_device_new_from_subsystem_sysname failed
- SOLVED: is usbip usb redirector working for anyone?
- USBIP-UTILS 2.0 ON UBUNTU