I struggle with exact the same issue.
I use an ESP32 and a waveshare 1.54inch b/w epaper (v2) in combination with GxEPD2 (at the moment v1.3.6). I selected type GxEPD2_154_D67 in the code.
I try to get rid the full update after deep sleep. I found also the mentioned alternate init function and after unsuccessfull try this topic in the forum. I tried exactly the same but I am not shure what I do wrong in detail before and after deep sleep. In the examples I found no deep sleep with partial update.
The problem: The display shows after the first screen before deep sleep in the second screen after update outside the partitial window some garbage (or random pixels). The pattern changes after each deep sleep.
Could it be also an HW issue? I do not use any pulls; only simply connected the 6 signals to ESP.
Would it be possible to show a code example with more details how did you use the partitial update or have a look to my code snippet?
After I wrote my comment I remembered that the RST Pins had measureable pull down resistor from ~20k when I measured the deep sleep current of my application and searched for an HW problem at one of my ESP32 boards. After searching the web how I shall handle these pin I found the mentioned (huge) thread which you mentioned, ZinggJM. There I found that an 1k pullup is needed. With that, my partial refresh example from above worked but the deep sleep current increased dramatically (from 30uA to 1800uA!!). So I digged a little bit in the waveshare board and found out that the level shifter and linear regulator are not switched off when I use 1k pullup. Later I found the complete schematic at the waveshare site. The quiesent currents and the low pull down resulting from some resistor on RST ruine the low power...
I ordered a second display and will desolder the level shifter, regulator and two transistor. I hope that the current during deep sleep decreases to my 30uA for ESP board and the mentioned uA from SSD1681 data sheet so that I can use the nice partial refresh in my application.
regarding the duplicate user account: How I can reach the moderators?
You have reached the moderators, I am one of them. At the bottom of each post there is a flag, clicking that brings the post to the attention of the moderators.
Do you have a duplicate account? If you do please tell me. They can be merged.
Thanks.
@ PerryBebbington
Thanks for your hints. I have now read the forum guidelines.
I have not the feeling that I have a duplicate user account. ZinggJM suspected it.
Regarding your split to this topic: Originally in my opinion it was exact the same theme as in the first topic (partial update in combination with GxEPD2). Therefore I added my problem to it. I wanted only to know more details using partial update after deep sleep of the processor. Now it is more a HW related topic. My code example above works. I change the title of topic and add a summary and more details in the next post. Then the topic can be closed.
with a HW modification of the display (EPD) pcb I could solve the problem. I try to summarize:
original problem
After deep sleep of processor the EPD showed after partial update without complete refresh random pixels around the partial window. So the old content of the display was destroyed.
solution 1
The code above works. There is no problem in using the GxEPD2 lib. The reason for the problem is an HW issue. In the forum there is the information that a 1k pullup has to be added to RST pin. With that change partial update after deep sleep works.
For the "clever reset circuit" I found no detailed HW information. On waveshare website I found also no information how to use the RST pin. I investigated for myself.
In the schematic which can be found on the waveshare website it is visible the cause for the problem.
There is a resistor network behind RST pin on display pcb (only in newer revision 2.1 of the pcb with level shifter) which results in a kind of pulldown (round about 20k). If the mentioned 1k pullup is not used the display controller
gets a full reset and the pixel RAM of controller has a undefined state.
But there is a other problem: If the 1k pullup is used for working partial updates after deep sleep without complete refresh the deep sleep current of EPD increases from some uA to 1.8mA.
It is caused by the cicruit on EPD pcb. The voltage regulator, level shifter quiesent current consumption and some current through the resistor networks are the reasons for that.
solution 2
If some manual modifications are done on the EPD pcb partial update after deep sleep the deep sleep current can be decreased again to a normal value (refer modifikation details in appendix). Be aware that the display with that mod can be only used with
3.3V.
By the way it seems that two versions of the display pcb with level shifter exist. I added some pictures to get better understanding. Version V1 seems to have another panel.
Keeping them separate keeps the forum tidy. In any case, if your problem really was the same the logically either the answer is already in the topic, in which case there is no need to ask again, or it is not in the topic, in which case there is no point in asking again as, apparently, no one knows the answer.
If we allow continued 'I have a similar problem' then the risk is the topic goes on and on forever with the end not in any way related to the beginning.
With regards to a duplicate account, I cannot see any evidence of one and you say you don't have one so I guess that's it.