How To Set Up A USB-Over-IP Server And Client With Ubuntu 10.04 - Page 2
3 Installing And Using USB/IP On The Client
client1:
We must install usbip on the client as well:
aptitude install usbip
Afterwards we load the vhci-hcd kernel module:
modprobe vhci-hcd
To check if it really got loaded, run:
lsmod | grep vhci_hcd
The output should be similar to this one:
root@client1:~# lsmod | grep vhci_hcd
vhci_hcd 19800 0
usbip_common_mod 13605 1 vhci_hcd
root@client1:~#
To make sure that the module gets loaded automatically whenever you boot the system, you can add it to /etc/modules:
vi /etc/modules
[...] vhci-hcd |
Now connect to the usbip server and get a list of available USB devices:
usbip -l 192.168.0.100
(192.168.0.100 is the IP address of the usbip server.)
You should find the SanDisk USB flash drive in the output (BUSID 1-1):
root@client1:~# usbip -l 192.168.0.100
- 192.168.0.100
1-1: SanDisk Corp. : Cruzer Micro Flash Drive (0781:5151)
: /sys/devices/pci0000:00/0000:00:07.2/usb1/1-1
: (Defined at Interface level) (00/00/00)
: 0 - Mass Storage / SCSI / Bulk (Zip) (08/06/50)
root@client1:~#
To attach that device to the client, run:
usbip -a 192.168.0.100 1-1
root@client1:~# usbip -a 192.168.0.100 1-1
8 ports available
port 0 attached
root@client1:~#
Now run...
lsusb
... and you should find the remote USB device in the output on the client:
root@client1:~# lsusb
Bus 001 Device 002: ID 0781:5151 SanDisk Corp. Cruzer Micro 256/512MB Flash Drive
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
root@client1:~#
You can now use the remote USB device as if it was a local USB device (e.g. mount it, format it, write to it, read form it, etc.).
4 Detaching A Remote USB Device
A remote USB device can be detached as follows:
client1:
Run...
usbip --port
... to find out the port that the remote USB device uses on the client - in this case it's port 00:
root@client1:~# usbip --port
8 ports available
Port 00: <Port in Use> at High Speed(480Mbps)
SanDisk Corp. : Cruzer Micro 256/512MB Flash Drive (0781:5151)
1-1 -> usbip://192.168.0.100:3240/1-1 (remote devid 00010002 (bus/dev 001/002))
1-1:1.0 used by usb-storage
/sys/class/bsg/1:0:0:0/device
/sys/class/scsi_device/1:0:0:0/device
/sys/class/scsi_disk/1:0:0:0/device
/sys/class/scsi_host/host1/device
/sys/class/usb_endpoint/usbdev1.4_ep02/device
/sys/class/usb_endpoint/usbdev1.4_ep81/device
/sys/block/sdb/device
Port 01: <Port Available>
Port 02: <Port Available>
Port 03: <Port Available>
Port 04: <Port Available>
Port 05: <Port Available>
Port 06: <Port Available>
Port 07: <Port Available>
root@client1:~#
We need the port number to detach the device:
usbip -d 00
root@client1:~# usbip -d 00
8 ports available
port 0 detached
root@client1:~#
On the server, we use the BUSID (1-1) to bind the USB device to the local system (the --other switch binds the device to the local system so that it is not available over the network anymore):
server1:
usbip_bind_driver --other 1-1
root@server1:~# usbip_bind_driver --other 1-1
** (process:7333): DEBUG: write "del 1-1" to /sys/bus/usb/drivers/usbip/match_busid
** Message: bind 1-1 to other drivers than usbip, complete!
root@server1:~#
Now go back to the client and check if the remote USB device is still available:
client1:
lsusb
If all goes well, it shouldn't be listed anymore:
root@client1:~# lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
root@client1:~#
5 Links
- USB/IP Project: http://usbip.sourceforge.net/
- Ubuntu: http://www.ubuntu.com/