⚠️ Note thatusairbis 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.serviceTo run usairb:
sudo ./target/usairbTo see exported devices:
sudo usbip list -r localhostTo generate compile_commands.json for clangd:
make compile_commands.jsonusbutilsprovideslsusb, which will be useful to debugusairb.bearwill allow you to runmake compile_commands.json, which makes the Clang LSP recognize items in your project.