Soundfetzen aus Lautsprecher bei verbundenen Bluetoothkopfhörern

Ich hatte bei mir das Problem, dass beim abspielen mit verbundenen Bluetoothköpfhörern immernoch ganz kurze “Soundfetzen” des Playbacks aus dem Lautsprecher der Box kamen.
Nach kurzer Diskussion mit ClaudeAI war das die Antwort:

Wenn der BT-Source-Modus aktiv ist, wird der GPIO_PA_EN-Pin (der den SD/Shutdown-Pin des MAX98357A-Verstärkers steuert) nicht automatisch deaktiviert – anders als bei kabelgebundenen Kopfhörern, wo die HP_DETECT-Logik das korrekt übernimmt. Dadurch kommen kurze Audiofetzen durch den Lautsprecher durch.

Ursache im Code

In AudioPlayer.cpp schaltet ESPuino den PA via Port_Write(GPIO_PA_EN, false, true) stumm, sobald ein Kopfhörer am Klinkenstecker erkannt wird. Für den Bluetooth-Source-Modus fehlt diese Logik – der Verstärker bleibt aktiv und empfängt kurzzeitig I2S-Daten.”

In der Bluetooth.cpp, in der function void connection_state_changed, habe ich am Ende folgendes ergänzt.
#ifdef GPIO_PA_EN

        Port_Write(GPIO_PA_EN, !connected, true);

    #endif

Das hat mein Problem behoben, allerdings sollte vielleicht nochmal jemand mit Ahnung von der Materie drüberschauen ob das die sinnvollste Lösung ist.

Vielen Dank für das tolle Projekt.

1 „Gefällt mir“

Das Problem kann ich bestätigen, das habe ich auch im anderen Thema angemerkt

[quote=„joker, post:4, topic:4291“]
Ich habe bloß beim Bluetoothkopfhörereinsatz, dass sporadisch kurze Artefakte über den Lautsprecher wiedergegeben werden. Ist das bei euch auch? Im Log sehe ich nix dazu.
[/quote]

@tueddy kannst du dir das mal bitte anschauen?

Mit der Änderung ist bei mir auch die Artefakte weg.

Was mir aufgefallen ist, dass im Bluetoothmodus die Kopfhörerbuchse nicht funktioniert. Nach dem Einstecken wird der Ton kurz stumm geschalten und dann läuft der Lautsprecher weiter.

Damit das Läuft fehlt noch die Port.h. Meine Änderungen sind von Notepad mit grün neben der Zeilennummer markiert.

1 „Gefällt mir“

Klingt doch gut! Willst du einfach einen PR dazu erstellen? Sollte eigentlich keine Nachteile geben. Oder ist diese Änderung in irgendeinem Kontext kritisch?

Das kann ich gern machen. Mir ist aber noch ein Problem aufgefallen.
Mit der Zeile wird beim BT-Disconnect der Lautsprecher immer aktiviert – auch wenn ein Kabel-Kopfhörer steckt. Das schaue ich mir morgen mal an

2 „Gefällt mir“

Whoop whoop…mein erster Pullrequest - ich hab es doch noch auf die Kette bekommen

1 „Gefällt mir“

Wer testet es?

Ruhig auch mal mit kabelgebunden Kopfhörern im Wechsel testen, da die Lösung von Claude dazu geführt hat, dass bei gesteckten Kopfhörer der Lautsprecher nicht mehr stumm geschaltet wurde.

Wow, das sind aber viele Änderungen! Für mich sieht es aus, als ob der Großteil davon gar nicht nötig wäre. Ging es nicht eigentlich um paar einzelne Zeilen? Was ist der Grund für diesen großen Umbau?
Kannst du auch nur die relevanten Änderungen in einen PR packen?
Auf die schnelle verstehe ich zumindest nicht direkt, was das mit den Sound-Artefakten zu tun hat :slight_smile:

ne, das sind auch nur 7 Zeilen in der bluetooth.cpp…da habe ich mich wohl bei git verrannt. Ich schaue dann mal.

Danke aber, dass du dich scheinbar bereit erklärt hast das zu testen :slight_smile:

1 „Gefällt mir“

Danke nochmal für den Hinweis.

Ich habe den alten PR jetzt geschlossen und einen neuen PR aufgemacht.

1 „Gefällt mir“

Top. Kannst du noch kurz eine Anleitung zur Verfügung stellen, wie man den Fehler reproduzieren kann? Dann kann ich es die Tage mal testen…

Der Bug verhält es sich wie folgt:

Nachdem man Kopfhörer per Bluetooth verbunden hat und Musik darüber abspielt kommen immer wieder kleine Artefakte aus dem Hauptlautsprecher (ähnlich wie blops wenn man einen Verstärker ohne Lautsprecherverzögerung einschaltet). Mich wundert, dass das Thema so wenig Resonanz erzeugt hat. Scheinbar nutzen nur wenige Bluetooth oder die Störsignale entstehen nicht bei jedem.:man_shrugging:

Mit dem Bugfix sollte das nicht mehr passieren.

Die Version von Claude war elegant aber hatte das Problem, dass per Kabel eingesteckte Kopfhörer nach dem Trennen von Bluetooth (Ausschalten der Bluetoothkopfhörer) ignoriert wurden - der Hauptlautsprecher wurde trotz eingesteckten Kopfhörer nicht stumm geschalten.

Deswegen diese Zeile AudioPlayer_SetupVolumeAndAmps();

Long Story Short - was sollte jetzt wie laufen:

  • Keine Artefakte aus dem Lautsprecher bei verbundenen Bluetoothkopfhörern
  • Sauberes Umschalten zwischen Lautsprecher, Kabel- und Bluetoothkopfhörer
3 „Gefällt mir“

@joker Vielen Dank für den fix. Ich habe kabelgebunden jetzt noch nicht getestet, aber die Artefakte bei Bluetooth-Wiedergabe hat es behoben.

Die Kinder scheinen sie nicht gestört zu haben, aber wenn ich dem Einen vorlese und der Andere mit Kopfhörern hört, war das gelegentliche - aber doch häufige - Knacken schon störend :smiley:

2 „Gefällt mir“