BoseFix32 — lokaler SoundTouch-Cloud-Ersatz auf einem ESP32

Begonnen von tostmann, 21 Mai 2026, 00:26:36

Vorheriges Thema - Nächstes Thema

tostmann

Ja, das ist normal.

Zum Vergleich, hier gerade gemessen:

Stick    Boxen  belegt
S3          3    268 / 630
C6          3    277 / 630
deiner      1    263 / 630

Zwei Sticks mit drei Boxen liegen also praktisch gleichauf mit deinem mit einer. Der Verbrauch steckt fast vollständig im Grundbedarf, nicht in der Anzahl der Boxen — eine Box mehr kostet nur wenige Einträge.

Deine zweite Zahl passt dazu: die 7 Stream-Adressen haben 48 Einträge gekostet, also rund 7 pro Adresse.

Woraus sich der Grundbedarf im Einzelnen zusammensetzt, habe ich nicht aufgeschlüsselt.

betateilchen

@Dirk nur mal interessehalber: wird bei Dir der C5 N16R8 mit "Identify my board" korrekt erkannt?

Bei mir kommt da immer eine 4MB Version als Ergebnis.
In sixback.local steht dann korrekt 16MB.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

tostmann

Danke fürs Melden — das lag nicht an deinem Board, sondern an der Board-Erkennung der Flasher-Seite. Ich konnte es hier an einem C5 mit 16 MB nachstellen.

Ursache: die Bibliothek hinter "Identify my board" (esptool-js) spricht beim C5 den SPI-Controller des C3 an, Basis 0x60002000 statt 0x60003000. Der Flash-Chip antwortet damit überhaupt nicht, und die Bibliothek fällt still auf "4MB" zurück — von einem echten 4-MB-Fund nicht zu unterscheiden. Der C6 war genauso betroffen, da fiel es nur nie auf, weil 4 MB dort zufällig stimmt.

Ist gefixt und seit eben live: die Seite korrigiert die Basis selbst und liest die Flash-Kennung roh. Wenn sie nichts lesen kann, markiert sie jetzt gar kein Image mehr, statt eins zu empfehlen.

Magst du das unabhängig nachprüfen? https://sixback.io/boards.html mit deinem C5 N16R8 — hier wird jetzt das 16-MB-Image als passend markiert. Falls bei dir etwas anderes herauskommt, poste bitte die "Detected:"-Zeile.

betateilchen

Zitat von: tostmann am 17 August 2026, 17:07:40Magst du das unabhängig nachprüfen? https://sixback.io/boards.html mit deinem C5 N16R8 — hier wird jetzt das 16-MB-Image als passend markiert.

Sieht gut aus.
Danke fürs Kümmern.

Du darfst diesen Dateianhang nicht ansehen.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

tostmann

@betateilchen: kurze Rückmeldung, was aus Deinem "der C5 wird als 4-MB-Version erkannt" geworden ist — der Hinweis ist bis zu Espressif durchgelaufen.

Die Ursache lag nicht in SixBack, sondern in esptool-js, der Bibliothek hinter dem Web-Flasher: sie benutzt für C5, C6, C61 und H2 die SPI-Registerbasis des C3 (0x60002000 statt 0x60003000). Dadurch kam die Flash-ID als 0 zurück und die Größenerkennung fiel still auf "4MB" zurück — von echten 4 MB nicht zu unterscheiden. Auf der Flasher-Seite ist das seit dem 17.08. korrigiert, das hattest Du ja gegengetestet.

Upstream gab es dazu ein seit November offenes Issue ohne Ursachenanalyse. Ich habe die Messungen dort hinterlegt, und Espressif hat den Fix daraufhin selbst umgesetzt und um Review gebeten. Beim Nachmessen fiel noch ein zweiter, älterer Fehler auf (Flashen mit "detect" als Flash-Größe schlug immer fehl) — der ist im selben Pull Request mit erledigt.

https://github.com/espressif/esptool-js/issues/217
https://github.com/espressif/esptool-js/pull/253
https://github.com/espressif/esptool-js/issues/254

Gemerged ist der PR noch nicht. Sobald er in einer Release-Version landet, profitiert davon jedes Projekt, das esptool-js benutzt — nicht nur unseres. Danke für die Meldung.

erwin23

#245
Hallo,
ich habe das Problem, das einige Sender aus Tunein nicht funktionieren, hier z.B. der RBB88.8 !
Ist das nur bei mir so? Hänge mal die Presets dran. Fehlerhaft ist der Preset 2

