CrowPanel 4.2" E-Paper (DIE07300S, V1.0) — panel frozen, won't update even with official factory fw

2

Comments

  • I can confirm this exact issue on two of my own CrowPanel 4.2" E-Paper units. Same symptom: BUSY (GPIO48) never clears after reset, no matter what firmware I compile myself - only the precompiled factory image works. Happy to share detailed logs if useful.

  • Elecrow team, please respond with any workaround, thank you. I'm about to send my THIRD elecrow panel back for a return/replacement. This is super frustrating. The ESP-32 chip is alive and works fine, but nothing can be painted to the screen; that's the whole reason for an e-Paper display.

  • I have the EXACT same issue... Only my panel says v1.2

  • @bEngel79 said:
    I can confirm this exact issue on two of my own CrowPanel 4.2" E-Paper units. Same symptom: BUSY (GPIO48) never clears after reset, no matter what firmware I compile myself - only the precompiled factory image works. Happy to share detailed logs if useful.

    Can you post the link to the image that actually works?
    In my case, only the firmware that came with worked, and then whatever else I flash, it does not.

  • Why is no-one from Elecrow actively looking into this? It's been WEEKS!!

  • Brought it back to "life" with "green sticker" firmware.... But how do I compile the examples to get my own SW working...???

  • Solved mine with "green dot" firmware and examples. Also reverted ESP32 package in Arduino back to 2.0.14.

  • Can confirm that I have the exact same issue as OP, and I created an account to ask about this. I will try the green dot firmware and report if that fixes my issues.

  • edited August 7
    Holy cow I GOT IT TO WORK. 
    Let's see if I can describe it. Make sure that you set the Upload Speed to 115200 (Tools > Upload Speed in Arduino IDE). 
    
    
    
    
    Arduino IDE 2.3.10
    1) The green dot firmware lead was helpful. 
    2) I'm using "ESP32S3 Dev Module" as the board 
    3) Install the "GxEPD2" library (v 1.6.9 tested and works) 
    With this script below, I was able to write to the 4.2" Elecrow screen for the first time, and finally don't have the BUSY nonsense. 
    
    == Apologies for the weird formatting of this post ==
    
    
    TEST SCRIPT:
    
    /*
     * GxEPD2_CrowPanel42_Test.ino
     *
     * Elecrow CrowPanel ESP32-S3 4.2" E-Paper (400x300, DIE07300S)
     * green-sticker / UC8276C revision, driven via GxEPD2.
     *
     * Install "GxEPD2" by Jean-Marc Zingg from the Library Manager.
     * Board settings unchanged: ESP32S3 Dev Module, 8MB flash, OPI PSRAM,
     * Huge APP partition, USB CDC On Boot enabled.
     * esp32 core 2.0.14 recommended.
     */
    
    #include <SPI.h>
    #include <GxEPD2_BW.h>
    #include <Fonts/FreeMonoBold12pt7b.h>
    
    // ---- board pins -----------------------------------------------------------
    #define EPD_CS    45
    #define EPD_DC    46
    #define EPD_RST   47
    #define EPD_BUSY  48
    #define EPD_SCK   12
    #define EPD_MOSI  11
    #define EPD_MISO  -1   // unused, panel is write-only
    
    #define PWR_MAIN  41   // green-sticker revision needs this rail
    #define PWR_EPD    7
    
    // ---- the instantiation ----------------------------------------------------
    // File scope. GxEPD2_420_SE0420NQ04 is the UC8276C 400x300 class.
    // ::HEIGHT allocates the full 15000-byte framebuffer, fine on ESP32-S3.
    GxEPD2_BW<GxEPD2_420_SE0420NQ04, GxEPD2_420_SE0420NQ04::HEIGHT>
      display(GxEPD2_420_SE0420NQ04(EPD_CS, EPD_DC, EPD_RST, EPD_BUSY));
    // ---------------------------------------------------------------------------
    
    void setup() {
      Serial.begin(115200);
      delay(2000);
      Serial.println("\nGxEPD2 CrowPanel 4.2 test");
    
      // Power rails first, before any SPI traffic.
      pinMode(PWR_MAIN, OUTPUT);
      digitalWrite(PWR_MAIN, HIGH);
      pinMode(PWR_EPD, OUTPUT);
      digitalWrite(PWR_EPD, HIGH);
      delay(100);
    
      // Remap SPI to this board's pins. Must happen before display.init().
      SPI.begin(EPD_SCK, EPD_MISO, EPD_MOSI, EPD_CS);
    
      Serial.println("display.init()");
      display.init(115200, true, 2, false);
    
      // Re-assert the remapped bus in case init() reset it to defaults.
      display.epd2.selectSPI(SPI, SPISettings(4000000, MSBFIRST, SPI_MODE0));
    
      display.setRotation(0);
      display.setTextColor(GxEPD_BLACK);
      display.setFont(&FreeMonoBold12pt7b);
    
      Serial.println("drawing...");
      display.setFullWindow();
      display.firstPage();
      do {
        display.fillScreen(GxEPD_WHITE);
        display.drawRect(2, 2, display.width() - 4, display.height() - 4, GxEPD_BLACK);
    
        display.setCursor(20, 60);
        display.print("GxEPD2 PASS");
    
        display.setCursor(20, 100);
        display.print("UC8276C 400x300");
    
        display.fillRect(20, 130, 80, 60, GxEPD_BLACK);
        display.fillCircle(320, 160, 40, GxEPD_BLACK);
    
        display.setCursor(20, 250);
        display.print("WOW THIS WORKED - full refresh ok");
      } while (display.nextPage());
    
      Serial.println("done, hibernating");
      display.hibernate();
    }
    
    void loop() {
      delay(1000);
    }
    
  • @stevemur Just created an account for the sole reason of thanking you. I was so close to returning two of these devices but your fix saved my project.

Sign In or Register to comment.