How To Set Up A USB-Over-IP Server And Client With OpenSUSE 11.2 - Page 2
3 Installing And Using USB/IP On The Client
client1:
First we must install usbip on the client. The steps are the same as on the server:
yast2 -i usbip
usbip expects the file containing the list of known USB devices (usb.ids) in the directory /usr/share/hwdata, but on OpenSUSE 11.2 it's located in /usr/share/usbip/usb.ids - therefore we create a symlink:
mkdir /usr/share/hwdata
ln -sf /usr/share/usbip/usb.ids /usr/share/hwdata/
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:
client1:~ # lsmod | grep vhci_hcd
vhci_hcd 26576 0
usbip_common_mod 25232 1 vhci_hcd
client1:~ #
To make sure that the module gets loaded automatically whenever you boot the system, you can add it to the MODULES_LOADED_ON_BOOT line in /etc/sysconfig/kernel:
vi /etc/sysconfig/kernel
[...] ## Type: string ## ServiceRestart: boot.loadmodules # # This variable contains the list of modules to be loaded # once the main filesystem is active # You will find a few default modules for hardware which # can not be detected automatically. # MODULES_LOADED_ON_BOOT="vhci-hcd" [...] |
Run
SuSEconfig
afterwards.
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 2-5):
client1:~ # usbip -l 192.168.0.100
- 192.168.0.100
2-5: SanDisk Corp. : Cruzer Micro 256/512MB Flash Drive (0781:5151)
: /sys/devices/pci0000:00/0000:00:04.1/usb2/2-5
: (Defined at Interface level) (00/00/00)
: 0 - Mass Storage / SCSI / Bulk (Zip) (08/06/50)
client1:~ #
To attach that device to the client, run:
usbip -a 192.168.0.100 2-5
client1:~ # usbip -a 192.168.0.100 2-5
8 ports available
port 0 attached
client1:~ #
Now run...
lsusb
... and you should find the remote USB device in the output on the client:
client1:~ # lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 004: ID 0781:5151 SanDisk Corp. Cruzer Micro Flash Drive
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:
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/2-5 (remote devid 00020002 (bus/dev 002/002))
1-1:1.0 used by usb-storage
/sys/devices/platform/vhci_hcd/usb1/1-1/1-1:1.0/host4/scsi_host/host4/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>
client1:~ #
We need the port number to detach the device:
usbip -d 00
client1:~ # usbip -d 00
8 ports available
port 0 detached
client1:~ #
On the server, we use the BUSID (2-5) 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:
bind_driver --other 2-5
server1:~ # bind_driver --other 2-5
** (process:3484): DEBUG: write "del 2-5" to /sys/bus/usb/drivers/usbip/match_busid
** Message: bind 2-5 to other drivers than usbip, complete!
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:
client1:~ # lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
client1:~ #
5 Links
- USB/IP Project: http://usbip.sourceforge.net/
- OpenSUSE: http://www.opensuse.org/