<presets>
<preset id="1">
<ContentItem source="TUNEIN" type="stationurl" location="/v1/playback/station/s228737" sourceAccount="" isPresetable="true">
<itemName>NDR 2 Hamburg</itemName>
<containerArt>https://sixback.io/stations/tunein-logo/s228737</containerArt>
</ContentItem>
</preset>
<preset id="2" createdOn="1787225403" updatedOn="1787225403">
<ContentItem source="TUNEIN" type="stationurl" location="/v1/playback/station/s25677" sourceAccount="" isPresetable="true">
<itemName>rbb 88,8</itemName>
</ContentItem>
</preset>
<preset id="3">
<ContentItem source="TUNEIN" type="stationurl" location="/v1/playback/station/s50412" sourceAccount="" isPresetable="true">
<itemName>Bremen Zwei</itemName>
<containerArt>https://sixback.io/stations/tunein-logo/s50412</containerArt>
</ContentItem>
</preset>
Beste Grüße
Raspberry PI mit Cul 868, diverse HM Komponenten

betateilchen

rbb88.8 funktioniert hier problemlos.

<preset id="6" createdOn="1787227879" updatedOn="1787227879">
<ContentItem source="TUNEIN" type="stationurl" location="/v1/playback/station/s25677" sourceAccount="" isPresetable="true">
<itemName>rbb 88,8</itemName>
</ContentItem>
</preset>

und spielt wunderbar.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

tostmann

@erwin23: Ich habe die beiden Presets verglichen — der ContentItem in Deinem Preset 2 und der in betateilchens Preset 6 sind identisch, bis auf Nummer und Zeitstempel. Die Station ist auch unauffällig: s25677 liefert bei TuneIn eine reine MP3 mit 128 kbit, kein AAC und kein HLS, also keiner der beiden Fälle, die hier früher Ärger gemacht haben. Und ich habe Deinen ContentItem wortgleich auf einem SoundTouch 10 angespielt: läuft, über eine Minute stabil, mit Live-Text vom Sender.

Der Unterschied liegt damit nicht am Preset. Vier Fragen, damit ich weiterkomme:

- Welche SixBack-Version läuft bei Dir, und auf welchem Stick? Steht auf der Startseite unter sixback.local.
- Welches Speaker-Modell, und welcher Firmware-Stand?
- Was passiert genau, wenn Du Preset 2 drückst: bleibt es still, kommt die englische Ansage "not compatible", oder springt die Box nach ein paar Sekunden zurück?
- Du schreibst "einige Sender": laufen NDR 2 und Bremen Zwei aus Deinen Presets 1 und 3 auf derselben Box? Und welche gehen sonst noch nicht?

erwin23

Ich habe den ESP32 S3 neu geflasht und die Presets neu eingerichtet.
Jetzt geht auch Rbb88.8. Weiss der Teufel was das war.
Beste Grüße
Raspberry PI mit Cul 868, diverse HM Komponenten

tostmann

Danke — und ein Angebot, falls ihr Lust habt

Erst das, was zwischen den Bug-Reports untergeht: danke an fred_feuerstein und betateilchen. Eure Mitschnitte und das geduldige Nachstellen sind der Grund, warum aus etlichen Fehlern überhaupt Fixes geworden sind — die Portal-Reboot-Schleife wäre ohne Report von außen nie aufgefallen. Reports, die beschreiben was passiert ist statt was der Melder vermutet, sind selten.

Weil ihr ohnehin ESP32-Hardware auf dem Tisch habt: nebenher ist etwas fertig geworden, das für FHEM interessanter sein könnte als für Home Assistant.

Ein Thread Border Router, der auf dem Host fast nichts hinterlässt

Der Router läuft komplett in der Firmware des Sticks — kein RCP, kein Co-Prozessor. Die Verbindung zum Rechner ist der USB-Port des Chips; host-seitig macht ein Container daraus ein Netzwerk-Interface, und danach habt ihr eine IPv6-Route ins Thread-Netz.

Und genau das ist der Punkt für uns: kein otbr-agent, kein wpantund, kein Thread-Stack, kein Radio-Treiber. Nachgesehen, nichts davon liegt auf dem Rechner. Was läuft, sind zwei Python-Prozesse, ein tap-Interface, eine Route. Das gesamte Protokoll steckt auf dem Stick. Also nichts, was einer FHEM-Installation ins Gehege kommt, keine Daemon-Sammlung, die man sich ins System holt, und keine Abhängigkeit von der Home-Assistant-Welt — es gibt das Ganze als HA-Add-on und als normales Docker-Image, und der Docker-Weg hat mit HA nichts zu tun.

