Wireless Paper => No way to use it!

Regardless of all the methods tested… samples / factory samples / platformio / arduino ide… There is no way to make the EInk display work! (and I’m not talking about lora!)… not to mention documentation that borders on the ridiculous and an endless struggle to find technical documentation… (although I love your modules, this one is a great disappointment…)

wishing to succeed in making this module work… I would really appreciate some “intelligent and serious” help to make it work…

Please refer to GxEPD2


From the display_selection_new_style, use line 40

Also, for the pinout, please refer to

Hope that helps enough! Otherwise let me know, I’ve got a working sketch somewhere.

Indeed, if you have a functional example… I’m interested… I’m used to convoluted configurations… this one eludes me

https://github.com/Heltec-Aaron-Lee/WiFi_Kit_series/tree/master/esp32/libraries/Heltec-Example/examples/E-INK


There are two different screen drivers,你的可能是HT_ICMEN2REFC1,这是新推出的型号
Perhaps this will be helpful to you

https://github.com/Heltec-Aaron-Lee/WiFi_Kit_series/tree/master/esp32/libraries/Heltec-Example/examples/E-INK

There are two different screen drivers,You may be HT_ ICMEN2REFC1, this is a newly launched model.Perhaps this will be helpful to you

I haven’t encountered a device with this apparently ‘new’ e-ink display, but I may encounter one next week.

The next sketch works for my Paper that I picked up a couple of months ago:

#include <Arduino.h>
#include <GxEPD2_BW.h>
#include <Fonts/FreeMonoBold9pt7b.h>
#include "GxEPD2_display_selection_new_style.h"

#define Vext 45

void VextON() {
	pinMode(Vext, OUTPUT);
	digitalWrite(Vext, LOW);
}

void VextOFF() {
	pinMode(Vext, OUTPUT);
	digitalWrite(Vext, HIGH);
}

SPIClass hspi(HSPI);

void setup() {
    Serial.begin(115200);
    Serial.println();
    Serial.println("setup");
    delay(2000);
	VextON();

    hspi.begin(3, -1, 2, 4); // remap hspi for EPD (swap pins)
    display.epd2.selectSPI(hspi, SPISettings(4000000, MSBFIRST, SPI_MODE0));
    display.init(115200, true, 2, false);
}

const char HelloWorld[] = "Hello World!";
const char HelloArduino[] = "Hello Arduino!";
const char HelloEpaper[] = "Hello E-Paper!";

void helloWorld() {
  //Serial.println("helloWorld");
  display.setRotation(1);
  display.setFont(&FreeMonoBold9pt7b);
  if (display.epd2.WIDTH < 104) display.setFont(0);
  display.setTextColor(GxEPD_BLACK);
  int16_t tbx, tby; uint16_t tbw, tbh;
  display.getTextBounds(HelloWorld, 0, 0, &tbx, &tby, &tbw, &tbh);
  // center bounding box by transposition of origin:
  uint16_t x = ((display.width() - tbw) / 2) - tbx;
  uint16_t y = ((display.height() - tbh) / 2) - tby;
  display.setFullWindow();
  display.firstPage();
  do
  {
    display.fillScreen(GxEPD_WHITE);
    display.setCursor(x, y);
    display.print(HelloWorld);
  }
  while (display.nextPage());
  //Serial.println("helloWorld done");
}

void loop() {
	helloWorld();
	delay(60000);
}

In the file GxEPD2_display_selection_new_style.h:

  • uncomment line 36, not line 40 I mentioned earlier, sorry.
  • change line 130 such that it reads:
    GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=5*/ 4, /*DC=*/ 5, /*RST=*/ 6, /*BUSY=*/ 7));

If that doesn’t work, you may have the new display; please let me know. I hope to get that one going as well.

@wangwuse there appears to be no public documentation on the new panel. Can you please share whatever information is available to you?
Most importantly, which controller does the panel use? SSD1680 or something else?

1 Like

From tests it seems to be UC8151D https://v4.cecdn.yun300.cn/100001_1909185148/UC8151D.pdf, but we are missing LUT and thus partial update. Full update is working, see https://forum.arduino.cc/t/new-e-ink-display-not-in-gxepd2/1196494/26