Aktueller Stand ESP32-Arduino 2

OK, da waren ja jetzt mehrere Sachen zusammengelaufen! Bugfix für die Abstürze (die auch Arduino 1.0.6 betrafen) scheint ja jetzt drin zu sein.

Für Arduino 2: Auch wenn mehrere Leute hier das schon einsetzen ist das noch EXPERIMENTELL, es gibt noch einige Dinge die geklärt sein müsssen bevor das offiziell werden kann.

Aus Kompatibiltätsgründen müssen wir wohl früher oder später eine Fallunterscheidung zwischen Arduino 1.6 und 2.0.X einbauen. Oder hattest du nochmal eine bessere Idee?

Genau das wird jetzt schon gemacht. Z.B. hier:

Frage, wo setzt man bei dem Umlautproblem im Dateinamen jetzt am Besten an? Fix in convertUtf8ToAscii() oder einzeln an den jeweiligen Stellen in web.cpp?

2 „Gefällt mir“

Im ersten Schritt würde ich es einfach in der Funktion ändern um Aufwand zu sparen. Vielleicht mit einem Kommetar das später mal noch sauber zu ziehen :wink: .
Schöner wäre aber vermutlich schon das an jeder stelle dreikt zu unterscheiden.
Ich habe dabei keine Preferenzen.

Schnurrt wieder wie ein Kätzchen der ESPuino. Danke!

2 „Gefällt mir“

Bei mir gibt es 50 % Erfolg. Der Mini 4 Layer läuft wieder. Der Zweit kommt jetzt mit einem SD Card Fehler. [E][SD_MMC.cpp:85] begin(): Failed to initialize the card (263). Make sure SD card lines have pull-up resistors in place.

Der Zweit kommt jetzt mit einem SD Card Fehler. [E][SD_MMC.cpp:85] begin(): Failed to initialize the card (263). Make sure SD card lines have pull-up resistors in place.

Das läuft problemlos bei Dir mit Arduino 1.0.6 bei gleichen Settings? Also Fehler tritt nur mit Arduino 2 auf?

OK, dann bist Du hier im falschen Thema: Hier geht es um all die Umstellungen die notwenidig sind um ESPuino auf dem neuen IDF zum Laufen zu bringen. Damit handelst Du Dir automatisch neue Probleme ein! Bringe doch erstmal den ESPuino vernünftig zum Laufen mit dem offiziellen Master basierend auf 1.0.6.

Zu Deinem Fehler: Die SD-Karte kann bei jedem 2.Start nicht eingebunden werden? Das könnte jetzt mehrere Ursachen haben:

  • Schlechte Verkabelung: Fällt raus weil Du hast ja 4-Layer Platine
  • Keine Pullup Widerstände: Auch die sind richtig auf der Platine drauf

Also Hardware-Problem schließe ich aus.
Bist Du alle Punkte durchgegangen wie hier beschrieben?
Vor allem POWER muss stimmen. Könntest die Versorgungspannung der SD auch noch messen.
Arbeitest Du im Batteriebetrieb? Und mit LPCD? SD-Karte <64GB?

Neue Testrunde für die MuTiger :wink:

Arduino 2.0.7 ist seit einer Woche veröffentlicht und lässt sich mit PlatformIO jetzt auch verwenden. Ist noch nicht offziell aber kann mit dem Development-Zweig eingebunden werden:

[env]
;platform = espressif32@<=6.0.1
platform = https://github.com/platformio/platform-espressif32.git

ESPuino kompiliert fein, nach dem Start zeigt es eine neuere IDF Version 4.4.4:

ESP-IDF version: v4.4.4

Ich habe beim Webupload weniger Schwankungen und minimal 300KB/s. Kann das jemand bestätigen?

Ansonsten gibt es noch die Probleme mit Umlauten im Dateinamen, die müssen wir aber hier im Projekt fixen. Hat jemand schon eine Lösung dafür?

Gerne Feedback hier!

1 „Gefällt mir“

Ist es wirklich noch sinnvoll jede neue Version „zu testen“?
Ich glaube ja irgendwie nicht, dass da noch unsere Probleme behoben werden.
Wie Du schon schreibst, müssen wir das im Code anpassen - und vermutlich für IDF 5 auch wieder.