Nebeneffekt derselben Bauweise: das Thread-Netz überlebt alles auf dem Host. Container neu starten, austauschen, aktualisieren — das Mesh läuft weiter, weil es im Stick liegt. Gemessen: 18 Stunden ohne Reset über zwei Container-Updates hinweg.

... bevor jemand Zeit investiert

Ihr bekommt IP-Erreichbarkeit ins Thread-Netz. Ihr bekommt kein Matter. Im offiziellen FHEM-Modulverzeichnis liegen 619 Module, keines für Matter oder Thread. Eine fertige Matter-Lampe wird durch den Border Router allein also kein FHEM-Device — dafür fehlt der Protokoll-Stack samt Commissioning, und den löst dieses Projekt nicht.

Sinnvoll ist es heute für Geräte im Thread-Netz, die schlicht IP sprechen: eigene Firmware, CoAP, HTTP. Die erreicht ihr dann wie alles andere im Netz.

Hardware

ESP32-C6 mit 4 MB Flash am nativen USB-Port — das ist der Dauerbetrieb. Der C5 läuft auch, unverändert gebaut, hier gerade mit einem produktiven Netz; rund 130 KB freier Speicher gegen 265 KB beim C6. Vorbehalt: auf dem getesteten C5 setzte die Verbindung über den chipeigenen USB-Port gelegentlich aus, bis der Chip zurückgesetzt wurde — nicht jedes Mal, beim C6 nie; ein Board mit UART-Brücke macht das harmlos. Der H2 kann es nicht, dafür liefert Espressif keine Bibliothek.

Sticktausch ohne Neu-Anlernen

Die Netzdaten des Sticks landen in einer 24-KB-Datei, die in den HA-Backups mitläuft. Heute ausprobiert: von einem C6 gesichert, auf einen C5 zurückgespielt, C6 abgezogen, C5 an dessen Platz — das Mesh formte sich mit allen Knoten neu und die angelernte Lampe schaltete wieder, ohne ein einziges Gerät neu anzulernen. Die Datei überträgt die vollständige Identität des Routers; entsprechend dürfen zwei Sticks mit derselben Sicherung nie gleichzeitig senden.

Quellen:  https://github.com/tostmann/THBR
Image:    docker pull tostmann/thbr

Lizenz PolyForm Noncommercial 1.0.0 — privat und nichtkommerziell frei.

Was mich interessieren würde

Was habt ihr an Hardware da, C6 oder C5? Und was wollt ihr über Thread erreichen — fertige Matter-Geräte oder eigene? Beim ersten sage ich gleich, dass der Weg in FHEM heute nicht zu Ende ist. Beim zweiten wird es interessant. Und wenn ihr gerade keine Lust auf ein weiteres Bastelprojekt habt: völlig in Ordnung, dann bleibt es beim Dank.

Inspiriert durch Matthias Kleines Youtube-Film "IKEA und Matter - wirklich so viele Probleme?"

fred_feuerstein

Aktuell habe ich einen S3 übrig. Aber: ich habe keine matter Geräte etc. Somit keine wirkliche Testumgebung oder was anderes sinnvolles dazu beizutragen.

Bin bei diesem Projekt also raus :)
Vielleicht sieht es bei betateilchen anders aus.

Wünsche aber viel Erfolg.
Gruß, Fred

NEU: FHEM auf Raspberry PI 5, OS: Bookworm, mit Z-Wave RaZberry-Modul, 868CUL (WMBUS), LaCrosseCUL (Temp) und knapp 300 Devices aller Art

fred_feuerstein

Bzgl. SixBack hätte ich eine Frage. Klar, du hattest ja schon erwähnt, dass es in erster Linie um die Organisation mit den Lautsprechern, Presets usw. geht und weniger um die Steuerung der Lautsprecher. Aber POWER und VOLUME hast du auch mit dabei ;)

Wäre es nicht gut, noch ein paar Steuerungsmöglichkeiten mehr zu haben?
Ich denke da an PLAY / PAUSE / STOP / SKIP FW / SKIP BW
Ausserdem ggfs. Modusumschaltung BLUETOOTH, AUX, STREAM

Wie siehst Du bzw. ihr das?

Gruß, Fred

NEU: FHEM auf Raspberry PI 5, OS: Bookworm, mit Z-Wave RaZberry-Modul, 868CUL (WMBUS), LaCrosseCUL (Temp) und knapp 300 Devices aller Art

betateilchen

