Close
0%
0%

USB/IP EZ

Create a usbipd server and nice gui client interface

Public Chat
Similar projects worth following
This project has two parts with three goals

The server side:
The first part of the server software is to create a sort of usbipd like server but with automatic binding or client side controlled binding, the intent is make it easy for users to install on embedded linux devices such as the orange pi zero or rpi zero w that can be on hand.
The second server goal is to create an open hardware (but sold ready to go) device without linux that is specialized in automatically binding usb devices plugged into it and exposing them over its server.

And a client side:
The client is a GUI application that when run automatically makes sure that the linux kernel modules are added, and then uses multicast to find server devices, it then attaches those server usb devices automatically or with gui client control.

This project is opened to all to assist, just make merge requests to the relevant github projects.

I have a Qt WebEngine app with react gui and a js bridge that runs as a usbip client, on the server side is also a qt app just a server to add all the network control parts that I found I wanted (such as multicast discovery). 

qusbip.deb

an amd64 (or intel64) debian client package

binary-package - 605.14 kB - 02/17/2020 at 17:37

Download

qusbipserver_armhf.deb

the armhf debian server package

binary-package - 30.92 kB - 02/17/2020 at 17:37

Download

  • Hardware discovery

    Dice Wasser02/03/2020 at 08:56 0 comments

    Started looking into my dream hardware for this project,
    it would probably be an AllWinner A13 based sbc with an embedded rtl8192cu on one of the usb bus and just a host connector on the other.  The reason I went with the RTL8192CU so far is because not many people like the allwinner network stack on the orange pi zero, also I like the low profile quad flat pack because I can solder it myself.
    I was looking into STM32F7 and it only has 1 USB HS bus (and 1 FS bus) wile the A13 has 2 HS buses.
    Also I wanted a USB based wifi stack because SDIO bus based stacks does not reach wifi speeds.
    The other option being rocketchip with usb 3 as a future iteration

View project log

  • 1
    How to build

    So you need a host (one that you physically plug the usb device in) and a client (where you share the device to)

    on the host you install the server software
    Go to https://github.com/dicetrash/qusbipserver/releases/tag/0.1 and download the correct package for your hardware

    sudo apt install qusbipserver_<arch>.deb

    where arch is the architecture of your host (raspberry pi 2 is armhf, no armel builds, raspberry pi 3 & 4 is usually arm64, and a desktop computer is generally amd64

    and on the client (which I only built for intel/amd 64 bit) go to https://github.com/dicetrash/qusbip/releases and load either the debian package if you have debian based distro (like ubuntu) or arch.  You should generally be familiar with your package manager
    so

    sudo pacman -U qusbip.pkg.tar.gz
    on arch based and
    sudo apt install ./qusbip.deb
    on debian based distros

    for debian based I start the service for you
    for arch then run sudo systemctl start qusbipserver

View all instructions

Enjoy this project?

Share

Discussions

Rogan Dawes wrote 07/13/2020 at 15:31 point

I like this project, I'm actually looking to do something related, so I thought bouncing ideas around could be useful.

From my understanding, the standard Linux usbip server is actually sufficient, if you add some udev rules to bind and unbind devices as they are plugged and removed. A simple match on the bus/port intended to be relayed should be enough, from what I can tell. The only complexity is handling the different USB standards, as USB 1 and USB 2 present as different busses. Not a big deal, of course. Advertising can probably be achieved with simple Avahi/Bonjour multicast DNS-Service Discovery advertisements.

The more interesting/difficult side is the client, I think. My requirement is for a Windows client, but the idea's should be cross platform.

I'm less concerned about a GUI and autodiscovery, and more interested in the automatic binding of devices as they are added to the server. It seems to me that once the usbip client is connected to the server, it could simply poll periodically for new or removed devices (`usbip list -r serverip -p`) and update its bindings. Is this essentially what you implemented in your client? 

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates