Bluetooth-Lautsprecher betreiben (ohne udev, systemd)

Einrichten des lokalen Netzes, Verbindung zu anderen Computern und Diensten.
Benutzeravatar
smutbert
Beiträge: 6889
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: (gelöst) Bluetooth-Lautsprecher betreiben (ohne udev, systemd)

Beitrag von smutbert » 22.09.2019 19:59:09

Es mag auf den ersten Blick unübersichtlich sein, aber eigentlich ist es recht einfach:


Pulseaudio bietet seine eigene Softwareschnittstelle für die Audiowiedergabe an, die Anwendungen nutzen können und vlc beispielsweise kann und macht das, dann steht bei den Audioeinstellungen wahrscheinlich „Pulseaudio“ oä.
Anwendung → Pulseaudio → Treiber (Pulseaudio Bluetooth oder Alsa oder OSS oder ...)

Weil aber sehr viele Programme nach wie vor nur Alsa als Schnittstelle unterstützen, klinkt sich Pulseaudio über ein Alsa-Plugin auch dort ein und wird damit in Alsa zu einer Art virtueller Soundkarte, die dann auch gleich als default-Gerät eingerichtet wird. Wählst du also einfach Alsa statt Pulseaudio aus, sollte sich erst einmal gar nichts ändern, außer dass der Wiedergaberegler in pavucontrol für dieses Programm dann wahrscheinlich anders heißt.
Anwendung → Alsa (Pulseaudio-Plugin) → Pulseaudio → Treiber (Pulseaudio Bluetooth oder Alsa oder OSS oder ...)

Ändern tut sich erst etwas, wenn du außerdem noch bei den Audioeinstellungen ein anderes Alsa-Gerät auswählst. Dann läuft die Wiedergabe an Pulseaudio vorbei nur über Alsa und ohne den Pulseaudio-Umweg stehen dir auch die Bluetoothgeräte nicht mehr zur Verfügung.
In der Vergangenheit habe ich immer empfohlen beim Einsatz von Pulseaudio die Existenz von Alsa sozusagen zu ignorieren. Pulseaudio soll ja von der Hardware und deren Treibern abstrahieren und wenn man sich dann in das darunterliegende Alsa einmischt, kommt man sich schnell ins Gehege. (Ich muss aber auch zugeben, dass ich mich selbst nicht an meine Empfehlungen halte.)
Anwendung → Alsa (möglicherweise irgendwelche Alsa Plugins → Alsa Treiber)


(So nebenbei würde es mich ja ein kleines bisschen interessieren wie leicht es ist, das bluez-alsa-Paket vom Raspberry Pi für amd64 zu bauen. Würde dich Audio mit Bluetooth ohne Pulseaudio interessieren? (das wäre eine mögliche Motivation das zu machen, ich selbst brauche es nicht))

guennid

Re: (gelöst) Bluetooth-Lautsprecher betreiben (ohne udev, systemd)

Beitrag von guennid » 22.09.2019 20:12:55

smutbert hat geschrieben:Würde dich Audio mit Bluetooth ohne Pulseaudio interessieren?
Interessieren tät's mich schon. Aber ich habe so vielfältige Interessen, von Waldarbeit über Handwerkern, Singen, Geschichte bis zu Sparring mit Pöttering. Von allem versteh' ich 'n bisschen, aber nix richtig. :wink: Ich weiß nicht, ob ich da noch 'ne Baustelle aufmachen soll. Die erste Hürde wäre, wo kriegt man die Sourcen her?

Grüße, Günther

Benutzeravatar
smutbert
Beiträge: 6889
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: (gelöst) Bluetooth-Lautsprecher betreiben (ohne udev, systemd)

Beitrag von smutbert » 22.09.2019 20:30:10

ich denke von hier: https://github.com/Arkq/bluez-alsa
Allerdings habe ich beim Schreiben dieses Beitrags gerade entdeckt, dass es in Repositories von/für den Raspbery Pi das Paket sogar bereits für amd64 gibt und überraschenderweise für alle Architekturen unter dem Namen bluealsa: http://archive.raspberrypi.org/debian/p ... /bluealsa/

So wie es aussieht genügt
- herunterladen (bluealsa_0.12_amd64.deb)
- installieren
- als Benutzer

Code: Alles auswählen

/usr/bin/bluealsa --disable-hfp
starten
- den letzten Schritt dieser Anleitung https://geeks-r-us.de/2017/08/18/blueto ... pberry-pi/ durchlesen oder sogar befolgen
(die letzten paar Zeilen ab „Nun kann über den Bluetooth LautsprecherSound abgespielt werden.“, den Rest inklusive bluetoothctl kennst du ja schon)

