Musikwiedergabe ruckelt und ESP friert ein

Ich teste aktuell V2.4.4 und habe das Problem, dass die Wiedergabe zwischendurch immer „zuckt“ und dann nach unter einer Minute friert der ESP ein und lässt sich weder über die physischen Tasten noch über das Webinterface steuern. Ebenso bleibt der Neopixel an der aktuellen Position hängen und ich erhalte keine Serielle Ausgabe.

Ich verwende einen ESP32-WROVER mit 16MB Flash und 8MB PSRAM und habe meine Leiterplatte selbst auf einer Lochraster aufgebaut.
Die serielle Ausgabe zeigt, fogende Werte:
D [591] PSRAM: 4194304 bytes
D [591] Flash-size: 16777216 bytes
D [7273] Freier Speicher: 132412 Bytes
Nach dem Start einer Playlist:
D [7296] Free heap: 131984

So lange ich keine Musik starte, läuft der ESP weiter. Das Problem tritt bei mir auf, sobald ich Musik abspiele.

In der platformio.ini habe ich folgendes für mein Board angelegt:

[env:esp32-wrover-devkitc-v4-16mb]
;https://docs.platformio.org/en/latest/boards/espressif32/esp-wrover-kit.html
board = esp-wrover-kit
board_build.partitions = custom_16mb_ota.csv
build_flags = ${env.build_flags}
              -DHAL=99
              -DBOARD_HAS_PSRAM
              -mfix-esp32-psram-cache-issue
              -DLOG_BUFFER_SIZE=10240
              -DBOARD_HAS_16MB_FLASH_AND_OTA_SUPPORT
board_upload.maximum_size = 16777216
board_upload.flash_size = 16MB

Ich verwende folgende settings.h:

#define MDNS_ENABLE
#define NEOPIXEL_ENABLE 
#define LANGUAGE DE
#define SHUTDOWN_IF_SD_BOOT_FAILS
#define MEASURE_BATTERY_VOLTAGE
#define USEROTARY_ENABLE
#define PAUSE_WHEN_RFID_REMOVED
#define SD_MMC_1BIT_MODE
#define RFID_READER_TYPE_MFRC522_SPI

Kennt irgendjemand dieses Verhalten? Das Problem besteht auch bei V2.4.3
„Erase Flash“ habe ich schon gemacht, hat aber nichts geändert.
Die PIN’s 16 & 17 verwende ich nicht.

Aktuell verwende ich bei einer meiner 2 Boxen V2.3, würde jedoch gerne auf V2.4 umsteigen.

Danke schon mal für eure Hilfe.
Liebe Grüße Sebastian

dev oder Main Branch?

Hast mal ein Foto von deinem Aufbau? Lochrasteraufbauten haben oft Probleme…

Ich verwende Main.

Sieht etwas wild aus, würde aber mit der fertigen Leiterplatte auch ned anders aussehen mit den Leitungen zu Tastern und RFID.

Ich habe 2 Leiterplatten aufgebaut und bei beiden das gleiche Problem.

Es wirkt für mich irgendwie, wie wenn etwas mit dem Buffer nicht stimmen würde.

Versuche vielleicht auch mal ein anderes Audioformat oder schicke die mp3 testweise durch einen Audacity-Export. Damit könntest du das Problem etwas weiter eingrenzen.

Du könntest mal auf den aktuellen dev gehen, es waren ein paar bugs in der Audiolib, vielleicht hilft das. Ansonsten mal verschiedene Audioformate testen, ob der Fehler bei allen auftritt. Und nach dem upgrade die Datei aus dem Webinterface aufrufen bzw. die rfid neu anlernen. Sonst fällt mir nichts ein.

Hallo, haben die mp3 ein Coverbild im Tag?

Bei mir gab es auch schon Probleme, wenn die Coverbilder eine zu hohe Auflösung hatten.

Ich habe jetzt den aktuellen dev versucht und das gleiche Problem.
.wav funktioniert ohne Probleme.
.mp3 und Webradio funktionieren nicht.
Also zumindest nicht so wie es sollte.
Coverbild hat die mp3 keines. Zumindest wird keines angezeigt.

Hier noch ein Video wo man hört was passiert.

Ich hab jetzt den PSRAM usw. getestet.
Ich hab anscheinend ein Fake Wrover bekommen :see_no_evil_monkey:
Ich hab jetzt nochmal andere bestellt und schreib dann nochmal sobald ich diese geflasht habe.

Wie genau zeigt sich das?

Ich verwende folgenden Code in der ArduinoIDE:

