[Guide] RPi + Pisound as bluetooth speaker

Using a Raspbian 11 desktop OS, I made Pisound work as a Bluetooth stereo system connected to an amplifier and speakers. I made an Ansible playbook to automate this for future people.

Raspbian 11 and pulse audio

Configuration changes:

Tell device it should be a A2DP Bluetooth audio device.

Class = 0x20041C
DiscoverableTimeout = 0
sudo systemctl restart bluetooth

Tell pulse audio to load the bluez5 modules for source/sink

append to bottom
load-module module-bluez5-device
load-module module-bluez5-discover
systemctl --user restart pulseaudio.s*

Tell pulse audio to use the Pisound as the default sink.

pactl set-default-sink 1

Pair to phone from RPi…currently backwards, the normal pattern is to pair from the phone to RPi.

discoverable on
scan on
Find the MAC address of the device you want to pair
pair 88:54:1F:4D:4E:81
trust 88:54:1F:4D:4E:81

Tap phone and say yes to prompt from bluetoothctl.

That’s it!

Known states

  • After initial pairing from RPi and taping on phone PIN confirmation, connecting via phone works automatically for following sessions
  • Does not (yet) autoconnect like most bluetooth speakers
  • Logging in via SSH over Wifi broke the bluetooth audio connection with a bunch of these kernel errors [ 302.174856] Bluetooth: hci0: Frame reassembly failed (-84)
    • Sound stopped playing and the phone was still paired and playing.
    • Stop the phone, wait for 90 seconds and press play again worked like normal.
    • Likely a radio dropout or interference.

Kinda related, Teenage Engineering released a product that is a US $700 Bluetooth radio player with some wacky recording features and built in amplifier/speakers.