Skip to content

Bluetooth Adapters

The bridge streams A2DP audio to every configured speaker simultaneously. Each SBC stream consumes ~345 kbps of Bluetooth bandwidth, so adapter choice directly affects connection stability, range, and the number of speakers you can drive from a single controller.

CriterionWhy it matters
Bluetooth 5.0+4× LE range, better coexistence when juggling multiple connections
Chipset with native btusb supportPlug-and-play on HAOS without sideloading drivers
Firmware shipped in linux-firmwareHAOS is immutable — you cannot install extra packages
USB 2.0 nano form factorClean Proxmox USB passthrough, doesn’t block adjacent ports
A2DP + SBCMandatory for audio streaming
Stable reconnect behaviorHeadless system with no UI for manual recovery

One Bluetooth adapter supports up to 7 active ACL links, but A2DP streaming is bandwidth-intensive. For reliable operation:

SpeakersRecommended adapters
1–31 adapter
4–52 adapters (2–3 speakers each)
6+3+ adapters, one per 2–3 speakers

All adapters below use the Realtek RTL8761B chipset — the de facto standard for BT 5.0 USB dongles on Linux. The btusb driver recognizes them from kernel 5.8+, and the required firmware (rtl_bt/rtl8761bu_fw.bin) is bundled with linux-firmware since 2020.

Section titled “1. TP-Link UB500 (v1 / v2) — Best overall”
SpecValue
ChipsetRealtek RTL8761B
Bluetooth5.0 (BR/EDR + LE)
Linux driverbtusb (kernel ≥ 5.8)
USB ID2357:0604
Range~20 m (Class 1.5)
Price~$12–15

The most widely tested BT 5.0 nano dongle on Linux. Firmware is included in every modern linux-firmware release, so HAOS picks it up immediately after USB passthrough.

SpecValue
ChipsetRealtek RTL8761B
Bluetooth5.0 (BR/EDR + LE)
Linux driverbtusb (kernel ≥ 5.14 by USB ID)
USB ID0b05:190e
Range~10 m (Classic / A2DP)
Price~$15–20

Same RTL8761B chipset in a slightly better-shielded ASUS package. Over 890 reports on linux-hardware.org and well-documented in the Home Assistant community.

SpecValue
ChipsetRealtek RTL8761B
Bluetooth5.0 (BR/EDR + LE)
Range~40 m (LE), ~10 m (Classic)
Price~$19

Comes with a 2-year warranty and lifetime technical support. The product page says “incompatible with Linux”, but the underlying RTL8761B chipset works perfectly through btusb.

SpecValue
ChipsetRealtek RTL8761BUV
Bluetooth5.1
Price~$10–12

An evolution of the RTL8761B with BT 5.1 direction finding (not critical for A2DP but a nice-to-have). Compatible btusb driver; may require a slightly newer linux-firmware for the firmware blob.

5. Zexmte / MPOW BT 5.0 Nano — Budget pick

Section titled “5. Zexmte / MPOW BT 5.0 Nano — Budget pick”
SpecValue
ChipsetRealtek RTL8761B (nominal)
Bluetooth5.0
Price~$8–10

Cheapest RTL8761B option. Good if you need to buy several adapters at once. Verify the USB ID after receiving — some batches may ship a different chipset.

#ModelChipsetBTLinux kernelPriceRating
1TP-Link UB500 v1/v2RTL8761B5.0≥ 5.8~$12⭐⭐⭐⭐⭐
2ASUS USB-BT500RTL8761B5.0≥ 5.14~$17⭐⭐⭐⭐⭐
3Plugable USB-BT5RTL8761B5.0≥ 5.8~$19⭐⭐⭐⭐
4EDUP EP-B3536RTL8761BUV5.1≥ 5.8~$11⭐⭐⭐⭐
5Zexmte BT 5.0RTL8761B5.0≥ 5.8~$9⭐⭐⭐

Raspberry Pi boards include an on-board Broadcom Bluetooth controller. It works for basic testing but has significant limitations for multi-speaker audio streaming:

BoardChipsetBT versionMax A2DP streamsNotes
Pi 4 Model BBCM4345C0 (CYW43455)5.0 (BLE)1Shared antenna with WiFi, limited A2DP bandwidth
Pi 5CYW43455 variant5.0 (BLE)1Same chipset lineage, same single-stream limit
Pi 3 Model B+BCM434384.21Older BT version, lower throughput

Software workarounds for adapter / BlueZ regressions

Section titled “Software workarounds for adapter / BlueZ regressions”

The bridge ships several experimental toggles that target specific kernel / BlueZ / PulseAudio behaviors rather than a particular hardware model. They live in Configuration → Bluetooth → Experimental features and stay hidden until you turn on Show experimental features on the General tab. They are described in detail with screenshots on the Web UI page; the table below is a quick map from “what the adapter is doing” to “which switch is likely to help”:

SymptomToggle
Speaker connects but PulseAudio reports no sink (BlueZ 5.86 dual-role regression, bluez/bluez#1922)EXPERIMENTAL_A2DP_SINK_RECOVERY_DANCE
Sink appears intermittently or only after a manual replugEXPERIMENTAL_PA_MODULE_RELOAD
The whole adapter goes silent under load and bridge cannot recover itEXPERIMENTAL_ADAPTER_AUTO_RECOVERY (HCI mgmt reset → rfkill → USB rebind)
Cannot pair a second speaker on a single-adapter setup while the first one is streamingPause other speakers on same adapter in the Scan modal
Speaker shows no SSP confirmation at all and bridge waits indefinitelyNoInputNoOutput pair agent in the Scan modal
HFP/HSP keeps showing up in pair logs even though the bridge only plays A2DPleave ALLOW_HFP_PROFILE off (default)

Treat these as targeted painkillers. They are not meant to be turned on preemptively — most adapters and most kernels do not need them, and several of them require a bridge restart to take effect.

Adapter / chipsetProblem
CSR8510 A10BT 4.0, limited range (~10 m), aging silicon
Broadcom BCM20702BT 4.0, firmware-loading issues on immutable systems
Qualcomm QCA61x4Needs proprietary firmware, unstable with bluez
TP-Link UB500 v3BT 5.4 with a different chipset — HAOS compatibility unconfirmed
Any WiFi + BT comboConflicts with existing WiFi, complex USB passthrough
BT 5.2+ LE Audio donglesLC3 codec is not yet supported by PulseAudio 17

If you are upgrading from the older CSR8510 A10 adapters:

  1. Purchase 2× TP-Link UB500 v1/v2 (or any RTL8761B dongle above).
  2. Proxmox: update USB device mappings to the new VID:PID.
  3. HAOS: the adapters are recognized automatically (btusb + linux-firmware).
  4. Verify with bluetoothctl list — you should see two controllers.
  5. Update adapter MAC addresses in the bridge configuration (hci0 / hci1).
  6. Re-pair each speaker and test A2DP playback.
  7. Monitor reconnect stability over 24 hours before considering the migration complete.

A typical two-adapter setup for 4–5 speakers:

Proxmox Host
├── USB Mapping "Audio" → TP-Link UB500 #1 (hci0) → 2–3 speakers
├── USB Mapping "BT2" → TP-Link UB500 #2 (hci1) → 2 speakers
└── HAOS VM
└── Sendspin BT Bridge
├── BluetoothManager (hci0)
└── BluetoothManager (hci1)

See Devices & Adapters for adapter naming, binding speakers to specific controllers, and managing the device fleet.