Bluetooth Audio für (headless) Raspbian Jessie

  • # start edit 21.04.2018 16:52 ->

    Vorwort

    Warum jetzt noch eine Anleitung für Raspbian-Jessie?

    Es gibt Hardware (z.B. adafruit 3.5" pitft touchscreen) und Software (z.B. Peppy Player), die nicht auf Stretch laufen.

    Einleitung

    Auf GitHub sah ich"Bluetooth Audio for (headless) Raspbian systems" von Bernhard Bablok .

    Seine Anleitung gilt für das Raspbian Stretch Paket 'bluealsa'. (Info: für Jessie gibt es nur die 'bluealsa' Sourcen.)


    Quote from Bernhard Bablok

    Audio in Linux Systemen war immer ziemlich kompliziert. ALSA (Advanced Linux Sound Architecture) ist tatsächlich hochentwickelt und so sind sogar einfache Setups kompliziert.


    Bluetooth führt zu weiterer Komplexität. Deshalb sind die Foren voll von posts die nach Hilfe fragen wie man einen Bluetooth Lautsprecher oder Bluetooth Headset mit einem Linux-System verbindet. Das ist in Raspbian nicht anders.


    In Raspbian-Jessie, braucht man für Bluetooth-Audio-Devices zusätzlich PulseAudio, was die Sache nur verkomplizierte. Mit Stretch hat sich das geändert, PulseAudio wurde durch einen ziemlich einfachen Daemon namens bluealsa ersetzt. Trotzdem bleibt ein einfacher Setup immer noch kompliziert, teilweise, weil der Maintainer des bluealsa Pakets den Daemon nur in der grafischen Umgebung installiert.


    Dieses Tutorial enthält:

    • bluealsa aus den Sourcen zusammenbauen und installieren.
    • bluealsa Service schreiben, starten und aktivieren.
    • Headset Script schreiben, das das Bluetooth Audio Gerät verbindet.
    • Headset Service schreiben, starten und aktivieren.
    • mpd konfigurieren.


    Bei Raspbian-Jessie braucht man PulseAudio um Bluetooth-Audio-Geräte anzusprechen.

    Bei Raspbian-Stretch wird PulseAudio ersetzt durch bluealsa.

    Hier das HOWTO wie man bluealsa in Raspbian-Jessie einbaut und verwendet.

    # <- end edit 21.04.2018 16:52


    Ich habe das Tutorial mit den folgenden Images und den Playern mpd, mpg123, mplayer und cvlc getestet.

    Code
    2016-09-23-raspbian-jessie-lite.img # tested with: RPi2B, RPi 3B
    2017-04-10-raspbian-jessie-lite.img # tested with: RPi2B, RPi 3B, RPi 0W
        
    Beim Image 2017-04-10-raspbian-jessie-lite.img kann man 2 Dateien auf SD card schreiben: 
    - eine leere Datei 'ssh' um ssh zu aktivieren
    - Datei 'wpa_supplicant.conf' mit ssid und psk... um WLAN zu aktivieren

    Das Tutorial funktioniert auch für das Image pipaos-guarana-console-5.0.img, wenn man vorher das Paket pi-bluetooth installiert.

    Tutorial

    1. Bluealsa in Rasbian-Jessie aus Sourcen zusammenbauen und installieren.
      ATTENTION: diese Anleitung kümmert sich nicht um GUI-Desktop-Controls.
      1. Python Link überprüfen mit ls -l `which python`.
        Wenn dort /usr/bin/python -> /usr/bin/python2.7 steht dann OK.
      2. Bluealsa in Rasbian-Jessie aus Sourcen zusammenbauen und installieren.
        Reference 1: Benötigte Pakete
        Reference 2: Post #2 von Gymnae, s.u.
    2. Konfiguration
      Ich habe mich an die Runeaudio Anleitung gehalten.
      1. Bluealsa Service
        1. Erzeuge den bluealsa Service
          mit sudo nano /etc/systemd/system/bluealsa.service

          Code: /etc/systemd/system/bluealsa.service
          [Unit]
          Description=Start the bluez-alsa service
          After=bluetooth.service
          After=systemd-remount-fs.service
          
          [Service]
          ExecStart=/usr/bin/bluealsa
                                          
          [Install]
          WantedBy=bluetooth.target


        2. bluealsa Service starten und aktivieren
          Code
          sudo systemctl daemon-reload
          sudo systemctl start bluealsa
          sudo systemctl enable bluealsa
      2. Connect bluetooth audio device
        mit sudo bluetoothctl -a   
        Code
        # scan on
        # scan off
        # pair <device-mac-addr>   (tab completion works)
        # trust <device-mac-addr>
        # connect <device-mac-addr>
        # exit
      3. Test #1 mit dem bluealsa audio device
        ACHTUNG: ersetze 11:22:33:44:55:66 unten mit der mac-adr des bluetooth audio device.
        aplay -D bluealsa:HCI=hci0,DEV=11:22:33:44:55:66 /usr/share/sounds/alsa/Front_Center.wav

      4. Alsa Konfiguration
        Erzeuge das alsa pcm device headset
        mit sudo nano /etc/asound.conf 

        ACHTUNG: ersetze 11:22:33:44:55:66 unten mit der mac-adr des bluetooth audio device.


      5. Test #2 mit dem alsa pcm device headset
        a) aplay -D headset /usr/share/sounds/alsa/Front_Center.wav
        b) mpg123 -a headset -@ http://st01.dlf.de/dlf/01/128/mp3/stream.mp3
        c) mplayer -ao alsa:device=headset http://st01.dlf.de/dlf/01/128/mp3/stream.mp3
        d) cvlc --aout=alsa --alsa-audio-device=headset --verbose=-1 http://st01.dlf.de/dlf/01/128/mp3/stream.mp3

    3. Wenn nach dem Booten und dem Einschalten des bluetooth audio device der 'connect' fehlschlägt
      1. Headset Service
        1. Erzeuge das bluetooth connect script headset
          sudo nano /usr/local/bin/headset

          ACHTUNG: ersetze 11:22:33:44:55:66 unten mit der mac-adr des bluetooth audio device.

          Code: /usr/local/bin/headset
          #!/bin/bash
          # connect bluetooth device
          bluetoothctl << EOF
          connect 11:22:33:44:55:66
          quit
          EOF

          Skript ausführbar machen

          sudo chmod 755 /usr/local/bin/headset 

        2. Erzeuge den headset Service
          mit sudo nano /etc/systemd/system/headset.service

          Code: /etc/systemd/system/headset.service
          [Unit]
          Description=Connect bluetooth headset
          After=bluealsa.service
          
          [Service]
          ExecStart=/usr/local/bin/headset
          
          [Install]
          WantedBy=bluetooth.target


        3. Service headset starten und aktivieren

          Code
          sudo systemctl daemon-reload
          sudo systemctl start headset
          sudo systemctl enable headset
    4. Für mpd, einen zusätzlichen audio_output in die Konfig einfügen
      mit sudo nano /etc/mpd.conf
      Code: /etc/mpd.conf
      audio_output {
          type            "alsa"
          name            "JBL Go"   # der Name den mpc outputs anzeigt    # bitte ändern
          device          "headset"
          mixer_type      "software"
          auto_resample   "no"
          auto_format     "no"
          enabled         "no"
      }

      Info: Bluetooth audio device - connect schlägt fehl, wenn dieser mpd output enabled ist,
      deshalb: enable no.


    5. mpd autostart

      <output_nr> unten ist die Nummer des bluetooth audio device.
      Du siehst die Nummer mit Kommando mpc outputs.

      ACHTUNG: ersetze <output_nr> unten mit der Nummer von mpc outputs (z.B. 2).

      Code
      mpc clear
      mpc ls  # listet deine Playlisten
      mpc load <playlist>
      mpc enable <output_nr>
      mpc play

      Wenn gewünscht, mpd nach dem Booten eine Playlist abspielen lassen.
      mit sudo nano /etc/rc.local
      2 Zeilen vor exit 0 einfügen.

      ACHTUNG: ersetze <output_nr> unten mit der Nummer von mpc outputs (z.B. 2).

      Code: /etc/rc.local
      # send mpd commands as user pi
      su pi -c 'mpc enable <output_nr>; mpc play;'
              
      exit 0

      :danke_ATDE: Linus

    Edited 24 times, last by kle: deutsche Fassung, python muß auf python2.7 zeigen ().

  • Moin kle,


    auch wenn ich mich nun total oute...


    Kannst du mir sagen, was dieser Beitrag mir sagen soll?


    Das ist ein deutschsprachiges Forum.

    Die Anweisung ist für Raspbian Jessie.


    Kann ich das heute noch brauchen??


    Dann kommt noch, falls es eine Anleitung sein sollte, als erledigt markieren.


    Bernd

    Ich habe KEINE Ahnung und davon GANZ VIEL!!
    Bei einer Lösung freue ich mich über ein ":thumbup:"

    Vielleicht trifft man sich in der RPi-Plauderecke.

  • Hallo Bernd,

    Kannst du mir sagen, was dieser Beitrag mir sagen soll?

    Das ist eine Geschichte...

    Ursprünglich hatte ich eine Textdatei in Deutsch für NewTron-Radio. Ich habe es an den Peppy Player angepasst und einen Beitrag verfaßt.

    Das ist ein deutschsprachiges Forum.

    Da dessen Author besser Englisch spricht als Deutsch, habe ich es übersetzt. Jetzt habe ich den allgemeinen Teil des Beitrags herausgezogen und als "Thema" ins Forum gestellt.

    Mein Argument für englisch: jeder, der mit Computern zu tun hat, spricht englisch. Andere, die ich gefragt habe, sahen das auch so. Mit Deinem Argument (deutschsprachiges Forum), hast Du natürlich auch recht.

    Die Anweisung ist für Raspbian Jessie.

    Für mich ist Jessie noch nützlich. Ich habe ein 3.5" pitft Touchscreen Display von Adafruit. Das Image für dieses Display basiert auf Jessie. Es gibt ein Skript bei Adafruit, die das Display in Raspbian einbauen, dabei wird u.a. der Kernel getauscht.

    • Dieses Skript hat sich verändert.
    • Es funktioniert zur Zeit weder für Jessie noch für Stretch.

    Der Peppy Player basiert auf diesem Adafruit Desktop Image.



    Noch ein Argument für meinen Beitrag:

    mit einer kleinen Erweiterung, funktioniert die Anleitung auch für pipaos-guarana-consol-5.0.img vom 12.Sep.2016 (uralt, ich geb's zu, aber jessie)


    Schönen Gruß, kle

  • Hallo dbv,

    noch eine Geschichte:

    ich habe auf GitHub "Bluetooth Audio for (headless) Raspbian systems" gesehen.

    Diese Anleitung geht aber nur mit Raspbian-Stretch, mit dem (stretch) Paket 'bluealsa'. (Info: Für Jessie gibt es nur die Sourcen für bluealsa.)


    Meine Anleitung enthält:

    • bluealsa aus den sourcen zusammenbauen und installieren.
    • bluealsa Service schreiben + starten + aktivieren.
    • bt-connect Script schreiben.
    • bt-connect Service schreiben + starten + aktivieren.
    • Spezialitäten für mpd.


    Ich bin in Deutsch eher unbegabt. Aber die Absätze 1-3 der Introduction gefallen mir.

    Kann ich die als Einleitung kopieren, wenn ich auf den Urheber mit einem Link verweise?

    Bitte um Rat, kle

    Edited once, last by kle ().

  • Hallo,


    die Behauptung

    Quote


    jeder, der mit Computern zu tun hat, spricht englisch.

    halte ich nicht nur für gewagt, sondern für schlichtweg falsch. Alleine im Python-Subforum kommt oft genug, wenn man einen Link auf eine englische Anleitung (was ja nun mal in den meisten Fällen der Fall ist) postet die Frage: gibt's da nicht auch was auf deutsch...?


    Wenn jeder englisch sprechen könnten, dann hätte die deutschsprachigen (oder französischen oder italienischen oder ...) Foren ja auch keinen Grund zu existieren - jeder wäre in englischen unterwegs und alle Nutzer könnten ihr Wissen teil, was durchaus vorteilhaft ist.


    Eine Aussage wie: "jeder, der mit Computern zu tun hat, sollte zumindest Englisch lesen und verstehen können" würde es wohl eher treffen.


    Gruß, noisefloor

    • Official Post

    Ich habe auch kein Problem mit einem englischen Text. Imho aber melden RPi-Freunde sich im Deutschen Raspberry Pi Forum an, um Anleitungen und Problemlösungen in ihrer Muttersprache zu finden und das betretene Neuland (Linux + Raspberry Pi) zu verstehen ohne Interpretationen anderssprachiger Texte. Der Begründung "jeder, der mit Computern zu tun hat, spricht englisch" kann ich nicht zustimmen. Da ist der Wunsch der Vater des Gedanken, zumal wir hier von einem Bastelrechner reden der entwickelt wurde, um (jungen) Menschen den Umgang mit Computern und dessen Programmierung näherzubringen. ;)


    Wie unschwer zu erkennen, wäre mir eine deutsche Anleitung hier wesentlich lieber. Eine Englische könnte dann auch als Ergänzung gut in einen Spoiler passen.


    :2cents:

  • Hallo zusammen,

    dbv und Bernd666

    Kannst du mir sagen, was dieser Beitrag mir sagen soll?

    ich habe eine Einleitung hinzugefügt. Für Verbesserungsvorschläge bin ich dankbar.


    hyle und Bernd: die deutsche Fassung wird kommen. Ob ich die englische und/oder die deutsche in einen Spoiler bringe, weis ich nicht.

    Code-Blöcke in 'ordered list's zu schachteln, war schon mühsam. Alles zusammen in einen Spoiler einzubetten, mal sehen was die anderen in "Beiträge in verschiedenen Sprachen" sagen?

    Schönen Gruß, kle

    Edited once, last by kle ().

  • kle

    Changed the title of the thread from “Bluetooth Audio for (headless) Raspbian Jessie” to “Bluetooth Audio für (headless) Raspbian Jessie”.
  • Hallo kle,


    ich habe dein ip-btaudio-master auf meinen stretch Raspbian installiert, war easy.

    Ich möchte dein Ansatz benutzen um mpd mit ein Onkyo TX-L50 EBC9C0 zu verbinden.

    Der Onkyo ist ein AVR system (mit bt Unterstützung) und sicherlich kein Headset im bt Sinne,

    deswegen kriege ich wohl kein sound von mpd.


    Ich habe zwei fragen: was ist der BT Sammelbegriff für AVR Systemen, und was muss ich ändern

    um eine Kommunikation vom mpd mit mein Onkyo zu ermöglichen.


    Da ich überhaupt keine BT Erfahrung habe, brauche ich wohl eine etwas ausführliche Anweisung ...


    Gruß, a46

  • ich habe dein ip-btaudio-master auf meinen stretch Raspbian installiert

    Hallo a46,

    ich weiß nicht wovon Du redest. Die Anleitung war für Jessie gedacht, damit man Bluetooth ohne pulseaudio anbinden kann.

    In ...raspbian-stretch.img für desktop ist das Paket bluealsa schon installiert. In ...raspbian-stretch-lite.img kann man es nachinstallieren mit sudo apt-get install bluealsa.

    was ist der BT Sammelbegriff für AVR Systemen

    weiß ich nicht.

    eine Kommunikation vom mpd mit mein Onkyo zu ermöglichen

    ehe hier eine wilde Spekulation entsteht:

    Soll der Raspi eine Tonquelle für Deinen Onkyo sein?

    Oder willst Du BT-Lautsprecher gemeinsam benutzen (entweder vom Onkyo oder vom Raspi)?

    Male ein Bild.


    Es gab Themen "...Raspi als Bluetooth-Lautsprecher...". Da sollte ein Smartphone über Bluetooth mit einem Raspi gekoppelt werden. (Damit habe ich mich nicht beschäftigt).

    Schönen Gruß, kle

  • Es gab Themen "...Raspi als Bluetooth-Lautsprecher...". Da sollte ein Smartphone über Bluetooth mit einem Raspi gekoppelt werden. (Damit habe ich mich nicht beschäftigt).

    ...und leider funktioniert es immer noch nicht: RPi als Bluetooth-Lautsprecher unter Raspbian Stretch

    Ich beschäftige mich aber mit dieser Thematik derzeit auch nicht.


    EDIT:

    mittlerweile habe ich die Sache (u.a. dank kle) zum Laufen bekommen, siehe Beiträge #12ff.