#
# 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

    - 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
