[solved] Changing ePaper size destroys ESP

This is a problem I have never encountered before like this. I was using a Waveshare 2.13’’ ePaper display for a project, as well as a NodeMC/ESP12-E. Soon after my code workd, I realised, that the 2.9’’ display would be far more beneficial, for such things as designing a case and mounting it, as well, as readability from afar.

I use the GxEPD library to interact with the display, and got the 2.13’’ display to work perfectly.
So I took the code, changed the include to use the library variant for the 2.9’’ display, swapped the physical display and the trouble began.

1.: The during the pload the IDE tels me, that it can’t find the device on the COM-Port, as long, as the Display is connected to the 3.3V of the µC. As soon, as I disconnect the powersupply the upload works again. The Controller is powered over the USB-Port and I don’t know wether it is USB-3, so maybe it has something to do with insufficient power?

2.: I’m using he deepsleep feature of the ESP. So when I upload the code, I disconnect the display, wait for the first sleepcycle to begin and connect the disply again. As soon, as I connect the wake-up pin with the reset, it tries to reset, but when I check the serial monitor, I get “waiting for host” and nothing else happens.

Does anybody know, if I need to change anything else in my code apart from the library version, or what else might cause these errors to happen?

Although I don’t suspect the code to be in the wrong here, since it worked perfectly wih the smaller display, it is attached.

Thermometer_Epaper_SHT31_no_Serial.ino (6.51 KB)


yes, this is a known issue, most likely.

Your new 2.9" e-paper display may have level converters on board, to make it safe for 5V Arduino.

The level converter interferes with the boot mode input of the SS pin.

You can either use a different pin for CS, or add a 4k7 pull-down resistor to GND (10k doesn't work).

I only recently bought an actual e-paper board from Waveshare, and verified this behaviour. The earlier boards didn't have level converters.

The level converter is bidirectional, with automatic direction detection, which causes the pull-up effect on a pin that is intended for output only. (At least this is the explanation I guess).


I just disconnected the CS, and the upload worked normally. For everything else, I don't have the equipment to test ist at the moment. I will report back on mondy,when I have access to the right tools.

But this seems like a step in the right direction

okay, I just came around to testing different things:

first, there is indeed a level converter on the display, in fact it is this one.

there also is an LDO-converter to supply the display with the appropriate voltage.

I soldered an 4,7k resistor between CS and GND, and while this did get rid of the boot problems, I still can't seem to communicate with the display. It once flashed, after connecting it for the first time, but since then nothing happend


thank you for the links! Please add one more link, the one to the e-paper display you bought. I believe Waveshare still uses the GDEH029A1, but other sources might use GDEW029T5.

Then you could enable diagnostic output (e.g. init(115200)) and report diagnostic output from Serial Monitor.

The disply in question is this one.

But I just realised, I'm an idiot: I had both librarys in the code and just commented out the one I didn't use at the moment. After I added the resistor, I only added the library for the 2.9'' version and left the one for the 2.13'' version in. After I commented out the 2.13'' version it now functions as expected.

Thank you for your help, and your great libraries