2.0.7. wird voraussichtlich die letzte Version auf der Basis von IDF 4 sein. IDF 5 ist bereits released.

Ich finde auch die Unterscheidung im Code zwischen 1.x und 2.x schwierig. Sollte man nicht den Code fit für 2.x machen und dann den alten 1.x „Zopf abschneiden“?
Man kann sicher auch argumentieren, einfach bei 1.x zu bleiben, weil der Code dort fehlerfrei läuft - neue Hardware wird dort aber sicher nicht unterstützt.

Ich denke auf kurz oder lang wird uns nix Anderes übrigbleiben, als auf 2.x zu wechseln. Im Prinzip gibt’s auch nur zwei Dinge, die nachteilig wären:

a) WLAN-Verbindungsaufnahme: Weiß der Kuckuck, warum das immer nur jedes zweite Mal klappt. Hatten wir bei Arduino1 auch mal, aber das haben sie in den Griff bekommen. Vielleicht muss ich mir da mal Code von anderen Projekten anschauen - vielleicht geht das ja irgendwie besser.
b) Durchsatzraten. Da habe ich bei Arduino1 gesehen, dass ich brutto teilweise über 500 kB/s liege. Wie ist da nochmal der aktuelle Stand bei Arduino2?

Vorteilig (Liste ggf nicht vollständig):
a) Gibt keine Probleme mit MQTT.
b) Die GUI wird latenzfreier angezeigt.
c) Weniger Speicherverbrauch.

Also vielleicht geht man einfach hin und macht einen Branch Arduino2 und diesen entwickelt man dann in die Richtung. So arg weit wird der Weg vermutlich auch nicht sein, da verschiedene Dinge ja bereits umgesetzt wurden.

@tueddy Was meinst du dazu?

Also erstmal haben wir hier Luxusprobleme: Der Stand Arduino 1 läuft sehr stabil (bis auf einige Bugs die letzten Wochen) und Arduino 2 ist doch auch schon recht weit. Einige Leute hier setzen das ja schon in Ihrer Box ein. Die verbliebenenen Probleme lichten sich.
Bisher sind wir ohne eigenen Branch ausgekommen, nur an wenigen Stellen müssen wir zwischen 1/2 unterscheiden. Vorteil jetzt, man kann mit einer Zeile in Platform.ini umschalten und Beides testen. Das finde ich schon fein. Aus meiner Sicht ist kein eigener Branch für Arduino 2 notwendig. Eher ein Dev-Branch für neue Entwicklungen um Regressionen zu vermeiden…

WLAN Verbindungsprobleme habe ich überhaupt nicht mehr! Seit ich in der FRITZBox WPA3/2 auf reines WPA2 umgestellt habe verbindet sich ESPuino immer zuverlässig & schnell.

Aus meiner Sicht bleibt nur der schwankende Web-Upload. Den habe ich bisher immer im IDF 4.4 verortet, aber @Christian hat für den Upload den Audio- und LED-Task pausiert und viel gleichmäßigere Ergebnisse erzielt. Das deutet auf andere Lastverteilung der Tasks in Arduino 2 hin und könnte hier bei uns behoben werden.

Mein Vorschlag:

  • Wir nehmen zunächst die Idee von @Christian auf, während des Web-Uploads Audio- & LED-Task zu pausieren. Ich denke damit könnte man gut leben, Feedback hat man eh in der Web-UI und Audio weiterlaufen zu lassen. Damit können wir die Schwankungen schon mal verkleinern und besser messen/vergleichen.

  • Umlaute im Dateinamen: Das Problem ist ja recht neu durch die Änderungen am Dateisystem. Sollte lösbar sein, ich habe das aber noch nicht hinbekommen. Vielleicht können wir das zunächst fixen? Sollten nur wenige Zeilen sein…

Ist es wirklich noch sinnvoll jede neue Version „zu testen“?

Nicht jede, aber hier ist IDF von Version 4.4.3 auf 4.4.4 gehoben worden. Ich sehe im Release auch einige Fixes im Wifi-Bereich:

