(Created page with "Dear Fellow Marketer, If you're serious about SEO, and aren't using Wiki Backlinks in your current offsite linking scheme, you're most likely miles behind your competition. W...") |
(Created page with " == USB/IP: USB device sharing over IP == The USB/IP project allows sharing of USB devices over an IP network. It encapsulates USB I/O request packets and transmits them over...") |
||
Line 1: | Line 1: | ||
− | |||
− | + | == USB/IP: USB device sharing over IP == | |
− | + | The USB/IP project allows sharing of USB devices over an IP network. It encapsulates USB I/O request packets and transmits them over IP using TCP port 3240. | |
− | + | ||
− | + | * [http://usbip.sourceforge.net/ USB/IP Home Page] | |
− | + | == Kernel Source == | |
− | + | USBIP has been moved into the staging directory of the kernel tree since version 2.6.28. The usermode applications are in the drivers/staging/usbip/userspace folder. | |
− | + | The latest version can be obtained from the kernel source or from [http://git.kernel.org/?p=linux/kernel/git/next/linux-next.git;a=tree;f=drivers/staging/usbip here] | |
− | + | To compile in server support into your kernel, enable the following at the kernel config menu : | |
− | + | <PRE> | |
+ | Device Drivers -> Staging drivers -> USB/IP support | ||
+ | Device Drivers -> Staging drivers -> USB/IP support -> Host driver | ||
+ | </PRE> | ||
− | + | If you would like to use the same kernel as the client, additionally enable : | |
− | + | ||
− | + | <PRE> | |
+ | Device Drivers -> Staging drivers -> USB/IP support -> VHCI hcd | ||
+ | </PRE> | ||
− | + | == Cross Compiling the Userland Utilities == | |
− | + | The USB/IP Utilities require [http://linux-diag.sourceforge.net/Sysfsutils.html sysfsutils] and [http://developer.gnome.org/glib/ glib] 2.6.0+ as dependencies. | |
− | + | === sysfsutils === | |
− | + | ||
− | + | ||
− | + | ||
− | + | Download sysfsutils and cross compile for ARM assuming your ARM cross compiler is located at /opt/arm-2011.09/ | |
− | + | <PRE> | |
− | + | wget http://sourceforge.net/projects/linuxdiag/files/sysfsutils/2.1.0/sysfsutils-2.1.0.tar.gz | |
− | + | tar -xzf sysfsutils-2.1.0.tar.gz | |
− | + | cd sysfsutils-2.1.0 | |
− | + | ./configure \ | |
− | + | --target=arm-none-linux-gnueabi \ | |
+ | --host=arm-none-linux-gnueabi \ | ||
+ | --prefix=/opt/arm-2011.09/arm-none-linux-gnueabi | ||
+ | make | ||
+ | make install | ||
+ | </PRE> | ||
− | + | === glib === | |
− | + | Download glib and cross compile for ARM: | |
− | + | <PRE> | |
+ | wget http://ftp.gnome.org/pub/GNOME/sources/glib/2.18/glib-2.18.4.tar.gz | ||
+ | tar -xzf glib-2.18.4.tar.gz | ||
+ | cd glib-2.18.4 | ||
+ | </PRE> | ||
− | ( | + | Create the following file (arm.cache) : |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
+ | <PRE> | ||
+ | glib_cv_long_long_format=ll | ||
+ | glib_cv_stack_grows=no | ||
+ | glib_cv_sane_realloc=yes | ||
+ | glib_cv_have_strlcpy=no | ||
+ | glib_cv_va_val_copy=yes | ||
+ | glib_cv_rtldglobal_broken=no | ||
+ | glib_cv_uscore=no | ||
+ | glib_cv_monotonic_clock=no | ||
+ | ac_cv_func_nonposix_getpwuid_r=no | ||
+ | ac_cv_func_posix_getpwuid_r=no | ||
+ | ac_cv_func_posix_getgrgid_r=no | ||
+ | glib_cv_use_pid_surrogate=yes | ||
+ | ac_cv_func_printf_unix98=no | ||
+ | ac_cv_func_vsnprintf_c99=yes | ||
+ | ac_cv_func_realloc_0_nonnull=yes | ||
+ | ac_cv_func_realloc_works=yes | ||
+ | </PRE> | ||
− | + | <PRE> | |
+ | ./configure \ | ||
+ | --target=arm-none-linux-gnueabi \ | ||
+ | --host=arm-none-linux-gnueabi \ | ||
+ | --prefix=/opt/arm-2011.09/arm-none-linux-gnueabi \ | ||
+ | --cache-file=arm.cache | ||
+ | make | ||
+ | make install | ||
+ | </PRE> | ||
− | + | === USB/IP userspace === | |
− | + | With our dependencies out of the way, we can finally compile our userland utilities. The userland utilities can be found in the kernel source. | |
− | + | <PRE> | |
− | + | cd drivers/staging/usbip/userspace | |
+ | ./autogen.sh | ||
+ | PACKAGE_CFLAGS="-I/opt/arm-2011.09/arm-none-linux-gnueabi/include/glib-2.0 -I/opt/arm-2011.09/arm-none-linux-gnueabi/lib/glib-2.0/include" | ||
+ | ./configure \ | ||
+ | --target=arm-none-linux-gnueabi \ | ||
+ | --host=arm-none-linux-gnueabi \ | ||
+ | --prefix=/home/cpeacock/export/rootfs-f12 | ||
+ | make | ||
+ | make install | ||
+ | </PRE> | ||
− | + | == Using USBIP == | |
− | + | ||
− | + | === Server === | |
− | + | ||
− | + | On the server side, you must start the daemon and export any devices you want to share. | |
− | [http:// | + | |
+ | To start the daemon : | ||
+ | |||
+ | <PRE> | ||
+ | # /sbin/usbipd -D | ||
+ | </PRE> | ||
+ | |||
+ | To list the devices to export : | ||
+ | |||
+ | <PRE> | ||
+ | # ./usbip list -l | ||
+ | Local USB devices | ||
+ | ================= | ||
+ | - busid 1-1 (05e3:0608) | ||
+ | 1-1:1.0 -> hub | ||
+ | |||
+ | - busid 1-1.1 (05e3:0726) | ||
+ | 1-1.1:1.0 -> usb-storage | ||
+ | |||
+ | - busid 1-1.2 (045e:0750) | ||
+ | 1-1.2:1.0 -> usbhid | ||
+ | 1-1.2:1.1 -> usbhid | ||
+ | |||
+ | - busid 1-1.3 (046d:080a) | ||
+ | 1-1.3:1.0 -> unknown | ||
+ | 1-1.3:1.1 -> unknown | ||
+ | 1-1.3:1.2 -> unknown | ||
+ | 1-1.3:1.3 -> unknown | ||
+ | </PRE> | ||
+ | |||
+ | And to export a device (.e.g the HID device): | ||
+ | |||
+ | <PRE> | ||
+ | ./usbip bind -b 1-1.2 | ||
+ | </PRE> | ||
+ | |||
+ | === Client === | ||
+ | |||
+ | A Windows Client can be downloaded from [http://sourceforge.net/projects/usbip/files/usbip_windows/ here] | ||
+ | |||
+ | Follow the instructions called USAGE on how to install and use. |
The USB/IP project allows sharing of USB devices over an IP network. It encapsulates USB I/O request packets and transmits them over IP using TCP port 3240.
USBIP has been moved into the staging directory of the kernel tree since version 2.6.28. The usermode applications are in the drivers/staging/usbip/userspace folder.
The latest version can be obtained from the kernel source or from here
To compile in server support into your kernel, enable the following at the kernel config menu :
Device Drivers -> Staging drivers -> USB/IP support Device Drivers -> Staging drivers -> USB/IP support -> Host driver
If you would like to use the same kernel as the client, additionally enable :
Device Drivers -> Staging drivers -> USB/IP support -> VHCI hcd
The USB/IP Utilities require sysfsutils and glib 2.6.0+ as dependencies.
Download sysfsutils and cross compile for ARM assuming your ARM cross compiler is located at /opt/arm-2011.09/
wget http://sourceforge.net/projects/linuxdiag/files/sysfsutils/2.1.0/sysfsutils-2.1.0.tar.gz tar -xzf sysfsutils-2.1.0.tar.gz cd sysfsutils-2.1.0 ./configure \ --target=arm-none-linux-gnueabi \ --host=arm-none-linux-gnueabi \ --prefix=/opt/arm-2011.09/arm-none-linux-gnueabi make make install
Download glib and cross compile for ARM:
wget http://ftp.gnome.org/pub/GNOME/sources/glib/2.18/glib-2.18.4.tar.gz tar -xzf glib-2.18.4.tar.gz cd glib-2.18.4
Create the following file (arm.cache) :
glib_cv_long_long_format=ll glib_cv_stack_grows=no glib_cv_sane_realloc=yes glib_cv_have_strlcpy=no glib_cv_va_val_copy=yes glib_cv_rtldglobal_broken=no glib_cv_uscore=no glib_cv_monotonic_clock=no ac_cv_func_nonposix_getpwuid_r=no ac_cv_func_posix_getpwuid_r=no ac_cv_func_posix_getgrgid_r=no glib_cv_use_pid_surrogate=yes ac_cv_func_printf_unix98=no ac_cv_func_vsnprintf_c99=yes ac_cv_func_realloc_0_nonnull=yes ac_cv_func_realloc_works=yes
./configure \ --target=arm-none-linux-gnueabi \ --host=arm-none-linux-gnueabi \ --prefix=/opt/arm-2011.09/arm-none-linux-gnueabi \ --cache-file=arm.cache make make install
With our dependencies out of the way, we can finally compile our userland utilities. The userland utilities can be found in the kernel source.
cd drivers/staging/usbip/userspace ./autogen.sh PACKAGE_CFLAGS="-I/opt/arm-2011.09/arm-none-linux-gnueabi/include/glib-2.0 -I/opt/arm-2011.09/arm-none-linux-gnueabi/lib/glib-2.0/include" ./configure \ --target=arm-none-linux-gnueabi \ --host=arm-none-linux-gnueabi \ --prefix=/home/cpeacock/export/rootfs-f12 make make install
On the server side, you must start the daemon and export any devices you want to share.
To start the daemon :
# /sbin/usbipd -D
To list the devices to export :
# ./usbip list -l Local USB devices ================= - busid 1-1 (05e3:0608) 1-1:1.0 -> hub - busid 1-1.1 (05e3:0726) 1-1.1:1.0 -> usb-storage - busid 1-1.2 (045e:0750) 1-1.2:1.0 -> usbhid 1-1.2:1.1 -> usbhid - busid 1-1.3 (046d:080a) 1-1.3:1.0 -> unknown 1-1.3:1.1 -> unknown 1-1.3:1.2 -> unknown 1-1.3:1.3 -> unknown
And to export a device (.e.g the HID device):
./usbip bind -b 1-1.2
A Windows Client can be downloaded from here
Follow the instructions called USAGE on how to install and use.