void setup() {
  Serial.begin(115200);
  delay(1500);

  Serial.println("\n==============================");
  Serial.println("   ESP32 WROVER TEST");
  Serial.println("==============================");

  // --- CHIP INFO ---
  Serial.println("\n--- CHIP INFO ---");
  Serial.printf("Chip Cores:      %d\n", ESP.getChipCores());
  Serial.printf("Chip Revision:   %d\n", ESP.getChipRevision());
  Serial.printf("CPU Freq:        %d MHz\n", ESP.getCpuFreqMHz());

  // --- FLASH INFO ---
  Serial.println("\n--- FLASH INFO ---");
  Serial.printf("Flash Size (reported): %u MB\n", ESP.getFlashChipSize() / 1024 / 1024);
  Serial.printf("Flash Speed:          %u MHz\n", ESP.getFlashChipSpeed() / 1000000);
  Serial.printf("Flash Mode:           %d (0=QIO,1=QOUT,2=DIO,3=DOUT)\n", ESP.getFlashChipMode());

  // --- PSRAM INFO ---
  Serial.println("\n--- PSRAM INFO ---");
  if (psramFound()) {
    Serial.printf("PSRAM Found: YES\n");
    Serial.printf("PSRAM Size:  %u MB\n", ESP.getPsramSize() / 1024 / 1024);

    // Simple PSRAM Write/Read test
    uint32_t *ptr = (uint32_t*) ps_malloc(4096 * sizeof(uint32_t));
    if (!ptr) {
      Serial.println("❌ PSRAM malloc FAILED -> defekt?");
    } else {
      for (int i = 0; i < 4096; i++) ptr[i] = i * 1234;

      bool ok = true;
      for (int i = 0; i < 4096; i++) {
        if (ptr[i] != i * 1234) ok = false;
      }
      free(ptr);

      if (ok) Serial.println("✔ PSRAM Read/Write OK");
      else    Serial.println("❌ PSRAM Read/Write FAILED");
    }
  }
  else {
    Serial.println("PSRAM Found: NO ❌");
  }

  // --- VERDICT ---
  Serial.println("\n--- RESULT ---");

  bool suspect = false;

  if (!psramFound()) suspect = true;
  if (ESP.getPsramSize() < 8 * 1024 * 1024) suspect = true;
  if (ESP.getFlashChipSize() < 8 * 1024 * 1024) suspect = true;
  if (ESP.getChipRevision() <= 1) suspect = true;

  if (suspect) {
    Serial.println("⚠️ Highly suspicious! Possibly FAKE or defective WROVER.");
  } else {
    Serial.println("✔ Looks like a genuine ESP32-WROVER module.");
  }
}

void loop(){}

Und ich erhalte folgende Ausgabe:

rst:0x1 (POWERON_RESET),boot:0x33 (SPI_FAST_FLASH_BOOT)
flash read err, 1000
ets_main.c 371 
ets Jun  8 2016 00:22:57

rst:0x10 (RTCWDT_RTC_RESET),boot:0x33 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:1
load:0x3fff0018,len:4
load:0x3fff001c,len:1216
ho 0 tail 12 room 4
load:0x40078000,len:10944
load:0x40080400,len:6388
entry 0x400806b4

==============================
   ESP32 WROVER TEST
==============================

--- CHIP INFO ---
Chip Cores:      2
Chip Revision:   1
CPU Freq:        240 MHz

--- FLASH INFO ---
Flash Size (reported): 16 MB
Flash Speed:          80 MHz
Flash Mode:           2 (0=QIO,1=QOUT,2=DIO,3=DOUT)

--- PSRAM INFO ---
PSRAM Found: YES
PSRAM Size:  3 MB
✔ PSRAM Read/Write OK

--- RESULT ---
⚠️ Highly suspicious! Possibly FAKE or defective WROVER.

PSRAM mit 3MB gibt es anscheinend gar nicht und die Chip Revision sollte mindestens 3 sein bei einem WROVER, wenn ich das richtig verstanden habe.

Ich habe gelesen, dass der Flash-Mode „qio“ beim WROVER nicht empfohlen wird und man „dio“ verwenden soll, weil „qio“ anscheinend 4 Busleitungen verwendet und beim WROVER 2 davon vom PSRAM verwendet werden und es dadurch zu Problemen kommen kann.
Nur so als Anmerkung, falls ihr da mal irgendwann auf Probleme stoßt.

Ich hab jetzt die neuen WROVER bekommen und diese funktionieren jetzt