Anmerkung vorneweg:
Audiostreaming per A2DP ist eine fummelige Angelegenheit. Viele Nutzer des Pi's berichten, die gleichen im Netz kursierenden Anleitungen befolgt zu haben ohne, einheitlichen Erfolg. Mein Pi wollte zuerst auch keine Streams abspielen. Irgendwann ging es merkwürdigerweise. Die gleiche Konfiguration habe ich bei einem anderen Pi angewendet und dort funktioniert sie merkwürdigerweise nicht. Daher muss an dieser Stelle einfach ausprobiert werden, ob es funktioniert.
Um von vorne herein Fehler auszuschließen, muss festgestellt werden ob der verwendete Bluetooth-Dongle auch korrekt vom System erkannt wird. Dazu tippt man folgendes ins Terminal:
lsusbDieses Kommando listet alle angeschlossenen USB-Geräte auf. Hier sollte euer Bluetooth Stick auftauchen. Ist der von mir verwendete Bluetooth Stick von Hama verwendet worden wird er bspw. als Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode) erkannt.
An erster stelle installieren wir die nötigen Pakete:
sudo apt-get install bluez blueman bluetooth bluez-utils pulseaudio-module-bluetooth python-gobject python-gobject-2Damit unser Benutzer Pi Zugriff auf die Bluetoothdienste hat, muss er einer Gruppe namens lp zugeordnet werden.
sudo usermod -a -G lp piBluetooth hat viele Einsatzmöglichkeiten. A2DP ist eine von ihnen und muss vor der Nutzung erst konfiguriert werden:
sudo nano /etc/bluetooth/audio.confEs öffnet sich der Texteditor. Oben befindet sich ein Abschnitt in dem [General] steht. Direkt in die freie Zeile darunter muss folgenes geschrieben werden:
Enable=Source,Sink,Media,Socket
Als nächstes muss der sogenannt Resample Algorythm configuriert werden. Folgende Datei im Texteditor öffnen...
sudo nano /etc/pulse/daemon.confund die Zeile suchen
resample-method = speex-float-3und direkt dahinter einen Absatz erstellen und folgenden Inhalt hinzufügen:
resample-method = trivialNun muss noch die folgende Datei geändert werden:
sudo nano /etc/pulse/system.paDort muss hinter die vorhandene Zeile
load-module module-udev-detectder Zusatz tsched=0 geschrieben werden, so dass die Zeile wie folgt aussieht:
load-module module-udev-detect tsched=0Damit ist auch schon das Gröbste geschafft. Was wir jetzt noch brauchen ist ein Skript, dass automatisch das Audiosignal des verbundenen Smartphones an den Pi leitet. Dazu müssen wir diese Datei öffnen...
sudo nano /etc/udev/rules.d/99-input.rules... und folgendes reinschreiben:
SUBSYSTEM=="input", GROUP="input", MODE="0660" KERNEL=="input[0-9]*", RUN+="/usr/lib/udev/bluetooth"Im letzten Schritt müssen wir noch das Skript an sich erstellen. Dafür erstellen wir einen neuen Ordner:
sudo mkdir /usr/lib/udevund wechseln direkt in das eben erstellte Verzeichnis:
cd /usr/lib/udevNun erstellen wir eine Datei mit dem Namen Bluetooth:
sudo nano bluetoothFolgendes einfügen
#!/bin/sh #!/bin/bash #change if you don't use default analog audio out. #THIS DIDN'T WORK FOR MY PI SO I ADDED A amixer COMMAND BELOW AUDIOSINK="alsa_output.platform-bcm2835_AUD0.0.analog-stereo" echo "Executing bluetooth script...|$ACTION|" >> /var/log/bluetooth_dev ACTION=$(expr "$ACTION" : "\([a-zA-Z]\+\).*") if [ "$ACTION" = "add" ] then # Turn off BT discover mode before connecting existing BT device to audio hciconfig hci0 noscan # set the audio output to the analog # COMMENT THIS LINE OUT IF YOU WANT TO OUTPUT AUDIO THROUGH HDMI amixer cset numid=3 1 for dev in $(find /sys/devices/virtual/input/ -name input*) do if [ -f "$dev/name" ] then mac=$(cat "$dev/name" | sed 's/:/_/g') bluez_dev=bluez_source.$mac sleep 1 CONFIRM=`sudo -u pi pactl list short | grep $bluez_dev` if [ ! -z "$CONFIRM" ] then echo "Setting bluez_source to: $bluez_dev" >> /var/log/bluetooth_dev echo pactl load-module module-loopback source=$bluez_dev sink=$AUDIOSINK rate=44100 adjust_time=0 >> /var/log/bluetooth_dev sudo -u pi pactl load-module module-loopback source=$bluez_dev sink=$AUDIOSINK rate=44100 adjust_time=0 >> /var/log/bluetooth_dev fi fi done fi if [ "$ACTION" = "remove" ] then # Turn on bluetooth discovery if device disconnects sudo hciconfig hci0 piscan fiNachdem die Datei gespeichert wurde machen wir die Datei bluetooth ausführbar:
sudo chmod 755 bluetoothDieses Skript verbindet lediglich Smartphones, die vom Pi als vertrauenswürdig eingestuft wurden. Dazu muss aber das Smartphone erst einmal den Pi finden. Standartmäßig ist die Sichtbarkeit des Bluetooth-Adapters aber deaktiviert. Mit folgendem Kommando wird der Pi für Bluetoothgeräte sichtbar:
sudo hciconfig hci0 piscanÜber die GUI kann nun am einfachsten das ersonnene Bluetoothdevice als vertrauenswürdiges Gerät gespeichert werden.
startxNun unter Einstellungen --> Bluetooth-Manager mit einem Rechtsklick in die Liste der vertrauensvollen Geräte aufnehmen.
Weiter zu Teil 1 des Tutorials in dem aufgezeigt wird, wie man Apple's Airplay auf dem Raspberry Pi installiert um Musik direkt aus iTunes oder iOs auf den Pi zu streamen oder zu Teil 3 in dem erklärt wird, wie man über Bluetooth Musik auf den Pi streamen kann.
Auch besteht die Möglichkeit den Vorgang über ein NFC-Tag zu automatisieren.
Es kommt kein Sound aus dem PI
AntwortenLöschenVielen Dank für deine Anleitung. Leider hat es auf Anhieb nicht funktioniert.
AntwortenLöschenHiermit hat es allerdings dann geklappt (http://www.instructables.com/id/Turn-your-Raspberry-Pi-into-a-Portable-Bluetooth-A/all/?lang=de). Die Anleitung ist fast so ähnlich wie deine - an der ein oder anderen Stelle aber anders. Ebenso wird erklärt wie alle sich verbindenden Bluetooth-Endgeräte automatisch akzeptiert werden, da ich die Liste nicht manuell pflegen möchte.