I sent an inquiry through the form yesterday, but due to urgency I’m emailing as well. Three years ago I ordered 5 Inkplate 6 units but only now are they being shipped. When I opened them and tried communicating with them over USB directly to my computer via terminal by sending hex messages, I think they have a firmware bug or I’m doing something wrong. However, I think I’m not doing anything wrong because I did the same with a unit I ordered before these 5, and with the same messages I communicated successfully.
Now I have a project where I need to use all 5 units but I cannot communicate with them.
I need support.
What I’ve tested:
When I send a message to echo, it responds OK, so the message format is correct
When I send .bmp it responds #H(0)*, so the message is correct since it responded
If the SD card is not inside it responds #H(-1)*, so the message is correct since it responded
When I send a string in the same format as the other messages, it displays something… (some strange character, nothing concrete I could connect to the problem)
When I send #R(?)* it responds whether the panel has power or not
→ if the response is 0 I send it e.g. #Q(1)* to power the panel and as soon as I send the message show #L(1)* after that I check the power #R(?)*, the response is 0. After each show the buffer goes to panel power off → is that correct?
Please support me because I didn’t expect this issue, and I didn’t check the panels before because I had good experience with the first one and didn’t test these.
I tested via USB and terminal on the computer, and I also connected it to my ATmega controller in whose environment it should work, and it behaves the same way.
Attachment omitted in migration: 868f6b0b.jpeg
Originally submitted via email support on 25 March 2025. Migrated to the forum for community visibility.
If you’re using peripheral mode, which the devices come pre-programmed with, and you send commands over Serial terminal and it responds OK, that’s a good sign that communication is working fine.
You don’t need to use #Q(1) to manually turn the panel on or off. Instead, only use the display command #L(1) to show what’s in the framebuffer (what you’ve drawn through code).
If you power up the Inkplate fresh and only send #L(1), it should clear the screen from the welcome message and display a white screen.
Try powering up the Inkplate over USB and then only send #L(1) and report if that works.
That’s correct, it should clear the screen and make it clean with #K(1) and then #L(1). These are the commands in the documentation:
Can you explain to me where it’s failing, what doesn’t work with this code?
Alternatively, if you’re developing your own software for Inkplate, I recommend using our Arduino library to write your own sketch. That way you’ll have much easier access to all the functionality you need. Check out the tutorial here if that’s an option for you:
This peripheral mode you’re using is a bit older and hasn’t been updated for some time, so the Arduino library is much better.
In the attachment is the image (image1.bmp) that I’m trying to send and on the device from the first shipment this worked without problems. It’s on the SD card as shown in the attachment.
When there’s no SD card the device responds H(-1), excellent. When I put the card in and send the image as shown in the communication, the device responds H(0) saying it cannot load the image. I tried clearing the screen first too but no luck.
Issue 2: Sending a string
From the attachment I show what I sent through the terminal (I want to send the string “COA”). From the attachment image “Sending text” shows what I get. I tried moving the cursor, adding text size which is shown in the communication, but I get what’s shown in the attachment.
I don’t know where I’m going wrong. The first shipped device did all this correctly. Maybe I forgot something over time with everything I need to do.
I don’t need to develop anything special right now. I just need to send two images and two texts to meet my product’s needs, which is why I’d like to use this ready-made functionality of sending information over serial.
Thank you for your effort and understanding.
Attachment omitted in migration: 1_SDcard.jpg
Attachment omitted in migration: 868f6b0b.jpeg
Attachment omitted in migration: 2_Pokušavam poslati sliku.jpg
Attachment omitted in migration: 3_Slanje texta COA.jpg
Attachment omitted in migration: 4_Slanje stringa.jpg
Thank you for explaining the problem in more detail. You shouldn’t need to clear the screen. The peripheral mode command for drawing a bitmap from SD card is:
#H(000,000,“image1.bmp”)*
and then to display that image send #L(1)
For this to work, the image must be named “image1.bmp” and be in the root folder of the SD card.
So those are the only three things that need to be done. If you follow these exact steps and it works on your earlier Inkplate but not on this one, I’m not sure what the difference is.
Are the Inkplates the same version? Are all the boards blue with an e-radionica mark or are some purple (Soldered)? Those two versions are different from each other.
In the batch file boot_app0.bin is defined ^, but in the zip it’s not there. 1. I uploaded without it and the display behaves the same way in communication - it doesn’t accept the image and responds to the display image1.bmp H(0) 2. And when I display the text I send it shows nonsense. I repeat, I only need the functionality that’s written in the documentation to be able to load one image and send one text. Thank you.
I’ve tested it now. The boot_app0.bin is something my script automatically included but it’s not actually necessary for operation. I’ve tested it now:
Just remove that line from the script. You can use this command:
@echo off
echo === Inkplate uploader ===
echo.
REM -- Provjerite da je esptool instaliran (preko pip install esptool)
REM -- Promijenite COM port dolje ako nije COM12
set COMPORT=COM12
echo Koristi se COM port: %COMPORT%
echo.
python -m esptool --chip esp32 --port %COMPORT% --baud 921600 --before default_reset --after hard_reset write_flash -z --flash_mode dio --flash_freq 80m --flash_size 4MB ^
0x1000 Inkplate6_Peripheral_Mode.ino.bootloader.bin ^
0x8000 Inkplate6_Peripheral_Mode.ino.partitions.bin ^
0x10000 Inkplate6_Peripheral_Mode.ino.bin
echo.
pause
I tested and the Inkplate responds to the hello command #L(1)*
If this doesn’t work with your code that you send over Serial, you’ll need to use the Arduino sketch as I mentioned before. This serial command mode is not well supported on the device.
The documentation is for peripheral mode control, which is currently not well supported, so we cannot guarantee it will work and we cannot remotely determine why peripheral mode commands work on one Inkplate but not on another.
The Inkplate is primarily used with the Arduino library, and your Inkplate devices currently have this Arduino code:
This is code that converts text received over Serial into drawing commands for the screen. However, as I mentioned, this code is older and has bugs, so it’s possible it won’t work for you. I tried to fix that in my previous email by sending you a binary I compiled myself to make sure you have the latest version, but if that doesn’t work either, you’ll need to use Arduino code.
To successfully use your Inkplate and have it work reliably, you’ll need to write your own Arduino code for the Inkplate. Here’s a tutorial on how to get started with it:
Here are code examples from the Arduino library related to printing text and displaying images from SD card: