Good Dispay ePaper for Arduino

Dear Jean-Marc,

thank you very much for your answer.

After hours of testing, I found the mistake -and was mixing up MISO and MOSI :slight_smile:

Maybe just interesting, I ordered a TFT with Front-Light and think this is just looking great. Also to note, it needs 21V.


Version 1.3.3 of library GxEPD2 is available, install with Library Manager.

For details see this post: Waveshare e-paper displays with SPI - #2599 by ZinggJM


I recently bought Lilygo TTGO T5 v2.3_2.13 which apparently uses the GoodDisplay GxGDE0213B1 (2.13" B/W) e-ink display.

I downloaded your GxEPD library, however no matter what I do I can't make the display to update. I compile & upload the sketch successfully to the board, run it aaand ... nothing happens. Below I'll explain what I'm doing

Here's the code that I'm trying to use to display stuff and nothing happens: #include <Arduino.h>#include <NTPClient.h>#include <GxEPD.h>#include <GxGD -

This is the board that I bought TTGO T5 V2.3 wireless WiFi basic Wireless Module ESP 32 esp32 2.13 ePaper display development board|Replacement Parts & Accessories| - AliExpress

Thank you for any information in advance. Any hint is helpful. I am out of ideas as to what I am doing wrong.

The Arduino IDE is set to esp32-dev board. The code compiles and uploads successfully. The display is integrated basically so I physically can't plug it in the wrong pins or something. I send the commands and nothing happens. The debug messages that I get from the display class are the following

Connecting to wifi...
Connected to wifi.
Current time: 18:52:33
testDisplay init
โ€_PowerOn : 90841
_Update_Full : 90952
_PowerOff : 230917
_PowerOn : 90588
_Update_Full : 91352
_PowerOff : 230921
โ€_PowerOn : 90473
_Update_Full : 91399
_PowerOff : 230917
_PowerOn : 90546
_Update_Full : 91363
_PowerOff : 230921

P.S: The board supports SD cards but I haven't plugged one in yet. Could this be a problem, one that tricks the SPI interface?

@ltsochev, Hi, welcome to the forum.

The e-paper panel GDE0213B1 is no longer available, see GxEPD/ at master ยท ZinggJM/GxEPD ยท GitHub.

  • GDEH0213B72 2.13" b/w, replacement for GDE0213B1
  • GDEH0213B73 2.13" b/w, new replacement for GDE0213B1, GDEH0213B72

For new projects I recommend to use GxEPD2.
It is easier to use (in my view), and supports more e-paper panels.

You could just try with GxEPD2 and all available 2.13 b/w panel drivers.


I tried with GxEPD2 using the GxEPD2_213_B72, GxEPD2_213_B73 drivers all I'm getting is "Busy Timeout!" even when running the example solutions with proper selected panels.

I don't see any pin settings for GxEPD2 I suppose those are integrated in the drivers?

P.S: Tried all the drivers, none of them changed the display. I'm starting to think that the display is simply bust lol. How can I check that? Currently it is displaying LILYGO's logo and SKU number.

P.P.S: Nothing wrong with the display. The display selector had wrong definitions for Arduino ESP32 Dev boards. It set the wrong pins for the display class. I changed the pins and the phased out display class works flawlessly, mostly. I'm trying to get the hang of the library. I was able to show some text and remove the original logo. Thanks for the help. GxEDP2 is solid :slight_smile:

Ok I have no clue what I'm doing wrong. I need assistance. First off, the display fails to change anything regardless of what code I use, be it partial or full update. I've downloaded working examples and when I run them (compiled through PlatformIO) they do not run, nothing happens on screen. I decided to dig deeper in the library and found the refresh() method. When I use the refresh() method in the do/while loop the screen does what I want it to do with some caveats. display.fillScreen seemingly fills the screen with noisy black, even though I'm using GXEPD_WHITE constant, which should turn it white. And then the text color is white, while it should be black because I'm using the GXEPD_BLACK. The refresh method slows the code a lot.

I don't know what I'm doing wrong. I'm fairly certain I am using the proper driver class for my device. What troubleshooting tips can you guys give me. Basically unless I use refresh() nothing happens. Even the GxEPD2 example codes do not work whatsoever. I'm out of ideas. I tried using fillRect() method with no success at all. Nothing changse unless I call refresh() and when I call refresh() the display does weird stuff. Another issue I noticed with refresh() is pretty much all the text vanishes (slowly) when refresh() finishes its job even when I call display.powerOff() immediately after which is super weird because the function description says it is there to protect fading text.

Basically this is the code I'm using:

#define ENABLE_GxEPD2_GFX 0
#define SERIAL_BAUD_RATE 115200
#include <Arduino.h>
#include <GxEPD2_BW.h> // including both doesn't use more code or ram
#include <GxEPD2_3C.h> // including both doesn't use more code or ram
#include <U8g2_for_Adafruit_GFX.h>

#define GxEPD2_DRIVER_CLASS GxEPD2_213_B72

#ifndef EPD_CS
#define EPD_CS SS

#define MAX_DISPLAY_BUFFER_SIZE 800 // e.g.

void helloWorldU8();

void setup() {



    Serial.println("Attempting to draw stuff...");


    Serial.println("Going to loop subroutine");

void loop() {

void helloWorldU8() {

    uint16_t x = (display.width() - 160) / 2;
    uint16_t y = 48;


    do {
        u8g2Fonts.setCursor(x, y);
        u8g2Fonts.print("Lorem ipsum > Hello World!");
    } while (display.nextPage());

    Serial.println("helloWorld complete");

I am confused with your posts. Please provide clear information.

Please report the inking on the flex connector of the display panel. Maybe I can see if it corresponds to one of my panels.

I suggest you test with GxEPD2_Example. Uncomment one line in GxEPD2_display_selection.h in the ESP32 conditional section, and adapt the parameters to the wiring of your board.


Yes, I'm sorry about the confusion. Even earlier I saw some wonky stuff but I assumed I did something wrong with the installation and thought that I could figure it out on my own but apparently I can't. I didn't understand your prompt but after I ran the code the last time this is how my device looked like Image Upload For Everyone - The cable part is a bit unreadable. It says FPC-7528

Basically, the background was supposed to be white but it's some noisy black. I tried to keep everything in focus.

Running the example code does nothing.

Sorry, I can't help you. I don't have any panel with FPC-7528. I have several 2.9" with FPC-7519.
Note that I don't download from sites I don't know.

Ah so you are saying that the issue is most likely with the cable? I guess I could try to find a replacement somewhere. Any tips on how to proceed with FPC-7528?

P.S: The links I post are basically toward images site to check out the pictures. I don't know if I can upload images in here.

No, your e-paper display has a panel I don't have, and therefore is not supported by GxEPD2.

Is there any way I can figure the maker of the display so I could look at least for technical documentation and write my own abstraction to show simple text on it?

2.13 inch e-paper screen module partial refresh, 4 Grayscale, GDEM0213B74_e-ink display-Good Display (

You can see FPC-7528 on the picture. You can find all details on that page.

BTW: TTGO has a fork of my library. Maybe they support that panel.

<GxGDEM0213B74/GxGDEM0213B74.h> is the proper library for it. Thanks for everything. This seems to be working right. Follows the color codes the way I put them and the text stays the way i put it. Huge thanks.