Inkplate 10 as network printer with WiFi and image display

Customer:

I want to set up an Inkplate 10 with ESP32 to work as follows:

  • The Inkplate stays powered off. When powered on by pressing the button, it connects to an existing WLAN.
  • WiFi credentials should be entered once on first startup. On subsequent startups, it should remember these credentials and not ask again.
  • I want to send images to the Inkplate as if printing to a printer.
  • The Inkplate should render images automatically in black and white or grayscale.
  • I will only ever send images of size 1200 x 825 px to the Inkplate.
  • I send only one image at a time. When the image appears on the display, I turn off the Inkplate and the image remains displayed. No slideshow.
  • The Inkplate 10 has an 8GB SD card and a 3000 mAh battery.

Originally submitted via email support on 10 March 2025. Migrated to the forum for community visibility.

Soldered Support:

The Inkplate 10 image from web example does most of what you’re asking for: Inkplate-Arduino-library/examples/Inkplate10/Advanced/WEB_WiFi/Inkplate10_Show_Pictures_From_Web/Inkplate10_Show_Pictures_From_Web.ino at master · SolderedElectronics/Inkplate-Arduino-library · GitHub

You can add WiFi credential storage by using EEPROM to check if credentials have been entered on startup: Inkplate-Arduino-library/examples/Inkplate10/Advanced/Other/Inkplate10_EEPROM_Usage/Inkplate10_EEPROM_Usage.ino at master · SolderedElectronics/Inkplate-Arduino-library · GitHub (write once, check after)

Customer:

Is there a solution where the Inkplate pretends to be a printer (CUPS library) so it’s easier to send pictures to the Inkplate and have them display directly?

Customer:

I found the SDWebServer.ino example, which also seems useful for uploading pictures over the network.

Soldered Support:

I’m unsure about implementing Inkplate as a virtual printer. Your best approach would be to upload the picture to a local web server at a static address, then have Inkplate check periodically and download the picture from the same path (updating the picture when you need it to refresh).

You could write a companion app in Python - a simple web server that does this:

from flask import Flask, send_file
import os

app = Flask(__name__)

# Route to serve the image
@app.route('/')
def serve_image():
 # Path to the image located in the same folder as this script
 image_path = os.path.join(os.path.dirname(__file__), 'image.jpg')

 # Return the image file as a response
 return send_file(image_path, mimetype='image/jpeg')

if __name__ == '__main__':
 # Run the Flask app on your local network accessible to other devices
 app.run(host='0.0.0.0', port=5000, debug=True)

This will serve the image on http://your.local.ip.address:5000/