Bluetooth Audio Streaming mit A2DP (Raspbian Jessie)

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo liebe Community,

    in diesem Tutorial werde ich euch zeigen, wie ihr euren Raspberry Pi in einen simplen Bluetooth-Audio Empfänger umwandeln könnt.
    Ich setze grundlegende Kenntnisse z.B. wie man eine SSH Verbindung aufbaut etc. voraus. Bei eventuell aufkommenden Fragen gerne einfach in den Thread posten :)

    Credits:
    http://www.instructables.com/id/Enhance-you…er-with-Blueto/

    Externer Inhalt gist.github.com
    Inhalte von externen Seiten werden ohne deine Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklärst du dich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.

    Ihr benötigt:
    - Raspberry Pi (mit Jessie und Boot to Desktop aktiviert)
    - Bluetooth Dongle (http://elinux.org/RPi_USB_Bluetooth_adapters) [Ich habe folgenden benutzt: http://www.amazon.de/gp/product/B00C68IQ3C?tag=psblog-21 [Anzeige]]

    Schritt 1:
    Den Bluetooth Dongle in einen USB-Port stecken, den Pi mit Jessie booten und eine SSH-Verbindung mit Putty oder dergleichen herstellen

    Schritt 2:
    Nun müssen wir überprüfen, ob der jeweilige Bluetoothadapter überhaupt erkannt wird. Das erledigen wir mit folgendem Befehl:

    Code
    lsusb


    Wie auf dem Screenshot zu sehen ist, wird der Dongle als "Cambridge Silicon Radio..." erkannt, also alles in Ordnung :P
    XqH3HpF.png

    Schritt 3:
    Als nächstes bringen wir alles auf den neusten Stand und installieren die notwendigen Pakete. Die folgenden Befehle einfach nacheinander in die Konsole eingeben und zum Schluss einmal rebooten.

    Code
    sudo apt-get update
    sudo apt-get upgrade
    sudo apt-get install alsa-utils bluez bluez-tools pulseaudio-module-bluetooth python-gobject python-gobject-2
    sudo reboot

    Schritt 4:
    Jetzt fügen wir den Benutzer 'pi' zu den PulseAudio Gruppen hinzu. Dazu folgende Befehle in die Konsole eingeben:

    Code
    sudo usermod -a -G lp pi
    sudo usermod -a -G pulse-access,audio root
    sudo adduser pi pulse-access

    Schritt 5:
    Nun passen wir die daemon.conf von PulseAudio an indem wir die Datei mit GNU nano öffnen:

    Code
    sudo nano /etc/pulse/daemon.conf

    Dann suchen wir nach folgender Zeile

    Code
    ; resample-method = speex-float-1

    und fügen folgenden Text hinzu, dass das Ganze folgendermaßen aussieht:

    Code
    ; resample-method = speex-float-1
    resample-method = trivial

    Mit Strg+X schließen und speichern.

    Schritt 6:
    Jetzt müssen wir für PulseAudio das Laden zusätzlicher Module beim Startup festlegen.

    Code
    sudo nano /etc/pulse/system.pa

    Folgende Zeilen einfach ans Ende der Datei anfügen:

    Auch hier wieder mit Strg+X schließen und speichern.

    Schritt 7:
    Damit PulseAudio automatisch startet, erstellen wir ein service starting script

    Code
    sudo nano /etc/systemd/system/pulseaudio.service

    Folgenden Text einfügen und mit Strg+X schließen & speichern:

    Code
    [Unit]
    Description=Pulse Audio
    [Service]
    Type=simple
    ExecStart=/usr/bin/pulseaudio --system --disallow-exit --disallow-module-loading --disable-shm --daemonize
    [Install]
    WantedBy=multi-user.target

    Jetzt noch schnell PulseAudio neustarten:

    Code
    sudo systemctl daemon-reload
    sudo systemctl enable pulseaudio.service
    sudo systemctl start pulseaudio.service

    Schritt 8:
    Als letztes müssen wir den korrekten Audio-Output einstellen. X entweder mit 0 (auto), 1 (3,5mm Klinke) oder 2 (HDMI) ersetzen.

    Code
    amixer cset numid=3 X

    Da die Lautstärke nicht aktiv über den Pi angepasst wird, sondern entweder über den TV oder die Lautsprecher, können wir den Master noch auf 100% setzen:

    Code
    amixer set Master 100%
    pacmd set-sink-volume 0 65535

    Schritt 9:
    Endlich geht's ans Eingemachte, Zeit für die Bluetooth Verbindung!
    Um sicherzustellen, dass das A2DP-Protokoll aktiviert ist, öffnen wir folgende Configdatei:

    Code
    sudo nano /etc/bluetooth/audio.conf

    Hier folgenden Text einfügen und mit Strg+X schließen & speichern.

    Code
    [General]
    Enable=Source,Sink,Media,Socket
    HFP=true
    Class=0x20041C

    Als nächstes bearbeiten wir eine weitere Datei:

    Code
    sudo nano /etc/bluetooth/main.conf

    Folgendes unter [General] einfügen und wieder mit Strg+X schließen & speichern. "Name = RaspStream" kann geändert werden.

    Code
    Name = RaspStream
    Class = 0x20041C

    Eine dritte Datei muss noch bearbeitet werden. Hierzu in der Konsole

    Code
    sudo hciconfig -a

    eingeben und unter "BD Address:" die MAC-Addresse des Bluetooth-Dongles notieren.

    Anschließend diese Datei bearbeiten (XX ist die MAC-Addresse):

    Code
    sudo nano /var/lib/bluetooth/XX:XX:XX:XX:XX:XX/settings

    und unten stehende Zeilen einfügen (wie immer mit Strg+X schließen & speichern):

    Code
    [General]
    Discoverable=true
    Alias=RaspStream
    Class=0x20041C

    Zum Schluss einmal rebooten.

    Code
    sudo reboot

    Schritt 10:
    Jetzt geht's ans Device-Pairing! Für jedes Gerät, das fähig sein soll, Musik abzuspielen muss dieser Prozess einmal durchgeführt werden.
    Dazu öffnen wir die BT control shell:

    Code
    bluetoothctl

    Das zu verbindende Gerät muss sichtbar und im Verbindungsmodus sein. Wenn dies der Fall ist, folgende Befehle nacheinander eingeben:

    Code
    agent on
    default-agent
    discoverable on
    scan on

    Nun sollten in der Konsole die verfügbaren Bluetooth-Clients nacheinander aufgelistet werden.
    Um eine Verbindung herzustellen, bitte die MAC-Adresse des Geräts notieren und folgendes in der Konsole nacheinander eingeben:

    Code
    pair XX:XX:XX:XX:XX:XX
    trust XX:XX:XX:XX:XX:XX

    Das wars, jetzt sollte das jeweilige Gerät bereits in der Lage sein, Musik über den Pi abzuspielen.
    Wenn man den Befehl 'devices' eingibt, erhält man eine Übersicht aller Geräte, die sich mit dem Pi verbinden können.
    Um ein Gerät von dieser Liste zu entfernen, einfach den Befehl 'remove MAC-Adresse' eingeben.

    Mit 'quit' wird bluetoothctl verlassen.

    Ich hoffe ich konnte euch den ganzen Prozess einigermaßen verständlich erklären, viel Glück und Spaß beim selber nachmachen :)
    Liebe Grüße

    Folgende Probleme sind aufgetreten:
    Kein Ton aus dem Audiojack
    Mögliche Lösung: Bluetooth Audio Streaming mit A2DP (Raspbian Jessie)

    Einmal editiert, zuletzt von rasp_newb (14. Mai 2016 um 20:47)

  • Bluetooth Audio Streaming mit A2DP (Raspbian Jessie)? Schau mal ob du hier fündig wirst!

  • Hallo!

    Erstmal Danke für das erste (halbwegs) funktionierende Tutorial welches auch auf Jessie läuft.


    Ich habe ein Problem. Und zwar existiert die datei audio.conf in dem Ordner etc/bluetooth/ nicht.
    Muss ich diese erstellen? Ich bin momentan so weit dass sich mein Raspi mit meinem Smartphone verbindet, jedoch nicht mitteilt was für Dienste er unterstützt.
    Somit sehe ich den Raspi nur als Bluetooth Gerät und da hörts auch auf.

    Wäre sehr dankbar für eine Hilfreiche antwort :)


  • Hallo!

    Erstmal Danke für das erste (halbwegs) funktionierende Tutorial welches auch auf Jessie läuft.


    Ich habe ein Problem. Und zwar existiert die datei audio.conf in dem Ordner etc/bluetooth/ nicht.
    Muss ich diese erstellen? Ich bin momentan so weit dass sich mein Raspi mit meinem Smartphone verbindet, jedoch nicht mitteilt was für Dienste er unterstützt.
    Somit sehe ich den Raspi nur als Bluetooth Gerät und da hörts auch auf.

    Wäre sehr dankbar für eine Hilfreiche antwort :)

    Hey,
    die Datei musste auch ich erstellen, ist normal dass diese noch nicht existiert :)


  • funktioniert soweit, Danke hierfür, wie kann man die Verbindung automatisch herstellen nach einem reboot?

    Die Verbindung wird normalerweise sofort automatisch hergestellt. Wenn der Pi hochgefahren ist, schaltet er automatisch in den Verbindungsmodus und sucht
    nach bereits gepairten Geräten, die sich ebenfalls im Verbindungsmodus befinden.

    Ich nutze das Ganze mit einem Bluetooth-Transmitter ( http://www.amazon.de/gp/product/B00RB02IF2?tag=psblog-21 [Anzeige] ) und sobald dieser eingeschaltet ist, dauerts ca. 30sec bis er sich automatisch mit dem Pi verbindet und Musik abspielt

    Edit: Hast du bei Raspbian Autologin aktiviert?

    Einmal editiert, zuletzt von rasp_newb (6. März 2016 um 16:24)

  • Top hat genauso funktioniert. Auch mit dem neuen Rasp3. Bis auf die erste Zeile, aber das BT Modul hängt ja auch nicht am USB.

    Hat jemand eine Idee wie man ein automatisches Pairing und Trust hinbekommen könnte ?

    vg und Danke für das Tut!


  • Top hat genauso funktioniert. Auch mit dem neuen Rasp3. Bis auf die erste Zeile, aber das BT Modul hängt ja auch nicht am USB.

    Hat jemand eine Idee wie man ein automatisches Pairing und Trust hinbekommen könnte ?

    vg und Danke für das Tut!

    Freut mich wenn alles gut geklappt hat :)

    Autopairing ist möglich, ich probier n bisschen rum und melde mich dann wenn ichs hab ;)

  • Bei mir kam mit der Anleitung oft kein Ton aus dem Audiojack.
    Die Lösung, Schritt 8 musste ich etwas anders machen:

    Code
    sudo alsamixer


    eingeben und dann mit F6 nach der Nummer vor der Sound Card "bcm 2835 ALSA" suchen (hier als N angegeben).
    Dann mit

    Code
    sudo amixer -c N cset numid=3 X


    die Ausgabe einstellen. N steht für die Position der Sound Card, X für die o.g. Option (0=auto, 1=audio jack...)
    Die Laustärke kann noch mit

    Code
    sudo alsamixer


    eingestellt werden.


    Quelle: https://www.raspberrypi.org/forums/viewtopic.php?f=91&t=40872

  • mansulu
    Danke für deinen Lösungsansatz, ich hab das mal mit in den Thread aufgenommen, damit andere Nutzer mit einem ähnlichen Problem eine Lösungsidee haben.
    Als ich mir das eingerichtet habe, wurden keine Soundkarten angezeigt weswegen ich den Output direkt gesetzt habe (was dann auch funktioniert hat, keine Ahnung wieso es bei dir nicht ging)

    Retch_100
    Wie siehts bei dir mit der CPU-Auslastung aus?
    Hast du nebenher andere ressourcenintensive Programme am laufen?
    Ich kann dir direkt nicht ganz weiter helfen, da ich mich mit dem integrierten Bluetoothmodul vom Pi 3 noch nicht wirklich auseinandergesetzt hab :/


  • Retch_100
    Wie siehts bei dir mit der CPU-Auslastung aus?
    Hast du nebenher andere ressourcenintensive Programme am laufen?
    Ich kann dir direkt nicht ganz weiter helfen, da ich mich mit dem integrierten Bluetoothmodul vom Pi 3 noch nicht wirklich auseinandergesetzt hab :/

    Ich habe Jessie Lite installiert und darauf dann lxde. Läuft ansich besser als das Normale. Die CPU Auslastung liegt im sehr niedrigen Bereich auch während der Wiedergabe.

    Sent from my Che2-L11 using Tapatalk

  • Hi,

    erstmal vielen Dank für das Tutorial, ich denke das ist genau das was ich gesucht habe ;)
    Ich habe nur ein problem.
    Ich hänge gerade bei schritt 8

    bei amixer set Master 100% wird folgendes ausgegeben:
    amixer: Unable to find simple control'Master',0

    und bei pacmd set-sink-volumer 0 65535
    Es läuft kein PulseAudio-Dienst oder nicht als Sessiondienst.

    Hatte jemand schon einmal das selbe Problem, und gibt es eine Lösung dafür?

  • Hallo,
    ich habe genau das gleich Problem wie kevin.just.

    Auf der SD-Karte ist nur ein frisch installiertes Raspbian Jessie, sonst nichts.

    Weiß jemand Rat?

    EDIT: mit pulseaudio -D startet man Pulseaudio als Daemon. Damit hat es erst einmal funktioniert.

    Einmal editiert, zuletzt von bender2004 (23. Juni 2016 um 21:26)

  • gelöscht

    Einmal editiert, zuletzt von BillowingDawn349 (6. August 2016 um 13:08)

  • So, ich habe jetzt eine stabile Verbindung hinbekommen, musste aber ein paar Sachen anders machen.

    Die Schrite 8 musste ich per sudo ausführen.

    Das Startskipt hat bei mir auch nicht so funktioniert. Ich verwende das hier:


    Quelle: https://debianforum.de/forum/viewtopi…099763#p1099763. Ich musste aber '--system' drin lassen und zusätzlich 'pulseaudio -D' über einen Crontab starten.

    Bei der Bluetooth-Einrichtu8ng bin ich dann auch etwas vorgegangen, so wie hier https://kofler.info/bluetooth-konf…t-bluetoothctl/ beschrieben. Dürfte aber aufs gleiche hinauslaufen.

    edit
    Und bluetoothctl hab ich auch per sudo ausgeführt, ob es notwendig ist weiß ich nicht.

    Einmal editiert, zuletzt von BillowingDawn349 (6. August 2016 um 13:11)

  • Die "etwas korrektere" Einrichtung von Pulseaudio sieht nun so aus:

    In der "/etc/pulse/daemon.conf" ändert man

    Code
    ; system-instance = no

    in

    Code
    system-instance = yes

    Für den Autostart erstellt man die "/etc/systemd/system/pulseaudio.service" mit dem Inhalt

    In der "sudo nano /etc/pulse/system.pa" müssen nur die beiden Module geladen werden

    Code
    .ifexists module-bluetooth-policy.so
    load-module module-bluetooth-policy
    .endif
    
    
    .ifexists module-bluetooth-discover.so
    load-module module-bluetooth-discover
    .endif

    Es bedarf so keinen Eintrag im crontab mehr.

  • Ih habe es auch mit dem Pi 3 und Rasbian jessie versucht. Paring klappt wunderbar aber ich kann das smartphone nicht conecten.ich kann aber Daten an das smartphone schicken dann sehe ich im Terminal connected yes, nach dem Datenaustausch steht leider wieder no. Falls ich beide übers Desktop verbinden will bekomme ich eine Fehlermeldung.

    Danke schon im Vorraus

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!