Inkplate 6COLOR continuous POWERON_RESET loop on display.display()

Customer:

Inkplate 6COLOR is looping continuously with the following output. Can it be recovered?

ets Jul 29 2019 12:21:46

rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)

configsip: 0, SPIWP:0xee

clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00

mode:DIO, clock div:1

load:0x3fff0030,len:1344

load: ,len:13864

load: ,len:3608

entry 0x400805f0

ets Jul 29 2019 12:21:46

rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)

configsip: 0, SPIWP:0xee

clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00

mode:DIO, clock div:1

load:0x3fff0030,len:1344

load: ,len:13864

load: ,len:3608

entry 0x400805f0

ets Jul 29 2019 12:21:46

Originally submitted via email support on 8 January 2024. Migrated to the forum for community visibility.

Soldered Support:

First, try uploading the most basic sketch to rule out a software issue: Inkplate-Arduino-library/examples/Inkplate6COLOR/Basic/Inkplate6COLOR_Simple/Inkplate6COLOR_Simple.ino at master · SolderedElectronics/Inkplate-Arduino-library · GitHub

Can you send a screenshot of your Arduino Tools menu to verify your configuration?

Also, do you have any extra hardware connected to Inkplate? Something drawing too much current could cause a reset.

Customer:

I was running a modified Inkplate6COLOR_Hourly_Weather_Station.ino and it quit updating after running for a few hours. Since then I’ve tried uploading multiple sketches but none run successfully. I’m now trying Inkplate6COLOR_Simple.ino.

I have no extra hardware connected—just the display, battery, case, and USB cable. I’ve tried multiple cables and multiple ports.

The Inkplate6COLOR_Simple.ino sketch worked, but other sketches previously tried are not working correctly. Inkplate6COLOR_Hourly_Weather_Station.ino starts to run and I get output on the serial console but the display never updates. Inkplate6COLOR_RTC_Simple.ino displays the initial screen and then I get the same rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) loop.

Is it possible to capture the Output and Serial Monitor to a file? Do I have something cached that is corrupt? How can I clear the cache?

Attachment omitted in migration: Screenshot_1.png

Attachment omitted in migration: Inkplate6Color_Hourly_Weather_Station.ino.log

Soldered Support:

Your Tools menu configuration appears OK (assuming you have Soldered Inkplate6COLOR selected as the board). The upload logs look fine.

For capturing Serial Monitor output, you can copy/paste the text. We typically use Arduino 1.8 and know it’s possible in that version; it should work in Arduino 2 as well.

For troubleshooting, use the ESP Exception Decoder: GitHub - me-no-dev/EspExceptionDecoder: Exception Stack Trace Decoder for ESP8266 and ESP32 · GitHub - it includes a tutorial. This will help decode the crash messages Inkplate prints. The .elf file is in your sketch folder under the /build subfolder.

However, since the RTC sketch doesn’t use WiFi and still shows the issue, it seems unlikely to be a WiFi problem. The restarting pattern suggests Inkplate is perpetually restarting, which could indicate a hardware fault.

Try capturing the weather station output when the display stops updating, decode it with the exception decoder, and let me know what you find.

Customer:

I switched to Arduino 1.8.19 which handles the serial monitor and compile/upload windows better. I installed EspExceptionDecoder but it doesn’t do anything when I paste the rst:0x1 data into it. I don’t think the ESP32 is crashing but just spontaneously resetting.

While typing this reply, the screen finally refreshed with the correct data. I think your assessment is correct—this appears to be a hardware fault. Is there anything we can do about it?

Attachment omitted in migration: Inkplate6COLOR.zip

Soldered Support:

The pattern is clear: the Simple sketch works, but the others restart. The logs show Inkplate is perpetually restarting via POWERON_RESET and software-caused resets. This is the main issue.

To help diagnose where the code breaks, try this approach:

  1. Open an example like Inkplate6COLOR_Image_Frame_From_Web.ino
  2. Enter your WiFi data
  3. Add debug messages throughout the code using Serial.println to find where it restarts. Use Serial.flush() to ensure the message prints fully before continuing, and add delays so you can easily follow the execution.

This will tell us exactly where the restart happens. If that example works fine without restarting, try it with the sketches that previously restarted and let me know the results.

Attachment omitted in migration: image.png

Customer:

I’ve attached the modified Inkplate6COLOR_Image_Frame_From_Web.ino with compile, upload, and serial monitor output. It appears that the call to display.display results in an immediate POWERON_RESET most of the time, though it did work a couple of times. I switched to a different WiFi access point than I used before, but either access point appears to work correctly.

Attachment omitted in migration: image001.png

Attachment omitted in migration: Inkplate6COLOR_2.zip

Soldered Support:

Try this branch of the Inkplate repository: https://github.com/SolderedElectronics/Inkplate-Arduino-library/tree/ip6ColorSleepFix

Download this branch and replace the Inkplate library in Documents/Arduino/Libraries.

We’ve been working on power-related fixes for Inkplate6COLOR. My colleague recently fixed an issue like this that was related to re-initializing the display, which happens during display.display(). I think this could solve your issue. Give it a try and let me know.

Customer:

My main desktop runs Windows 10. I tried installing Arduino IDE on a different computer running Windows 11—just plugging the Inkplate into a USB port was enough to trigger the error. I also installed Arduino IDE on a Raspberry Pi 4B, and again, simply plugging the Inkplate into USB caused the error to start.

This rules out a problem with CH340 drivers. Something about the USB port connection itself is causing the issue.

Soldered Support:

Regarding the Wakeup button: this functionality must be implemented in your code. Check this example for reference: Inkplate-Arduino-library/examples/Inkplate6COLOR/Advanced/DeepSleep/Inkplate6COLOR_Wake_Up_Button/Inkplate6COLOR_Wake_Up_Button.ino at master · SolderedElectronics/Inkplate-Arduino-library · GitHub

Thank you for trying the branch. When checking if you installed it correctly, compare your local Inkplate6Color.cpp to the one in the repository: https://github.com/SolderedElectronics/Inkplate-Arduino-library/blob/ip6ColorSleepFix/src/boards/Inkplate6Color.cpp

Here’s my main suggestion: since Inkplate with battery powers the device fine, try using a USB charger as a power source instead. Connect it via a regular USB charger (5V, 1-2 amps). The sketch remains burned into Inkplate and will run when you plug it in. Computer USB ports cannot always provide sufficient current for Inkplate, especially during display refresh, which could cause resets. A dedicated charger should provide the higher current needed. If you have an old USB charger available, try powering Inkplate from it and see what happens.

If this doesn’t resolve it and the issue persists, there may be an actual hardware fault with the USB port circuitry. Arduino doesn’t need to be installed or any CH340 drivers for Inkplate to simply run the previously uploaded sketch when powered via USB.

I also tested your Image_Frame_From_Web sketch on our Inkplate and everything works as expected—the device displays the picture correctly.

Attachment omitted in migration: image.png