Inkplate 6 Motion upload timeout and deep sleep timer setup

Customer:

I’m trying to follow the instructions at GitHub - SolderedElectronics/Inkplate-micropython: MicroPython driver for Soldered Inkplate devices · GitHub. I’ve tried to flash the firmware via the VSCode extension, Thonny, and mpremote directly. All were giving the error “Failed to connect to ESP32: No serial data received.” or “mpremote.transport.TransportError: could not enter raw repl”

Originally submitted via the contact form on soldered.com on 29 October 2025. Migrated to the forum for community visibility.

Soldered Support:

Which platform are you on, macOS or PC? On PC you sometimes have to run the flashing command twice in a row. Also, have you turned Inkplate on? You have to power it on via the button and see the blue power LED light up to verify it’s powered on. Your Inkplate should refresh the image after a second or so after being powered on. Does uploading Arduino examples work via Arduino IDE? Follow this guide to verify the board is OK: Inkplate 6 - Quick start guide | Soldered Documentation

Customer:

I’m on macOS and I’ve confirmed the Inkplate is on. I tried to upload a sketch for Inkplate 6 Motion via the Arduino IDE but got this error:
Serial Port cu.usbserial-210 is successfully opened. Port configuration: parity = even, baudrate = 230400, data-bit = 8, stop-bit = 1.0, flow-control = off
Timeout error occured while waiting for acknowledgement.
Error: Activating device: KO. Please, verify the boot mode configuration and check the serial port configuration. Reset your device then try again…

Soldered Support:

If you have the Inkplate 6 Motion, a MicroPython driver isn’t going to work, as there is no micropython implementation for it. For programming Inkplate 6 MOTION in Arduino IDE, you need to follow this guide: Inkplate 6MOTION - Quick start guide | Soldered Documentation

For programming, you need to put the device in programming mode: Inkplate 6MOTION - Uploading code | Soldered Documentation

Customer:

I was able to upload code twice but now I keep seeing this error when uploading. I’ve tried plugging/unplugging from USB, resetting power, and pressing the programming button again.
Sketch uses 72620 bytes (3%) of program storage space. Maximum is 2097152 bytes.
Global variables use 81848 bytes (15%) of dynamic memory, leaving 442440 bytes for local variables. Maximum is 524288 bytes.

STM32CubeProgrammer v2.20.0

Serial Port cu.usbserial-110 is successfully opened.
Port configuration: parity = even, baudrate = 230400, data-bit = 8, stop-bit = 1.0, flow-control = off
Timeout error occured while waiting for acknowledgement.
Error: Activating device: KO. Please, verify the boot mode configuration and check the serial port configuration. Reset your device then try again…
Failed uploading: uploading error: exit status 1

Soldered Support:

Try using the BOOT switch on the back - put it to ‘1’, then program the board, then put it to ‘0’ and reset. See the first point in the troubleshooting section: Inkplate 6MOTION - FAQ and troubleshooting | Soldered Documentation

Our engineers added the BOOT switch because some host platforms can’t reset the microcontroller successfully reliably, so this is a sure way to do it.

Attachment omitted in migration: image.png

Customer:

That worked. Now I’m testing battery life. We’re showing white lines of text on a black background, and changing the text that is displayed once every 80 seconds. The text is read from a file on the microSD card. Ideally this would be able to run for a few months on the battery.

Attachment omitted in migration: image.png

Soldered Support:

If you’re using deep sleep and microSD card, make sure you’re putting all of the peripherals to sleep with: inkplate.peripheralState(INKPLATE_PERIPHERAL_ALL, false);

Also, make sure to turn off the power LED via the switch on the back.

Waking and refreshing each 80 seconds is quite a lot. If you expect to get a few months on battery you could potentially do a refresh every hour. Your mileage will vary depending on what your code is doing while Inkplate is awake. Inkplate 6 MOTION powers two microcontrollers on board and the display is quite high end for e-paper, so on average it will draw more current when powered on, reducing the total deep sleep time.

A classic trick you can do is disable refreshing when there is nobody expected to be in the room (e.g. if it’s an office, at the end of work hours you can sleep the device until the morning).

Attachment omitted in migration: image.png

Customer:

I’m trying to put the board into deep sleep and wake on a timer, but I don’t think the provided documentation shows how to set a timer. It only shows how to enter deep sleep. Could you provide an example that shows how to enter deep sleep AND set a timer for a specified duration (i.e. 3 minutes)?

Attachment omitted in migration: image.png

Soldered Support:

Here is the code: Inkplate_Motion_Arduino_Library/examples/Inkplate6Motion/Advanced/DeepSleep/Inkplate_6_Motion_Deep_Sleep/Inkplate_6_Motion_Deep_Sleep.ino at main · SolderedElectronics/Inkplate_Motion_Arduino_Library · GitHub

This code shows you how to use the onboard RTC to trigger an interrupt at certain intervals which will wake the STM32 microcontroller. The comments and the code should be sufficient.