Bluez mehrere Audioquellen

7

Ist es mit dem Bluez-Stack möglich, mehrere Audioquellen anzuschließen? Wie ? Wenn nicht, ist es auf andere Weise möglich? Wenn möglich, ist es möglich, verschiedene Bluetooth-Versionen wie Low-Energy mit alten zu mischen?

Wenn dies nicht möglich ist, besteht meiner Meinung nach eine (teure) Lösung darin, mehrere (physische) Bluetooth-Empfänger hinter meinem (physischen) Audiomixer anzuschließen ^ - ^

Hintergrund: Ich versuche, einen "Medienserver" aufzubauen, und ich möchte, dass Telefone Audio darauf streamen können, aber ich möchte nicht hören "Bitte, können Sie Ihr [nicht wirklich abspielendes] Telefon so trennen Ich kann meine verbinden ".

Julien Palard
quelle
Als Kommentar antworten, da ich nicht die vollständige Antwort auf Ihre Frage habe. Laut Wikipedia kann Bluetooth die Kommunikation mit höchstens 7 Geräten in einer Piconetz-Ad-hoc-Konfiguration unterstützen.
Ja, ich habe die gleichen Informationen gefunden, 7 ist cool für mich, aber ich weiß nicht, wie ich es erreichen soll.
Derzeit kann

Antworten:

1

Es gibt Berichte, dass dies möglich sein sollte, insbesondere gibt es eine Mailinglisten-Antwort des Hauptentwicklers, die besagt, dass dies über audio.conf möglich ist . Diese Datei wird jedoch nicht mehr mit BlueZ 5 ausgeliefert, und der aktuelle Quellcode verweist nicht mehr auf die darin enthaltenen Abschnitte (wie "[A2DP]" oder "[Headset]").

Dies kann nützlich sein, wenn Sie Bluez 4 ausführen. Dieser Beitrag in den Maemo-Foren (Maemo war der Hauptsponsor der Bluetooth-Audioarbeit unter Linux, glaube ich) zeigt eine Beispieldatei audio.conf mit der SourceCountOption 2. Und diese AskUbuntu Antwort sagt, Sie müssen setzen SBCSources, MPEG12Sourcesund MaxConnectedauf eine Zahl höher als eins.

Wenn ich mit BlueZ 5 und Pulseaudio versuche, eine zweite Quelle anzuschließen, wird die Verbindung sofort getrennt. Mit hcidumpkann ich sehen, dass mit diesem Paket, das von dem Gerät gesendet wird, das Audio empfängt, alles schief geht:

< ACL data: handle 62 flags 0x00 dlen 10
    L2CAP(d): cid 0x0042 len 6 [psm 25]
      AVDTP(s): Discover rsp: transaction 0 nsp 0x00
        ACP SEID 1 - Audio Source
        ACP SEID 2 - Audio Sink (InUse)

Beachten Sie, wie die Spüle als InUse markiert ist . Nachdem dies angezeigt wurde, wird die Quelle getrennt.

Es ist schwer zu sagen, wohin diese Konfigurationsoption gegangen ist. BlueZ ist bekannt für seine spärliche Dokumentation. Mit BlueZ 5 wurden die meisten Audio-Verantwortlichkeiten in andere Programme wie Pulseaudio verlagert. Sie kommunizieren über DBus und Pulseaudio registriert Endpunkte bei BlueZ. Vielleicht soll Pulseaudio mehrere Endpunkte registrieren, aber es scheint keine Option für mehrere Quellen in pulseaudio-module-bluetooth-Discover zu geben.

philippe
quelle
1

Ein bisschen spät vielleicht, aber vor ein paar Jahren habe ich damit experimentiert und es eine Weile funktionieren lassen, also werde ich meine Erfahrungen damit hier ablegen.

Pulseaudio 2.x ist die letzte Version, mit der mehrere Bluetooth-Audiostreams in PA als Audioquellen angezeigt werden konnten. Ab PA 3.0 haben sie das Audio-Handling auf entweder geändert (ich weiß es nicht genau).

1) Umgang mit nur einem BT-Audioquellen- / Senkenpaar oder

2) Erlauben Sie ein BT-Audioquellen- / Senkenpaar pro verfügbarem (lokalem) Audiogerät

PA 2.x arbeitete zu der Zeit mit Bluez4. Ich weiß nicht, ob es noch möglich ist, mehrere Audio-Senken bei Bluez5 zu registrieren, aber zumindest PA macht es nicht einfach oder sogar möglich. Wie @philippe in der anderen Antwort sagt, wenn PA die Senke als InUse sieht, wird der Audiostream getrennt (obwohl der Audiostream technisch nicht mit einer PA-Senke verbunden sein muss).

PS: Während es tatsächlich funktioniert hat, stören die Audiostreams beider Bluetooth-Geräte auf Radioebene. Erwarten Sie also nicht, zwei fehlerfreie Audiostreams zu mischen. Bei einem oder beiden kommt es zu Paketverlusten.

Sander
quelle
1

Ich möchte auch mehrere Bluetooth-Geräte mit einem Audiostream verbinden, in meinem Fall sinkt.

Angespornt durch die obigen Antworten habe ich begonnen, den Pulseaudio-Code zu untersuchen, um mehr Einblick zu erhalten und ihn möglicherweise zu aktualisieren, um das zu tun, was ich will.

Ich habe dies in https://cgit.freedesktop.org/pulseaudio/pulseaudio/tree/src/modules/bluetooth/bluez5-util.c entdeckt :

/* Currently only one A2DP codec is supported, so register only SBC * Support for multiple codecs needs to use a new Bluez API which * pulseaudio does not implement yet, patches are waiting in queue */ a2dp_codec_sbc = pa_bluetooth_get_a2dp_codec("sbc");

Dies befindet sich im Top-of-Tree-Code, sodass anscheinend jemand darüber nachdenkt, puseaudio so zu aktualisieren, dass es irgendwann besser zu den Bluez5-APIs passt.

Es gibt auch einen Hinweis darauf, welcher Code in diesem Diff wiederhergestellt werden muss: https://cgit.freedesktop.org/pulseaudio/pulseaudio/commit/?id=d504744396316c4b05f477327feb36095f5e68cb

crockford_q
quelle