Rust userspace USB transport for TP-Link UB500 Bluetooth adapters, using shared Magic USB and BlueZ.
Rust
1
4 commits
updated Oct 14, 2026
Rust userspace Bluetooth transport for TP-Link UB500 (2357:0604), using libusb and Linux VHCI.
BlueZ continues to handle pairing, Bluetooth profiles and networking.
Current release: 0.1.3, using the shared magic-usb 0.1.3 transport.
This repository includes the complete shared library and CSR client workspace,
so it builds without checking out another repository. The shared transport is
also included in Magic Hotspot.
btusb on stop, when possible.No kernel patch, CONFIG_RUST, global btusb blacklist or replacement BlueZ
stack is required. The TP-Link implementation here is the current userspace
transport, not the earlier experimental UB500 kernel module.
Requires Rust with edition 2024 support, Cargo, a C linker, libusb 1.0 and libzstd runtimes.
./build.sh
./bin/magic-usb check
The workspace builds bin/magic-usb and bin/csr8510. The CSR entry point
restricts ownership to CSR devices; the generic entry point supports both IDs.
Source builds are offline and locked. See operating notes.
For integrated installation, use the distro-matching package from
Magic Hotspot releases.
It includes both clients and [email protected].
Select your adapter's USB port using lsusb -t and /sys/bus/usb/devices.
The following uses 1-4 only as an example:
sudo systemctl start [email protected]
systemctl status [email protected]
sudo systemctl stop [email protected]
Installation does not enable the service at boot. Startup is an explicit choice.
Starting takes ownership of that adapter; stopping restores its prior btusb
bindings when possible. Existing connections end when an adapter is removed or
ownership changes. Do not run two clients against the same adapter.
The shared driver and CSR client are MIT licensed; see COPYING. Distro firmware is not bundled in this repository.
Standalone .deb packages are available for Ubuntu, Debian and Linux Mint. See PACKAGING.md for supported distributions and package details.
Rust userspace USB transport for TP-Link UB500 Bluetooth adapters, using shared Magic USB and BlueZ.
Rust
1
4 commits
updated Oct 14, 2026
Rust userspace Bluetooth transport for TP-Link UB500 (2357:0604), using libusb and Linux VHCI.
BlueZ continues to handle pairing, Bluetooth profiles and networking.
Current release: 0.1.3, using the shared magic-usb 0.1.3 transport.
This repository includes the complete shared library and CSR client workspace,
so it builds without checking out another repository. The shared transport is
also included in Magic Hotspot.
btusb on stop, when possible.No kernel patch, CONFIG_RUST, global btusb blacklist or replacement BlueZ
stack is required. The TP-Link implementation here is the current userspace
transport, not the earlier experimental UB500 kernel module.
Requires Rust with edition 2024 support, Cargo, a C linker, libusb 1.0 and libzstd runtimes.
./build.sh
./bin/magic-usb check
The workspace builds bin/magic-usb and bin/csr8510. The CSR entry point
restricts ownership to CSR devices; the generic entry point supports both IDs.
Source builds are offline and locked. See operating notes.
For integrated installation, use the distro-matching package from
Magic Hotspot releases.
It includes both clients and [email protected].
Select your adapter's USB port using lsusb -t and /sys/bus/usb/devices.
The following uses 1-4 only as an example:
sudo systemctl start [email protected]
systemctl status [email protected]
sudo systemctl stop [email protected]
Installation does not enable the service at boot. Startup is an explicit choice.
Starting takes ownership of that adapter; stopping restores its prior btusb
bindings when possible. Existing connections end when an adapter is removed or
ownership changes. Do not run two clients against the same adapter.
The shared driver and CSR client are MIT licensed; see COPYING. Distro firmware is not bundled in this repository.
Standalone .deb packages are available for Ubuntu, Debian and Linux Mint. See PACKAGING.md for supported distributions and package details.