Raspberry Pi als Bluetooth-Empfänger für Echo Dot verwenden

Kurz vor Weihnachten war online bei einem Versandhändler der echo dot im Angebot für 19,99 € – da habe ich dann doch zugeschlagen und mir das Gerät gekauft um damit etwas rumzuspielen. Die selbstgebaute Alexa-Lösung erweist sich aufgrund des schlechten Mikros (zumindest bei mir) als nicht wirklich tauglich, von daher ist da das „echte“ Gerät schon besser geeignet.

Der Lautsprecher des Echo Dot ist erstaunlich gut für die Gerätegröße, allerdings zum schönen Radiohören nicht tauglich. Da der Echo Dot über eine Blutooth-Schnittstelle verfügt kann man schnell und einfach über die Alexa-App „vernünfige“ Audiosysteme koppeln.

In meinem Fall habe ich einen weiteren Raspberry, der mit der HifiBerry AMP+ Verstärkerkarte bereits ein recht leistungsfähiges Audiosystem (für meine Zwecke) darstellt, im Einsatz. Dieser soll nun als Blutooth-Empfänger zur Verfügung stehen. Da der Raspberry Pi 3 Model B bereits über Bluetooth verfügt, ist das auch einfach möglich.

Raspbery Pi vorbereiten

Zuerst brauchen wir ein paar Softwarepakete:

sudo apt-get install pulseaudio bluez pulseaudio-module-bluetooth python-gobject-2

Wir wollen zusätzlich, dass der User pi später auf alles zugreifen kann – auf Bluetooth- und Audio-Steuerung. Daher fügen wir den NUtzer pi de Gruppe lp hinzu.

sudo usermod -a -G lp pi

Damit der Benutzer später auch auf den als daemon laufenden pulseaudio-Server zugreifen darf muss der Nutzer „pulse“ in der Gruppe „pulse-access“ sein. Ich selbst brauche auch den www-data-User noch, da per Webserver ein Script Zugriff auf den Audio-Output braucht.

sudo adduser pi pulse-access
sudo adduser www-data pulse-access

Pulseaudio konfigurieren

In der /etc/pulse/daemon.conf folgende Zeilen hinzufügen:

resample-method = trivial

Wird pulseaudio als Benutzer gestartet wird die default.pa gewählt, wird der Nutzer als systemweiter Benutzer gestartet wird die system.pa Datei im Verzeichnis /etc/pulse gezogen. Die default.pa hat die Bluetooth-Module enthalten, daher benennen wir die system.pa in system_bak.pa um und kopieren die default.pa einfach auf system.pa.

Der Pulseaudioserver soll grundsätzlich automatisch bei Systemstart starten, daher brauchen wir ein kleines Startscript, welches wir in /etc/systemd/pulseaudio ablegen:

[Unit]
Description=Pulseaudio Audio Server

[Service]
Type=simple
ExecStart=/usr/bin/pulseaudio --system --disallow-exit --disable-shm --exit-idle-time=-1 --log-target=journal

[Install]
WantedBy=multi-user.target

Den Service registrieren wir nun so, dass er bei jedem Boot automatisch gestartet wird und starten ihn dann:

sudo systemctl enable pulseaudio.service
sudo systemctl start pulseaudio.service

Der Dämon solte nun als User „pulse“ laufen.

Bluetooth-Dämon konfigurieren

In der /etc/bluetooth/main.conf folgende Zeilen hinzufügen:

Class=0x00041C
Enable=Source,Sink,Media,Socket

Damit wird Bluetooth befähigt, mit a2dp korrekt umzugehen.

Neustart des Systens

Nun das System am besten einmal Neustarten damit alle Dienst wirklich so laufen, wie sie laufen sollen.

sudo reboot

Bluetooth-Geräte verbinden

Man kann das Ganze ja erst mit dem Handy testen und am Ende erst mit dem Echo Dot – letztlich ist es aber ziemlich das gleiche.

Das Koppeln von bluetooth-Geräten kann von der Shell aus via bluetoothctl geschehen, aber einfacher ist es über die grafische Oberfläche des Rasbperry Pi Desktops, falls der Installiert ist und läuft:

  • Bluetooth anschalten
  • ..auf „discoverable“ stellen
  • ..Pairing durchführen (via Alexa-App, das Gerät, das so heißt, wie der Raspberry, ist natürlich das richtige)
  • ..Pairing am Raspbery akzeptieren

… und nun sollte der Sound über den Raspbery Pi kommen. Wer für seinen Rasbperry Pi keinen Bildschirm zum schnell mal anschließen hat der kann natürlich einfach eine VNC-Verbindung herstellen.

Wer das llieber manuell machen will, der startet bluetoothctl:

power on
agent on
default-agent
pairable on
scan on

Nun das Pairing durchführen. In der Console werden nun Bluetooth-Macadresse des Alexas angezeigt, die Pairinganfrage entsprechend akzeptieren, dann müssen wir dem Gerät noch fest „vertrauen“, damit künfitg die Verbindung automatisch hergestellt werden kann. Die wichtigen Kommandos (jew. selbsterklärend, was sie tun) dafür:

pair <MACADRESSE>
connect <MACADRESSE>
trust <MACADRESSE>

Wenn dann das Verbinden beendet ist, kann das Erkennbar sein für die Umgebung wieder abgeschaltet werden und bluetoothctl kann verlassen werden.

scan off
exit

Probleme beim Raspberry Pi 3 Model B: Sound stottert

Anfangs war ich enttäuscht, wie schlecht die Audiowiedergabe des Raspberry Pi ist. Der Sound „ruckelt“ und „stottert“ und ist gar nicht schön anzuhören.

Nach viel Recherche habe ich da den Grund gefunden: Nutzt man beim RPI WLAN und Bluetooth gleichzeitig, dann stören sich die Geräte wohl gegenseitig. Schaltet man WLAN aus, funktioniert das Ganze einwandfrei. Die Soundwiedergabe ist echt gut. Mein Lösungsansatz wird nun sein, per USB einen eigenen WLAN-Dongle anzustecken und das Bordeigene WLAN des RPI zu deaktivieren.

Passende Dongles gibt’s für wenig Geld.

Um das Bordeigene WLAN zu deaktiveren muss in der /boot/config.txt folgender Eintrag angehängt werden:

dtoverlay=pi3-disable-wifi

Ein eingesteckter USB-Stick, der zuvor als wlan1 (wlan 0 ist ja das WLAN des Raspberry Pis) angezeigt wurde ist nun als wlan0 verfügbar. War das frühere wlan0 z.B. bereits mit einer festen IP konfiguriert wird das neue wlan0 gleichermaßen konfiguriert sein. Und da das bordeigene WLAN nun deaktiviert ist wird der Sound nun auch ohne stottern einwandfrei gestreamt.

Das war’s – nun kann Alexa schön über den RPI den Sound streamen.

Alexa mit dem Lautsprecher verbinden.

Um Alexa mit dem Lautsprecher zu verbinden oder zu trennen sind folgende Sprachkommandos verfügbar:

Alexa, verbinde Lautsprecher

Alexa, trenne Lautsprecher

Quellen / Dankeschön…

.. an die vielen Tutorials im Netz. Bluetooth und pulseaudio sind für mich nicht gerade das Tagesgeschäft, daher haben mir hier viele andere User mit ihren Veröffentlichungen geholfen, z.B.:

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.