Ton über Bluetooth ausgeben
Recht simpel: Bluetooth-Box / Bluetooth-Kopfhörer mit Raspberry Pi verbinden
In diesem Beitrag zeige ich, wie man mittels einem schlichten, leichtgewichtigen Audio-Server die Tonausgabe des Raspberry Pi auch über Bluetooth-Kopfhörer bzw. Bluetooth-Boxen ausgeben kann.
Zunächst: Ich nutze meinen Raspberry Pi headless. Will sagen: Ich habe keine grafische Benutzeroberfläche installiert – weil ich an diesem gar keinen Monitor betreibe. Alles läuft minimalistisch via Konsole bzw. SSH ab.
Dennoch möchte ich die Audio-Ausgabe auch auf meinen Bluetooth-Kopfhörern bzw. auf meiner Bluetooth-Box erhalten. Vermutlich gelingt ein Koppeln hier via einer opulenten grafischen Benutzeroberfläche leicht und out of the box. Bei mir ist dies nun nicht der Fall. Ich nutze als Betriebssystem das sehr schlanke und stromsparende DietPi.
Sowohl meinen Bluetooth-Kopfhörer wie auch meinen Bluetooth-Lautsprecher kann ich problemlos am Raspberry Pi (ohne grafische Oberfläche) nutzen – sogar parallel, allerdings mit leichtem Versatz.
Um den Ton vom Raspberry Pi nun via Bluetooth-Signal auf solche Hardware ausgeben zu können, muss eine kleine Audio-Server-Software installiert werden. Ansonsten ließen sich derlei Geräte zwar koppeln – aber nicht verbinden: Das Betriebssystem wüsste nichts damit anzufangen. Der minimalistischste Weg geht sicherlich über den kleinen Audio-Server BlueAlsa. Der kann nicht viel. Aber er kann das Tonsignal via Bluetooth durchleiten. Mehr benötige ich hier nicht.
Zunächst prüfen, ob Bluetooth überhaupt aktiv ist
Zunächst prüfen wir aber, ob Bluetooth auf dem Raspberry Pi überhaupt aktiviert ist. Falls man (aus Effizienzgründen) irgendwann einmal Bluetooth in der /boot/firmware/config.txt deaktiviert hatte, sollte man dies nun natürlich rückgängig machen.
Nun (ggf. nach einem Neustart) prüfen wir in der Konsole via rfkill list, ob Bluetooth dort als deaktiviert angezeigt wird. Wenn nein, müsste man es aktivieren: sudo rfkill unblock bluetooth.
Jetzt sollte man noch hciconfig aufrufen und wenn dort irgedendetwas mit „DOWN“ vermerkt ist, sollte man Bluetooth mit sudo hciconfig hci0 up aktivieren.
Es schadet nicht, wenn man den Pi nun noch einmal neu startet.
BlueALSA installieren
Zunächst das obligatorische sudo apt update, um die Paketlisten zu aktualisieren. Mit sudo apt install bluez-alsa-utils installieren und aktivieren wir nun den schlanken Audioserver ›BlueALSA‹.
Erst wenn dieser Server läuft (Test via systemctl status bluealsa) kann eine z. B. Bluetooth-Box gekoppelt- bzw. verbunden werden. Ansonsten würde dieser Vorgang beim Verbinden abbrechen. Aber da dieser Service nun läuft, kann es weiter gehen:
Audio-Bluetooth-Gerät koppeln und verbinden
Nun haben wir den nötigen Rückhalt. Jetzt können wir zum Koppeln und Verbinden der Box oder des Kopfhörers via Konsole das kleine Programm bluetoothctl starten.
➜ Zunächst aktivieren wir am Bluetooth-Gerät den Kopplungsmodus (blinkende LED oder so ähnlich).
Dann in der Konsole (nacheinander):
agent on default-agent scan on
Nach Eingabe von „scan on“ sucht der Raspberry alle verfügbaren Bluetooth-Geräte in der Nähe.
Bei mir wurde dann auch schnell meine Anker-Soundbox gefunden – und zwar in Form der s. g. MAC-Adresse: 08:EB:ED:61:B3:3C
Diese jeweilige (und individuelle) MAC-Adressse sollte man sich nun notieren bzw. aus dem Protokoll kopieren.
Denn nun gibt man (z. B.) nacheinander ein:
pair 08:EB:ED:61:B3:3C trust 08:EB:ED:61:B3:3C connect 08:EB:ED:61:B3:3C exit
Hoffentlich kommt nach „connect“ keine Fehlermeldung. Es gäbe sie, wenn man vorher ›BlueALSA‹ nicht installiert hätte. Doch eigentlich müsste eine Verbindung nun funktioniert haben und die Bluetooth-Box müsste ebenfalls ein positives „Connect“-Zeichen von sich geben.
Das Verbinden selbst reicht aber noch nicht. Wir müssen dem Betriebssystem ja noch mitteilen, dass es nun eine neue Soundkarte gibt:
Neue, virtuelle Soundkarte eintragen
Via sudo nano /etc/asound.conf tragen wir nun eine neue „Soundkarte“ ein – z. B.:
# Anker Box
pcm.bt_anker {
type plug
slave.pcm {
type bluealsa
device "08:EB:ED:61:B3:3C"
profile "a2dp"
}
}
# Kopfhörer
pcm.bt_headphone {
type plug
slave.pcm {
type bluealsa
device "B0:38:E2:35:4D:45"
profile "a2dp"
}
}
ctl.bluealsa {
type bluealsa
}Man beachte hier unbedingt die korrekte MAC-Adresse. Hatte man mehrere Geräte gekoppelt bzw. verbunden, kann man entsprechend mehrere dieser Einträge hier anlegen (wie beim Beispiel). Falls diese Datei /etc/asound.conf noch nicht existierte, legt man sie eben an.
Testton ausgeben
Man kann nun einen Testton ausgeben:
speaker-test -D bluetooth -c 2 -f 440 -t sine -l 1
Tonausgabe über Bluetooth via MPD
MPD ist ein bekannter Musikspieler bzw. eine Musikverwaltung unter Linux. Näheres hierzu findet sich hier. Für eine grafische Benutzeroberfläche im Browser nutze ich das klasse „Addon“ MyMPD. Dort kann man dann die virtuellen Bluetooth-Soundkarten auswählen:

