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).
Create a usbipd server and nice gui client interface
To make the experience fit your profile, pick a username and tell us what interests you.
We found and based on your interests.
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.debbinary-package - 605.06 kB - 03/20/2021 at 21:21 |
|
|
qusbipserver_amd64.debbinary-package - 31.43 kB - 03/20/2021 at 21:19 |
|
|
qusbipserver_armel.debbinary-package - 31.46 kB - 03/20/2021 at 21:19 |
|
|
qusbipserver_armhf.debbinary-package - 30.95 kB - 03/20/2021 at 21:19 |
|
|
qusbipserver_arm64.debbinary-package - 29.12 kB - 03/20/2021 at 21:19 |
|
Found out that Ubuntu and Debian have diverged in base packages, updated the debian control and added the armel based docker for cross compiling.
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
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 The github page 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, rpi 1 is armel, 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
Create an account to leave a comment. Already have an account? Log In.
I hope this project revives the USB/IP Project. I'd like to use this for remote control of cameras for live stream and time lapse in an Open Source Film Studio - https://docs.google.com/presentation/d/1-Kwsd3S_4gD2LdPW7G7RkY3GpBdTN23PTxGbvYSk5VM/edit#slide=id.ga6a0c4e6d6_0_0
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?
When a usb device is attached a udev rule gets run, here the example of where I setup a udev monitor on the server side and the server would then go and send attached clients the message
https://github.com/dicetrash/qusbipserver/blob/master/udevmonitor.cpp#L14
There are a couple windows clients with usbip but for windows they require signed drivers so thats generally something nobody wants to sink giving microsoft their money into.
The standard usbip message protocol contains info about what standard is attached.
also yes I too chose multicast, no need for dns just general broadcast and discovery
https://github.com/dicetrash/qusbipserver/blob/master/grouplistener.cpp#L80
Thanks for the response. There are a couple of Windows clients that have got their builds signed, I think. So submitting a feature request there seems like the best approach.
Become a member to follow this project and never miss any updates
Have you thought about making a second Pi zero to act like a client, forwarding the usb/ip atach to a physical usb port on the client?