NullMagic2/csr8510

Rust userspace USB transport for CSR8510 Bluetooth adapters, using shared Magic USB and BlueZ.

Rust

0

4 commits

updated Oct 14, 2026

See the code

See what people are saying

SourceMessageScoreDate

New Bluetooth dongle drivers: TP-Link UB500, CSR8510, and Magic Hotspot (r/opensource)

Hi, everyone, as you know, I have been releasing Linux drivers for a while. When using USB dongles, it has come to attention the CSR8510 (a specific CSR Bluetooth dongle clone). In my case, my device would simply be detected as a generic CSR clone and not work at all. The TP-Link UB500, on the…

18

Oct 14, 2026

README

CSR8510 Rust USB driver

Rust userspace Bluetooth transport for CSR8510 A10 (0a12:0001), using libusb and Linux VHCI. BlueZ continues to handle pairing, Bluetooth profiles and networking.

Current release: 1.1.2, 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.

What it does

  • Claims one explicitly selected adapter, leaving other adapters available.
  • Validates cached USB descriptors before ownership transfer, allowing recovery when CSR firmware stops answering descriptor requests.
  • Relays HCI commands, events, ACL data and SCO voice records through Linux VHCI.
  • Waits through device swaps on the selected port when run through the service.
  • Returns only previously owned interfaces to btusb on stop, when possible.
  • Uses the distro's Realtek firmware for UB500 initialization.

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.

Build

Requires Rust with edition 2024 support, Cargo, a C linker, libusb 1.0 and libzstd runtimes.

./build.sh
./bin/csr8510 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.

Use

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.

License

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.

bluetooth
linux
rust

NullMagic2/csr8510

Rust userspace USB transport for CSR8510 Bluetooth adapters, using shared Magic USB and BlueZ.

Rust

0

4 commits

updated Oct 14, 2026

See the code

See what people are saying

SourceMessageScoreDate

New Bluetooth dongle drivers: TP-Link UB500, CSR8510, and Magic Hotspot (r/opensource)

Hi, everyone, as you know, I have been releasing Linux drivers for a while. When using USB dongles, it has come to attention the CSR8510 (a specific CSR Bluetooth dongle clone). In my case, my device would simply be detected as a generic CSR clone and not work at all. The TP-Link UB500, on the…

18

Oct 14, 2026

README

CSR8510 Rust USB driver

Rust userspace Bluetooth transport for CSR8510 A10 (0a12:0001), using libusb and Linux VHCI. BlueZ continues to handle pairing, Bluetooth profiles and networking.

Current release: 1.1.2, 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.

What it does

  • Claims one explicitly selected adapter, leaving other adapters available.
  • Validates cached USB descriptors before ownership transfer, allowing recovery when CSR firmware stops answering descriptor requests.
  • Relays HCI commands, events, ACL data and SCO voice records through Linux VHCI.
  • Waits through device swaps on the selected port when run through the service.
  • Returns only previously owned interfaces to btusb on stop, when possible.
  • Uses the distro's Realtek firmware for UB500 initialization.

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.

Build

Requires Rust with edition 2024 support, Cargo, a C linker, libusb 1.0 and libzstd runtimes.

./build.sh
./bin/csr8510 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.

Use

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.

License

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.

bluetooth
linux
rust