Using a remote host's USB port as local USB (Linux and Windows) [closed]

I have a USB device that reads data from a system and transfers them to the computer. I am wondering if it's possible to have a Linux single board PC (i.e. Raspberry Pi) to run a script and be a remote-server for my USB device and I can connect to that "remote-server"(Linux) through SSH or FTP or another protocol (over the Internet) and mount that USB port to my computer. Any software would do it, you know how terminal service connects the remote resources, and I need the same, but preferably on a Linux board.

My system is Windows 7, so I need to mount that remote-USB as a "local port" so the software thinks it's communicating locally, and it'll find the reader.


Solution 1:

There is an open source project called usbip that provides functionality to share and/or mount a remote USB device over an IP network (LAN/Internet).

There are also at least three commercial products that provide this functionality with better documentation and UI. I've included links to the commercial products at the end of this reply.

From the usbip web page:

  • http://usbip.sourceforge.net

To share USB devices between computers with their full functionality, USB/IP encapsulates "USB I/O messages" into TCP/IP payloads and transmits them between computers. Original USB device drivers and applications can be also used for remote USB devices without any modification of them. A computer can use remote USB devices as if they were directly attached

The usbip server process runs on Linux systems and clients are available for Linux and Windows - the project has apparently been around since 2005, and they've had a signed Windows client driver since 2011. In theory, depending on the repositories configured on your Raspberry Pi, you should be able to execute sudo aptitude install usbip to install the server-side drivers and application.

Note that if you use Ubuntu 14.10 (Utopic Unicorn) or newer, you do not need to install the usbip package: the usbip tools are part of the linux-tools-generic package, and the binaries are already available in /usr/lib/linux-tools-KERNEL-VERSION/.

A walkthrough tutorial on how to install and use usbip is available at HowToForge:

  • How to modify your GNU/Linux box to serve as a USB-over-IP server

The Windows client has advanced since the HowToForge tutorial and has a little more interface now instead of just a command-line tool.

Commercial USB-over-IP tools:

Fabula-Tech USB-over-Network - runs on Windows & Linux - trial available:

  • USB over Network

Eltima Software USB Network Gate - runs on Windows, Mac OS X, & Linux - trial available:

  • USB Network Gate Share USB over Ethernet for Windows

Incentives Pro/SimplyCore LLC USB Redirector - runs on Windows & Linux - apparently free for Linux server and a free Windows client is available:

  • USB Redirector for Linux - Share USB devices over the network on Linux