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.
@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.
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.
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);
}
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
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.
@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.