⚠️ Note thatusairb
is currently a learning project, and that the features described here do not yet work. I keep a development log on my blog.
The goal of usairb
(Universal Serial Air-Bus) is to transform
any embedded Linux device with access to the Internet into a multiplexing
transmitter for USB hubs: connect gadgets to it and use them remotely from your
desktop.
To achieve this, usairb
uses USB/IP. USB/IP follows a server-client
architecture where the server or host is the device broadcasting its USB
gadgets, and the client can connect to them. USB/IP is available as a native
Kernel module on Linux for the host, and has multi-platform client programs.
While all planned features of usairb
are achievable using just USB/IP,
usairb
aims to provide a no-frills experience, potentially offering both a
client graphical user interface as well as very simple interface for the host
device.
To build the project, run make
.
Dependencies:
make
,gcc
, probably other base utilities,usbip
To run the USB/IP server, you'll need:
sudo modprobe usbip_host
sudo systemctl start usbipd.service
To run usairb
:
sudo ./target/usairb
To see exported devices:
sudo usbip list -r localhost
To generate compile_commands.json
for clangd
:
make compile_commands.json
usbutils
provideslsusb
, which will be useful to debugusairb
.bear
will allow you to runmake compile_commands.json
, which makes the Clang LSP recognize items in your project.