#
# README for usbip-utils
#
# Copyright (C) 2011 matt mooney <mfm@muteddisk.com>
#               2005-2008 Takahiro Hirofuchi


[Requirements]
    - USB/IP device drivers
	Found in the staging directory of the Linux kernel.

    - sysfsutils >= 2.0.0
	sysfsutils library

    - libwrap0-dev
	tcp wrapper library

    - gcc >= 4.0

    - libglib2.0-dev >= 2.6.0

    - libtool, automake >= 1.9, autoconf >= 2.5.0, pkg-config


[Install]
    0. Generate configuration scripts.
	$ ./autogen.sh

    1. Compile & install the userspace utilities.
	$ ./configure [--with-tcp-wrappers=no] [--with-usbids-dir=<dir>]
	$ make install

    2. Compile & install USB/IP drivers.


[Usage]
    server:# (Physically attach your USB device.)

    server:# insmod usbip-core.ko
    server:# insmod usbip-host.ko

    server:# usbipd -D
	- Start usbip daemon.

    server:# usbip list -l
	- List driver assignments for USB devices.

    server:# usbip bind --busid 1-2
	- Bind usbip-host.ko to the device with busid 1-2.
	- The USB device 1-2 is now exportable to other hosts!
	- Use `usbip unbind --busid 1-2' to stop exporting the device.

    client:# insmod usbip-core.ko
    client:# insmod vhci-hcd.ko

    client:# usbip list --remote <host>
	- List exported USB devices on the <host>.

    client:# usbip attach --host <host> --busid 1-2
	- Connect the remote USB device.

    client:# usbip port
	- Show virtual port status.

    client:# usbip detach --port <port>
	- Detach the USB device.


[Example]
---------------------------
	SERVER SIDE
---------------------------
Physically attach your USB devices to this host.

    trois:# insmod path/to/usbip-core.ko
    trois:# insmod path/to/usbip-host.ko
    trois:# usbipd -D

In another terminal, let's look up what USB devices are physically
attached to this host.

    trois:# usbip list -l
    Local USB devices
    =================
     - busid 1-1 (05a9:a511)
	     1-1:1.0 -> ov511

     - busid 3-2 (0711:0902)
	     3-2:1.0 -> none

     - busid 3-3.1 (08bb:2702)
	     3-3.1:1.0 -> snd-usb-audio
	     3-3.1:1.1 -> snd-usb-audio

     - busid 3-3.2 (04bb:0206)
	     3-3.2:1.0 -> usb-storage

     - busid 3-3 (0409:0058)
	     3-3:1.0 -> hub

     - busid 4-1 (046d:08b2)
	     4-1:1.0 -> none
	     4-1:1.1 -> none
	     4-1:1.2 -> none

     - busid 5-2 (058f:9254)
	     5-2:1.0 -> hub

A USB storage device of busid 3-3.2 is now bound to the usb-storage
driver. To export this device, we first mark the device as
"exportable"; the device is bound to the usbip-host driver. Please
remember you can not export a USB hub.

Mark the device of busid 3-3.2 as exportable:

    trois:# usbip --debug bind --busid 3-3.2
    ...
    usbip debug: usbip_bind.c:162:[unbind_other] 3-3.2:1.0 -> usb-storage
    ...
    bind device on busid 3-3.2: complete

    trois:# usbip list -l
    Local USB devices
    =================
    ...

     - busid 3-3.2 (04bb:0206)
	     3-3.2:1.0 -> usbip-host
    ...

---------------------------
	CLIENT SIDE
---------------------------
First, let's list available remote devices that are marked as
exportable on the host.

    deux:# insmod path/to/usbip-core.ko
    deux:# insmod path/to/vhci-hcd.ko

    deux:# usbip list --remote 10.0.0.3
    Exportable USB devices
    ======================
     - 10.0.0.3
	    1-1: Prolific Technology, Inc. : unknown product (067b:3507)
	       : /sys/devices/pci0000:00/0000:00:1f.2/usb1/1-1
	       : (Defined at Interface level) / unknown subclass / unknown protocol (00/00/00)
	       :  0 - Mass Storage / SCSI / Bulk (Zip) (08/06/50)

	1-2.2.1: Apple Computer, Inc. : unknown product (05ac:0203)
	       : /sys/devices/pci0000:00/0000:00:1f.2/usb1/1-2/1-2.2/1-2.2.1
	       : (Defined at Interface level) / unknown subclass / unknown protocol (00/00/00)
	       :  0 - Human Interface Devices / Boot Interface Subclass / Keyboard (03/01/01)

	1-2.2.3: OmniVision Technologies, Inc. : OV511+ WebCam (05a9:a511)
	       : /sys/devices/pci0000:00/0000:00:1f.2/usb1/1-2/1-2.2/1-2.2.3
	       : (Defined at Interface level) / unknown subclass / unknown protocol (00/00/00)
	       :  0 - Vendor Specific Class / unknown subclass / unknown protocol (ff/00/00)

	    3-1: Logitech, Inc. : QuickCam Pro 4000 (046d:08b2)
	       : /sys/devices/pci0000:00/0000:00:1e.0/0000:02:0a.0/usb3/3-1
	       : (Defined at Interface level) / unknown subclass / unknown protocol (00/00/00)
	       :  0 - Data / unknown subclass / unknown protocol (0a/ff/00)
	       :  1 - Audio / Control Device / unknown protocol (01/01/00)
	       :  2 - Audio / Streaming / unknown protocol (01/02/00)

Attach a remote USB device:

    deux:# usbip attach --host 10.0.0.3 --busid 1-1
    port 0 attached

Show the devices attached to this client:

    deux:# usbip port
    Port 00: <Port in Use> at Full Speed(12Mbps)
	   Prolific Technology, Inc. : unknown product (067b:3507)
	   6-1 -> usbip://10.0.0.3:3240/1-1  (remote bus/dev 001/004)
	   6-1:1.0 used by usb-storage
			  /sys/class/scsi_device/0:0:0:0/device
			  /sys/class/scsi_host/host0/device
			  /sys/block/sda/device

Detach the imported device:

    deux:# usbip detach --port 0
    port 0 detached


[Checklist]
    - See 'Debug Tips' on the project wiki.
	- http://usbip.wiki.sourceforge.net/how-to-debug-usbip
    - usbip-host.ko must be bound to the target device.
	- See /proc/bus/usb/devices and find "Driver=..." lines of the device.
    - Shutdown firewall.
	- usbip now uses TCP port 3240.
    - Disable SELinux.
    - If possible, compile your kernel with CONFIG_USB_DEBUG flag and try again.
    - Check the kernel and daemon messages.


[Contact]
    Mailing List: linux-usb@vger.kernel.org