Zitat von: fred_feuerstein am 25 August 2026, 09:44:48Wäre es nicht gut, noch ein paar Steuerungsmöglichkeiten mehr zu haben?
Ich denke da an PLAY / PAUSE / STOP / SKIP FW / SKIP BW
Ausserdem ggfs. Modusumschaltung BLUETOOTH, AUX, STREAM

Wie siehst Du bzw. ihr das?

Das Ein-/Ausschalten halte ich in sixback durchaus für sinnvoll.

Aber alles, was darüber hinausgeht (das fängt für mich schon bei der Gruppenbildung an) sehe
ich nicht als Aufgabe von sixback, auch die Lautstärkeregelung nicht. Sowas kann man jederzeit in FHEM umsetzen und ggf. mit Wanddisplays oder anderen Fernbedienungen steuern.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

tostmann

@fred: berechtigte Frage — die Antwort ist trotzdem ein ehrliches Nein: mehr Steuerung wird in SixBack nicht dazukommen. Da bin ich ganz bei betateilchen. SixBack kümmert sich um das, was mit der Cloud-Abschaltung wirklich gestorben ist (Presets, Konten, Organisation), und der Support für diese Mission muss überschaubar bleiben.

Die gute Nachricht: für PLAY/PAUSE/SKIP und die Quellenumschaltung braucht es SixBack gar nicht. Die Boxen nehmen Tastendrücke bis heute lokal auf Port 8090 entgegen, ganz ohne Cloud — das sind zwei kleine HTTP-POSTs direkt an den Lautsprecher (genau darüber laufen bei SixBack heute schon POWER, VOLUME und das Setzen der Preset-Tasten):

POST http://<speaker-ip>:8090/key
Content-Type: text/xml

<key state="press" sender="Gabbo">PLAY</key>

danach dasselbe mit state="release"

Welche Tasten-Tokens ein Gerät tatsächlich ausführt (PLAY, PAUSE, NEXT_TRACK, AUX, BLUETOOTH, ...), ist nicht offiziell dokumentiert — das probiert man am besten kurz am eigenen Gerät aus. In FHEM gibt es für die lokale SoundTouch-API übrigens seit langem das BOSEST-Modul (Forum-Thread 46838), alternativ ist so ein Tastendruck ein Fall für HTTPMOD

fred_feuerstein

#254
Zitat von: betateilchen am 26 August 2026, 10:04:08sehe ich nicht als Aufgabe von sixback, auch die Lautstärkeregelung nicht. Sowas kann man jederzeit in FHEM umsetzen und ggf. mit Wanddisplays oder anderen Fernbedienungen steuern.

Zitat von: tostmann am 26 August 2026, 14:03:31berechtigte Frage — die Antwort ist trotzdem ein ehrliches Nein: mehr Steuerung wird in SixBack nicht dazukommen. Da bin ich ganz bei betateilchen. SixBack kümmert sich um das, was mit der Cloud-Abschaltung wirklich gestorben ist (Presets, Konten, Organisation), und der Support für diese Mission muss überschaubar bleiben.

für meine Boxen zuhause brauche ich das auch nicht zwingend, da ich überall Wanddisplays habe und das über FHEM steuere.

Dachte nur für Leute, die sonst keinerlei Smarthome System haben. Ja, sowas soll es noch geben ;) :D War ja früher für Bose Lautsprecher nicht nötig, da hat die App gereicht. Und wenn es nun schon eine zentrale Stelle für die Verwaltung und auch Steuerung der Presets, On/off und Lautstärke gibt, wären ein paar weitere Tasten sicher nicht schlecht.
Aber das war ja auch nur ein Vorschlag.
 
Vom Handling her bin ich halt auch aus Testzwecken noch oft in der SixBack Oberfläche. Wenn ich dann aber eine laufende Playlist habe muss ich den Tab wechseln bspw. zu fhem und dort dann SKIP etc. machen. Das war der Hintergrund aus meiner aktuellen Nutzung. Presets, Lautstärke kann ich in SixBack ändern und für Skip etc. muss ich das System wechseln.
Dass es andere Steuerungsmöglichkeiten gibt ist ja klar. Alle anderen alternativen Systeme für Bose Lautsprecher haben allerdings auch mindestens die einfachen Steuerungen integriert.

Aber ist jetzt auch kein riesen Problem. Wie gesagt. Steuerungsmöglichkeiten gibt es ja viele...

Also Thema erledigt :)


Gruß, Fred

NEU: FHEM auf Raspberry PI 5, OS: Bookworm, mit Z-Wave RaZberry-Modul, 868CUL (WMBUS), LaCrosseCUL (Temp) und knapp 300 Devices aller Art