Wie ich feststellen musste, ist es gar nicht mal so einfach, einen Raspberry Pi mit Bluetooth Lautsprecher zu verbinden. Vor allem, da ich dafür ausschließlich die Command Line nutzen wollte um mir eine grafische Oberfläche zu sparen. Mein eigentliches Ziel ist es, den Raspberry Pi für die Wetterstation zusätzlich auch als “Internetradio Bluetooth Streaming wie auch immer Server” zu nutzen. 🙂
Zusammen mit dem Bluedio BS-2 Bluetooth Lautsprecher eine günstige Lösung, wenn auch durch die Reichweite (immerhin durch zwei Betonwände und knapp 10 Meter Entfernung) nur begrenzt mobil nutzbar. Es sollte aber reichen um auch mal etwas den Garten zu beschallen. Zudem ist es auch günstiger und praktischer als einen Verstärker und irgendwelche verkabelten Boxen in die Werkstatt zu stellen. Für eine stationäre Anwendung hätte ich mich wahrscheinlich für den HiFiBerry AMP+ entschieden, da Technik und die Idee sehr überzeugend klingen.
Auf der Suche habe ich zuerst nur Lösungen gefunden wie man vom per Bluetooth Musik à la Airplay auf den Raspberry streamt. Ich wollte aber einfach nur die Bluetooth Lautsprecher einschalten und das dann der Internetradio-Stream wiedergegeben wird … klingt einfach, ist es aber leider nicht. Da es doch etwas viele Schritte sind, habe ich mich jetzt erstmal auf ein HowTo konzentriert das sich kurz mit der Hardware und verstärkt mit dem Pairing und Verbinden von Bluetooth Audio Devices beschäftigt.
Hardware – USB Bluetooth-Stick
Als Hardware habe ich mich für einen günstigen NoName Bluetooth 4.0 USB-Stick mit CSR8510 A10 Chip entschieden. Im Gegensatz zu manch anderen Bluetooth-Sticks wurde er als Linux kompatibel beschrieben.
Mit lsusb sieht man ob der USB Bluetooth Stick überhaupt erkannt wurde.
Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)
Requirements
Wenn die Hardware erkannt wurde, können wir mit den benötigten Packages weitermachen. Bei der Installation von bluez-utils und bluez-tools werden alle benötigten Abhängigkeiten aufgelöst.
sudo apt-get install bluez-utils bluez-tools
Nicht zwingend benötigt aber praktisch ist das Berechtigen des Pi Users auf die Bluetooth Schnittstelle. So erspart man sich die Bluetooth Befehle mit sudo Rechten auszuführen.
sudo usermod -G bluetooth -a pi
Damit Bluetooth Audio funktioniert, muss in der Datei
/etc/bluetooth/audio.conf
unter [General] folgende Zeile hinzufügt werden
Enable=Socket
und in der Datei für die ALSA (Advanced Linux Sound Architecture) Geräte des angemeldeten Benutzers
~/.asoundrc
müssen noch folgende Zeilen hinzugefügt werden.
pcm.bluetooth { type bluetooth device "15:05:21:27:17:2E" profile "auto" }
Pairing and Trust
Jetzt kann das Bluetooth Audio Device eingeschaltet und in den Pairing Modus gebracht werden. Danach suchen wir nach sichtbaren Bluetooth Geräten um die MAC Adresse und/oder den Namen zu erhalten.
hcitool scan
In der folgenden Aufstellung sollten jetzt alle sichtbaren Geräte erscheinen. Bei mir waren es nur die Bluedio BS-2 Lautsprecher, die sich mit der MAC Adresse 15:05:21:27:17:2E gemeldet haben.
Scanning ... 15:05:21:27:17:2E BS-2
Nachdem wir wissen wie das Gerät heißt, können wir das Pairing starten. Wer Meldungen wie: org.bluez.Error.ConnectionAttemptFailed: Page Timeout bekommt, einfach den Vorgang nochmal probieren.
bt-device -c 15:05:21:27:17:2E
Nachdem das Pairing geklappt hat, müssen wir dem Bluetooth Lautsprecher noch dauerhaft vertrauen (Trust)
bt-device --set BS-2 Trusted 1
Nach der Eingabe von
bt-device -i BS-2
erhält man Informationen über das Gerät und den aktuellen Status. Interessant sind hier Paired, Trusted und Connected.
[15:05:21:27:17:2E] Name: BS-2 Alias: BS-2 [rw] Address: 15:05:21:27:17:2E Icon: audio-card Class: 0x240404 Paired: 1 Trusted: 1 [rw] Blocked: 0 [rw] Connected: 0 UUIDs: [SerialPort, Headset, AudioSink, AVRemoteControlTarget, AVRemoteControl, Handsfree]
Nach dem Pairing und dem Trust können wir den Bluetooth Lautsprecher verbinden.
bt-audio -c 15:05:21:27:17:2E
Bluetooth Audio testen
Zum testen habe ich erstmal den MPlayer installiert.
sudo apt-get install mplayer
Jetzt kann es losgehen. Als Quelle dient im Beispiel der Stream von 1-Live DiGGi.
mplayer -ao alsa:device=bluetooth http://1live-diggi.akacast.akamaistream.net/7/965/119435/v1/gnl.akacast.akamaistream.net/1live-diggi
Mit Strg+C kann die Wiedergabe abgebrochen werden.
Wie geht es weiter?
Im nächsten Teil geht neben dem automatischen Verbinden nach dem Einschalten der Bluetooth Lautsprecher auch um die automatische Wiedergabe des Streams sowie beim Ausschalten um das Beenden des Prozesses. Quasi ein einfaches Internetradio mit drahtlosen Lautsprechern.
Hallo Stefan,
was ist anzupassen, um die Lösung unter Raspian Jessie Lite zu verwenden (ALSA soll da nicht mehr zur Verfügung stehen).
Mit der Bitte um Unterstützung.
Gruß
Uli
Hallo Uli,
Sorry, leider kann ich dir hierzu keine Hilfe anbieten. Die Lösung ist aktuell an den Einsatz von Raspbian Whezzy gebunden. Vielleicht meldet sich ja ein Leser und kann etwas Hilfe leisten?
Viele Grüße
Stefan
Hallo Stefan, mit wheezy hat es geklappt – ich muste allerdings noch in /usr/bin/bluez-simple-agent die Zeile capability=“KeyboardDisplay“ auf capability=“DisplayYesNo“ ändern (es gab auch bei mir eine Fehlermeldung beim pairing).
Hast Du Teil 2 schon fertig (dem automatischen Verbinden nach dem Einschalten der Bluetooth Lautsprecher und die automatische Wiedergabe des Streams sowie beim Ausschalten das Beenden des Prozesses) bzw. kannst Du dazu schon Hinweise geben ?
Viele Grüße
Uli
Hallo Uli,
freut mich das es geklappt hat! Schau dir mal den Beitrag Bluetooth AutoPlay Script an. Ich glaube danach hast du gesucht. 🙂
Viele Grüße
Stefan
Hallo Stefan,
danke für diese Anleitung, genau das habe ich gesucht.
Leider verlangen meine beiden Lautsprecher beim pairing einen PIN-Code.
root@raspberrypi:~# bt-device -c D0:9C:30:04:CE:CD
Connecting to: D0:9C:30:04:CE:CD
Agent registered
Device: MD-12 (D0:9C:30:04:CE:CD)
Enter PIN code:
Eigentlich sollten sich lautsprecher doch ohne PIN verbinden lassen.
Es sind ein NOKIA MD-12 und eine UE BOOM.
Danke schon mal.
Gruß Andreas
Hast Du eine Idee?
Hallo Andreas,
Sorry das ich mich erst jetzt melde, ich kann mich an keine PIN erinnern und auch nichts in meinen Aufzeichnungen finden. Ich hoffe einer der Leser kann dir eine Hilfestellung geben.
Viele Grüße
Stefan
Also viele Lautsprecher haben als Pin 0000. Steht in der Anleitung.
Nachdem der Connect dann geklappt hat und Du den Trust eingerichtet hast,
wird natürlich nicht mehr nach dem Pin gefragt.
Hallo Stefan,
danke für die Anleitung. Ich habe es geschaft, bis zur Verbindung der Lautsprecher. Wenn ich jetzt die Audiodatei an den Bluetooth-Lautsprecher wie oben beschrieben ist, verschicke, bekomme ich folgende Fehlermeldung:
[AO_ALSA] alsa-lib: pcm.c:2217 (snd_pcm_open_noupdate) Unknonw PCM bluetooth
…
Failed to initialize audio driver ‘alsa:device=bluetooth’
Ich komme nicht drauf, was der Fehler ist. die asoundrc ist identisch eingerichtet.
Gruß
Markus
Hallo Markus,
100% identisch sollte die asoundrc natürlich nicht sein?! Hat denn der Befehl “bt-device -i ***” den Zustand Paired angezeigt? Ich würde vermuten, dass der Bluetooth Lautsprecher nicht verbunden bzw. erreichbar ist. Aktuell kann ich es leider nicht nachstellen.
Viele Grüße
Stefan
Hi Stefan,
danke für die Rückmeldung, bin ja mit Linux nicht so bewandert, deshalb tu ich mir da schwer, wenn man es nicht 1:1 nach Anleitung nachvollziehen kann.
Nachdem ich die Befehle mit sudo ausgeführt habe und die asoundrc in das /etc Verzeichnis kopiert habe, hat es dann letztendlich geklappt.
Gruß
Markus
Hallo zusammen,
hat schon jemand Raspberry Pi 3 Jessie mit Bluetooth Boxen zum laufen bekommen?
Gruß
Robert