Ich verwende jetzt schon einige Zeit Arduino 2. Ich will auch nicht mehr zurück weil es damit bei mir deutlich weniger/kürzere Störgeräusche beim Zugriff auf SD gibt. Auch wenn ich mit Arduino 2 massive Probleme habe. Und außerdem …Stillstand ist Rückschritt. Die Entwickler werden das in den Griff kriegen, sie müssen die Problem nur erfahren.

So das PlatformIO Arduino Package 6.1.0 ist jetzt offiziell, mal schaun wie’s es hier weiter gehen kann:

3 „Gefällt mir“

Ich habe jetzt nochmal das Umlautproblem in der Web-UI getest und kann mit der aktuellen Version Arduino 2.0.7 / Platform-Package 6.1.0 keine Probleme mehr feststellen:

[env]
platform = espressif32@<=6.1.0
;platform = espressif32@<=3.5.0

Also das klappt fehlerfrei bei mir:

  • Rechte Maustaste auf Datei mit Umlaut und „Abspielen“
  • Rechte Maustaste auf Ordner mit Umlaut und „Abspielen“
  • Rechte Maustaste auf Root und „Neuer Ordner“ mit Umlaut
  • Rechte Maustaste auf Datei mit Umlaut und „Löschen“
  • Rechte Maustaste auf Ordner mit Umlaut und „Löschen“

Also alle Menupunkte aus dem Kontextmenu funktionieren. Einizige Änderung bei mir war ein Wechsel der IDE von Windows 11 auf Mac da ich Upload-Probleme mit aktuellen USB-C Board auf Win11 hatte.

Kann das jemand so bestätigen?

1 „Gefällt mir“

Verstehe ich das richtig, dass sich das Problem damit quasi selbst gefixt hat?

Ja genau,durch Woodoo oder Magie oder Fix in irgendwas.

Daher würde ich Euch bitten das durch eine 2. Meinung zu bestätigen…

OH NEIN, mein Fehler! Kein Woodoo, sondern fehlendes „Clean“ + „Build“.
In der Weboberfläche unter Info bekomme ich ESP-IDF version: v3.3.5-1-g85c43024c.

Sorry, Alles auf Anfang…

War wohl zu spät gestern :wink:

Bin das Umlautproblem heute in Ruhe nochmal angegangen und aus meiner Sicht reichen diese Zeilen in Common.h für den Bugfix:

inline void convertUtf8ToAscii(String utf8String, char *asciiString) {
	#if ESP_ARDUINO_VERSION_MAJOR >= 2
        strncpy(asciiString, (char *) utf8String.c_str(), utf8String.length() / sizeof(asciiString[0]));
		asciiString[utf8String.length()] = 0;
		return;
	#endif
...

Dateinamen sind in Arduino1 UTF-8 kodiert und in Arduino2 direkt Unicode. Ob der obige Code jetzt so optimal ist - Da muss noch ein C-Experte drüberschauen. Die Funktion ist dann etwas unglücklich benannt, evt. hier lieber convertFileToAscii ?
Auf jeden Fall kann ich jetzt Dateien und Ordner mit Umlauten über Web-UI abspielen.

Es gibt noch Problem wenn CACHED_PLAYLIST_ENABLE aktiviert ist:
„playlistcache.csv“ erzeugt mit Arduino1 ist nicht kompatibel mit Arduino2.
Beim Wechsel auf 2 müssten einmalig alle playlistcache.csv gelöscht oder eine Versionierung eingebaut werden. Wie könnte man das lösen?

1 „Gefällt mir“

Ein kleiner Header könnte helfen. Wenn der header fehlt: löschen und neu erstellen.
Wäre was für den dev-branch. Oder?
Sollen wir dort den aktuellen Stand von Arduino 2 einbauen?

Ja Header-Zeile „Version#2“ ist eine gute Idee! Damit könnte man wieder beliebig zwischen Arduino 1/2 umschalten ohne Probleme.

Wäre was für den dev-branch. Oder?

Tja das ist mir recht wurscht. @biologist, in welches Schweinerl hätten Sie’s denn gern?
Könnte dafür einen PR erstellen so oder so. Aus meiner Sicht kann das auch in den Master da alle Änderungen über einen Compiler-Schalter laufen (also nichts kaputt machen können). Das ist hier auch kein neues Feature sondern die Zukunft…

Das ist für mich ok, wenn du dafür einen PR für den Master machst.

1 „Gefällt mir“