Hallo Zusammen,
hier eine kurz Anleitung, wie ich es geschafft habe, einen JBL Go mit Raspbian Buster und l2ping zum Laufen zu bringen.
Das ganze habe ich gemacht mit dem momentan aktuellsten Buster 2020-09-26 mit Desktop.
Mein Setup sieht wie folgt aus:
- Raspberry Pi 2B
- Externe Bluetooth Adapter
- JBL Go
Was ich erreichen wollte:
- Ich wollte den JBL Go nur Einschalten und die Musik sollte zum Spielen beginnen.
- Bluetooth Symbol rechts oben anklicken und Add Device wählen
- Den gefundenen Lautsprecher auswählen und Pair klicken
- Lautsprecher Symbol oben rechts per Rechtsklick anklicken und Audio Outputs wählen
- Jetzt den Lautsprecher, in meinem Fall der JBL Go auswählen.
- Raspi sollte jetzt per Bluetooth mit dem Lautsprecher verbunden sein
- Installieren von mpd und mpc und die Rechte setzen
- sudo apt-get install mpd mpc
- sudo chmod g+w /var/lib/mpd/music/ /var/lib/mpd/playlists/
- sudo chgrp audio /var/lib/mpd/music/ /var/lib/mpd/playlists/
- Die Konfiguration von mpd jetzt so anpassen, dass der Lautsprecher als Audio Output verwendet wird
- sudo nano /etc/mpd.conf
- Jetzt die Zeilen suche, die mit audio_output beginnen
- Ich habe mir eine neue Audio Output "Tabelle" angelegt diese sieht wie folgt aus
audio_output {
type "alsa"
name "jbl"
device "bluealsa:DEV=MAC ADRESSE VOM JBL,Profile=a2dp"
profile "a2dp"
mixer "software"
}
- Service von MPD neustarten sudo /etc/init.de/mpd restart
- Ein Playlist anlegen
- mpc add http://br-br3-live.cast.addradio.de/br/br3/live/mp3/128/stream.mp3
- Jetzt mpc mit der neuesten Playlist Updaten
- sudo mpc update
Ab jetzt lieft das ganze bei mir schon.
Der Lautsprecher hat sich automatisch verbunden und mit einem mpc play lieft die Musik über den Lautsprecher
Nächste Hürde war, dass die Musik auch dann wieder Abspielen sollte, wenn der Lautsprecher aus war.
Hierzu verwende ich l2ping. l2ping ist bereits vorinstalliert und muss nicht separat installiert werden.
Vorgegangen bin ich wie folgt
- Lautsprecher einschalten und versuchen ob ein Ping von l2ping zurück kommt
- sudo l2ping -c 2 MAC ADRESSE vom Lautsprecher
- Die sollte jetzt ein positives Ergebnis liefern
- als nächstes testete ich l2ping in Verbindung mit mpc play
- sudo l2ping -c 2 MAC ADRESSE vom Lautsprecher && mpc play
- Jetzt sollte der Ping ausgeführt werden und wenn dieser Erfolgreich ist, wird die Musik abgespielt
Als nächstes versuchte ich dies in einen Cronjob zu packen und bemerkte relativ schnell, dass es per Cronjob nur bedingt funktioniert.
Der Cronjob wurde jede Minute ausgeführt.
Problem war hierbei, wenn der Lautsprecher aus war und eingeschaltet wird, dann läuft vom letzten Cronjob das mpc play noch.
Heißt es wird über irgendeine andere Audio Quelle ausgegeben.
Nun habe ich versucht einen l2ping in Verbindung mit mpc stop und mpc play abzusetzen. Jetzt bemerkte ich aber, dass zwar der Lautsprecher wieder funktioniert, aber die Musik jede Minute kurz durch mpc stop abgebrochen hat und gleich wieder per mpc play das Abspielen wieder aufgenommen hat.
Das war nicht die Lösung.
Schließlich bin ich dann auf diese Lösung gekommen.
- Bash Script anlegen mit folgendem Inhalt (zu Testzwecken auf dem Desktop abgelegt)
#!/bin/bash
if /usr/bin/l2ping -c 1 "MAC ADRESSE vom Lautsprecher" /dev/null
then
mpc play
else
mpc stop
fi
- Script in Cronjob hinterlegen
- sudo crontab -e
Jetzt habe ich für mich genau die Lösung die ich gesucht habe.
Der Lautsprecher wird eingeschaltet, verbindet sich automatisch und per l2ping kommt spätestens nach einer Minute die Musik.
Jetzt kann nach belieben der Lautsprecher ein- und ausgeschaltet werden.
Ich hoffe, dass ich jemanden mit der Anleitung helfen kann.
Kritik gerne willkommen!