Wenn das wirklich funktioniert wäre es enttäuschend einfach, nur für das Umschalten zwischen Bluetoothgerät und eingebauten Lautsprecher habe ich bei Alsa keine Idee, die ich für bequem und verlässlich halte – das geht mit Pulseaudio schon wesentlich einfacher und das müsstest du wohl komplett deinstallieren um bluealsa ausprobieren zu können.

guennid

Re: (gelöst) Bluetooth-Lautsprecher betreiben (ohne udev, systemd)

Beitrag von guennid » 22.09.2019 21:26:08

Hmmm,

einen apt-fähigen Eintrag für die sources.list habe ich gefunden: deb http://archive.raspberrypi.org/debi ... ch main ui Ich sehe bei mir mit apt-get keine zusätzlichen Abhängigkeiten, demzufolge könnte es auch per dpkg funktionieren. Aber wie sieht das aus mit einem Signierschlüssel? Dazu habe ich nichts gefunden.

Grüße Günther

Benutzeravatar
smutbert
Beiträge: 6889
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: (gelöst) Bluetooth-Lautsprecher betreiben (ohne udev, systemd)

Beitrag von smutbert » 22.09.2019 21:43:36

Ja, die Abhängigkeiten habe ich mir angesehen bevor ich meinen letzten Beitrag gepostet habe.

Den öffentlichen Schlüssel gibt es vermutlich im Paket raspberrypi-archive-keyring (aber ich würde einfach das eine Paket so herunterladen).

guennid

Re: (gelöst) Bluetooth-Lautsprecher betreiben (ohne udev, systemd)

Beitrag von guennid » 22.09.2019 21:52:43

Danke sehr!