Damit ›MPD‹ aber auf diese neuen Bluetooth-Soundkarten zugreifen kann, muss dessen Nutzer ›mpd‹ noch zur Gruppe ›bluetooth‹ hinzugefügt werden:
sudo usermod -aG bluetooth mpd
Anschließend müssen wir diese „Soundkarten“ noch in der /etc/mpd.conf hinzufügen:
## Bluetooth-Kopfhörer
audio_output {
type "alsa"
name "Bluetooth-Kopfhörer"
device "bt_headphone" # Name siehe /etc/asound.conf
mixer_type "software"
}
## Anker Bluetooth-Box
audio_output {
type "alsa"
name "Anker Bluetooth-Box"
device "bt_anker" # Name siehe /etc/asound.conf
mixer_type "software"
}Wie man sieht, werden hier keine MAC-Adressen eingetragen. Stattdessen bezieht sich „device“ je auf den Eintrag in der /etc/asound.conf vom vorherigen Schritt bzw. je auf die dort eingetragene, genaue Bezeichnung des jeweiligen Gerätes.
Nun sollte man MPD neustarten: sudo systemctl restart mpd
Skripte Verbinden / Trennen
Die Bluetooth-Audio-Geräte wurden ja bereits gekoppelt und getrusted. Man kann einen Kopfhörer nun jederzeit manuell via Skript bzw. Konsolenbefehl verbinden oder wieder trennen, z. B.:
bluetoothctl connect B0:38:E2:35:4D:45 bluetoothctl disconnect B0:38:E2:35:4D:45
Hier wird also nach der jeweiligen MAC-Adresse unterschieden. Innerhalb eines Skriptes kann man natürlich auch eine Toggle-Funktion nutzen:
#!/bin/bash
MAC="08:EB:ED:61:B3:3C"
# Prüfen, ob die Box aktuell verbunden ist
if bluetoothctl info $MAC | grep -q "Connected: yes"; then
# Aktion: Trennen
bluetoothctl disconnect $MAC
echo "✔ Ankerbox erfolgreich getrennt."
else
# Aktion: Verbinden
if bluetoothctl connect $MAC | grep -q "Connection successful"; then
echo "✔ Ankerbox erfolgreich verbunden."
else
echo "✘ Fehler: Verbindung zur Ankerbox fehlgeschlagen."
exit 1
fi
fiOben im Skript muss man natürlich die jeweilige MAC-Adresse des Gerätes eintragen.
Kurzum: Es ist gar nicht so schwer, den Ton vom Raspberry Pi auch über diverse Bluetooth-Geräte wiederzugeben – auch bei einem headless DietPi-System. Mein Ansatz mit ›BlueALSA‹ ist sicherlich der leichtgewichtigste, um bei der schlanken Linie dieser Linux-Distribution zu bleiben.
Noch ein Hinweis: Ich habe von derlei Linux-Konfigurationen wenig Ahnung: Ich hatte mir (mit etwas Mühe) den Installationsleitfaden via KI erstellen können. Vieles, was diese mir vorschlug, funktionierte nicht. Verstehen Sie meine kleine Anleitung also auch als Aufzeichnung für mich selbst, falls ich bei einer neuen Installation erneut Bluetooth-Lautsprecher oder -Kopfhörer verbinden möchte.