Mal sehen. Wenn ich Zeit finde, probiere ich das auf einer älteren Test-Maschine (T42, ich hab's nun mal mit Thinkpads :wink: ) aus. Ich will mir ja nicht nach einem halben Jahr mühsamer - wenn auch sporadischer - Arbeit die Konfiguration meines schönen T430 wieder versauen. :wink:

Im Übrigen, nachdem das nun funktioniert hat, geh' ich's wahrscheinlich auch auf dem uralten eeepc 4g noch mal an. Und wenn's denn funktioniert, kriegt der einen fetten Bose-Lautsprecher verpasst! :mrgreen:

guennid

Re: (gelöst) Bluetooth-Lautsprecher betreiben (ohne udev, systemd)

Beitrag von guennid » 08.10.2019 18:18:17

So, ich versuche das jetzt mal mit bluealsa unter stretch auf eeepc. Ich fürchte, ein upgrade auf buster wird das bluetooth-audio via PA nicht überleben (kein pavucontrol mehr ohne systemd). Dabei stößt mir merkwürdig auf: Die neueste bluealsa-Version ist 0.13. Für amd64 gibt die sich mit stretch-libc6_2.24 zufrieden. i386 verlangt aber 2.28. Auf dem eeepc müsste ich zurückgehen bis bluealsa-0.7. Sollte ich das tun?

Grüße, Günther

Benutzeravatar
smutbert
Beiträge: 6889
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: Bluetooth-Lautsprecher betreiben (ohne udev, systemd)

Beitrag von smutbert » 08.10.2019 21:48:51

Entweder das oder versuchen das Paket aus den Quellen für/mit der älteren libc zu bauen.

Es war zwar meine Idee, aber ich habe nicht ausprobiert ob es überhaupt funktioniert. Als Ausweg bliebe sonst noch die Möglichkeit gleich raspbian zu installieren, das es zu meiner Überraschung auch für PCs gibt. (systemd sollte sich dort jedenfalls ähnlich einfach (oder schwierig) ausbauen lassen wie unter Debian.)

guennid

Re: Bluetooth-Lautsprecher betreiben (ohne udev, systemd)

Beitrag von guennid » 08.10.2019 22:35:07

Ist das nicht ein Bug, dass ein Paket in der 64bit-Version mit einer lib zufrieden ist, während das gleiche Paket für eine 32bit-Version eine neuere verlangt? Aber lassen wir das einstweilen.

Ich habe pulseaudio deinstalliert und bluealsa-0.7 installiert. In dem von dir verlinkten Thread arbeitet der Autor ja mit systemd. Ich habe das Kommando

Code: Alles auswählen

/usr/bin/bluealsa --disable-hfp
, das er in eine Unit steckt, zum Testen vor dem Start von bluetoothctl mal händisch ausgeführt. Danach kann ich den Lautsprecher mit bluetoothctl verbinden (connect), aber Töne konnte ich ihm bisher nicht entlocken. Ich teste nach wie vor mit Videos. Die habe ich und nen Springsteen als mp3 hätt' ich auch noch. Aber ob sich in den Tiefen des Systems eine *.wav-Datei zum Testen finden lässt - wie sie überall wie sauer Bier zum Testen propagiert wird, weiß ich nicht und habe ich auch keine Lust zu suchen.

Grüße, Günther

pferdefreund
Beiträge: 3563
Registriert: 26.02.2009 14:35:56

Re: Bluetooth-Lautsprecher betreiben (ohne udev, systemd)

Beitrag von pferdefreund » 09.10.2019 10:04:39

Dann mach dir doch ne .wav draus. Ffmpeg kann das bestimmt - oder auch andere Tools.

Benutzeravatar
smutbert
Beiträge: 6889
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: Bluetooth-Lautsprecher betreiben (ohne udev, systemd)

Beitrag von smutbert » 09.10.2019 10:08:46

Bei Alsa musst du halt auch das Bluetoothgerät als Ausgabeziel angeben. Die .asoundrc in der verlinkten Anleitung sorgt nur für die richtige Konfiguration der Bluetooth-Verbindung, aber nicht dafür, dass die Ausgabe per default beim Bluetoothgerät landet.

Wahrscheinlich hast du bereits genug wav-Dateien am System (du wirst wahrscheinlich Debianalsa-utils installiert haben). Testen würde dann ich fürs erste mit

Code: Alles auswählen

$ aplay -D bluealsa /usr/share/sounds/alsa/Front_Left.wav
Wenn das nicht funktioniert versuch alternativ die Optionen gleich in den Befehl einzubauen (die X stehen wieder für die Mac-Adresse der Bluetoothlautsprecher)

Code: Alles auswählen

$ aplay -D bluealsa:HCI=hci0,DEV=XX:XX:XX:XX:XX:XX,PROFILE=a2dp /usr/share/sounds/alsa/Front_Left.wav

guennid

Re: Bluetooth-Lautsprecher betreiben (ohne udev, systemd)

Beitrag von guennid » 09.10.2019 10:59:38

Code: Alles auswählen

$ aplay -D bluealsa:HCI=hci0,DEV=XX:XX:XX:XX:XX:XX,PROFILE=a2dp /usr/share/sounds/alsa/Front_Left.wav
Funktioniert!!!

Ich hatte das Kommando zwischenzeitlich auch hier (1) gefunden und mit meinem Video als Tonquelle versucht, aber da kam nichts als ziemlich lauter Lärm aus dem Lautsprecher, dem Bluetooth-Lautsprecher, immerhin!

Ich habe die Logik dieses bluealsa-Teils noch nicht durchschaut. Trifft zu, dass das Ding als erstes irgendwie gestartet werden muss, bevor man mit bluetoothctl loslegt? Wenn ich recht erinnere, funktionierte das Verbinden des Lautsprechers mit bluetoothctl nicht, ohne vorher das hier aus dem angegebenen Link zu starten:

Code: Alles auswählen

bluealsa --disable-hfp &
. Was ich da getan habe, weiß ich noch nicht so recht.

(1) https://forum.armbian.com/topic/6480-bl ... ulseaudio/

Grüße, Günther

Benutzeravatar
smutbert
Beiträge: 6889
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: Bluetooth-Lautsprecher betreiben (ohne udev, systemd)

Beitrag von smutbert » 09.10.2019 11:47:32

Ja, bluealsa musst du irgendwie starten. (Meinem Verständnis nach ist das eine Art Dämon, der die Daten von Alsa entgegennimmt und an den Bluetoothlautsprecher ausgibt.)
Wahrscheinlich läuft es auf ein init-Skript hinaus. Ich habe bis jetzt kein fix-und-fertig-passendes in den Untiefen des Internets gefunden – notfalls müssen wir (bzw. mußt du ) eben selbst kreativ werden. Normalerweise würde ich möglicherweise empfehlen bluealsa mit einer udev-Regel zu starten, damit es für einen gerade erst angesteckten Bluetooth-Stick aktiv wird, aber das ist auf deinem System wohl auch nicht möglich.

Die simpelste Lösung wäre natürlich

Code: Alles auswählen

export LIBASOUND_THREAD_SAFE=0
/usr/bin/bluealsa -S &
an die »/etc/rc.local« anzuhängen – möglicherweise funktioniert das ja bereits gut genug?
guennid hat geschrieben: ↑ zum Beitrag ↑
09.10.2019 10:59:38
. Was ich da getan habe, weiß ich noch nicht so recht.

(1) https://forum.armbian.com/topic/6480-bl ... ulseaudio/
Ich auch nicht, aber ich gehe einmal davon aus, dass du keine systemd-units angelegt hast :wink:
Darüber hinaus glaube und hoffe ich, dass du nicht bluealsa aus den Quellen kompiliert hast, wie in deinem Link beschrieben.
Sonst steht in der Anleitung ja nicht viel Aufregendes, außer vielleicht den Befehlen für die Sprachausgabe (aber die willst du eh nicht, oder?).


Nachdem der BT-Lautsprechers bereits gepairt ist, musst du eigentlich nur bluealsa starten und wir müssen uns noch etwas für die Alsakonfiguration überlegen, damit der Ton auch immer dort landet wo du ihn gerne hättest. (Ich habe es schon erwähnt: ich kenne keinen Weg das ähnlich zu automatisieren wie das mit pulseaudio möglich ist, aber irgendeine Lösung, mit der du dich arrangieren kannst werden wir schon finden.)
Hast jetzt eigentlich schon eine ~/.asoundrc angelegt?

guennid

Re: Bluetooth-Lautsprecher betreiben (ohne udev, systemd)

Beitrag von guennid » 09.10.2019 13:55:19

smutbert hat geschrieben:Meinem Verständnis nach ist das eine Art Dämon, der die Daten von Alsa entgegennimmt und an den Bluetoothlautsprecher ausgibt.
Das vermute ich auch. Um dessen automatisierten Start kann man sich später kümmern (rc.local, z.B.)
smutbert hat geschrieben:Darüber hinaus glaube und hoffe ich, dass du nicht bluealsa aus den Quellen kompiliert hast, wie in deinem Link beschrieben.
Nein nein. Ich habe wie gesagt, das bluealsa-0.7.deb genommen
smutbert hat geschrieben:Nachdem der BT-Lautsprechers bereits gepairt ist, musst du eigentlich nur bluealsa starten
Ich denke eher umgekehrt. Ich meine bluetoothctl (pairen/connecten) wäre nicht möglich gewesen ohne vorher bluealsa gestartet zu haben - mag mich aber irren, ich probiere mehr oder weniger blind.

Im Moment scheint mir das Hauptproblem, rauszufinden, warum mit dem aplay-Kommando eine dieser skurrilen *.wav-Dateien (skurril für mich deshalb, weil ich die in den vorangegangenen 18 Debian-Jahren noch nie angefasst habe :wink: ) abzuspielen ist, nicht aber der Ton eines mkv-Videos. In dem Zusammenhang habe ich mich noch nicht an die Anlage einer~/.asoundrc gewagt.

Grüße, Günther

Benutzeravatar
smutbert
Beiträge: 6889
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: Bluetooth-Lautsprecher betreiben (ohne udev, systemd)

Beitrag von smutbert » 09.10.2019 14:12:02

guennid hat geschrieben: ↑ zum Beitrag ↑
09.10.2019 13:55:19
Ich denke eher umgekehrt. Ich meine bluetoothctl (pairen/connecten) wäre nicht möglich gewesen ohne vorher bluealsa gestartet zu haben - mag mich aber irren,
Nein, du irrst dich nicht. Ich meinte eher die Maßnahmen zur Antriebnahme es BT-Lautsprechers als großes Ganzes, nicht die konkrete zeitliche Abfolge:
- (Automatisches) Starten von bluealsa → noch zu erledigen
- Pairing → erledigt
- Connect → erfolgt nach dem Pairing automatisch (oder sollte es zumindest)
- Konfiguration von Alsa:

Nachdem du mehrere Soundkarte/Audiogeräte hast, ist das Anlegen einer ~/.asoundrc (oder der systemweiten Variante davon /etc/asound.conf) wohl die einfachste Möglichkeit festzulegen worüber du die Ausgabe hören willst oder wie hast du bei der Wiedergabe des Videos festgelegt (oder festzulegen versucht), dass der Ton über die BT-Lautsprecher kommen soll?

Kannst du einmal die Ausgabe von

Code: Alles auswählen

aplay -l
bei verbundenem BT-Lautsprecher posten.

Antworten