explaingit

marstechhan/papercolor-frame

Analysis updated 2026-06-24

3CAudience · developerComplexity · 4/5LicenseSetup · hard

TLDR

Open-source ESP32-S3 firmware for a 6-color E Ink photo frame. Hosts its own Wi-Fi and a phone web app to upload, crop, dither, and display photos with no cloud.

Mindmap

mindmap
  root((PaperColor-Frame))
    Inputs
      Photos uploaded from phone
      Colorimeter readings
      Button presses
    Outputs
      6 color E Ink display
      4bpp framebuffer
      Captive portal web UI
    Use Cases
      DIY digital photo frame
      E Ink dithering experiments
      M5Stack PaperColor firmware
    Tech Stack
      ESP-IDF
      C
      WebAssembly
      Emscripten
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

What do people build with it?

USE CASE 1

Flash custom firmware onto an M5Stack PaperColor E Ink photo frame

USE CASE 2

Experiment with browser-side WASM dithering for 6-color E Ink panels

USE CASE 3

Build a no-cloud photo frame that serves its own Wi-Fi and web app

USE CASE 4

Calibrate a 6-color E Ink display using colorimeter readings

What is it built with?

CESP-IDFWebAssemblyEmscriptenNode.js

How does it compare?

marstechhan/papercolor-frameamichail-1/orbination-whisper-aiatrex66/picoc64plus
Stars333
LanguageCCC
Setup difficultyhardeasyhard
Complexity4/54/53/5
Audiencedeveloperdeveloperdeveloper

Figures from each repo's GitHub metadata at analysis time.

How do you get it running?

Difficulty · hard Time to first run · 1day+

Needs ESP-IDF 5.x with ESP32-S3 toolchain plus Emscripten and Node.js, and the build script expects a Homebrew Emscripten path.

GPL-3.0-only requires that any distributed modifications or derivative works are also released under GPL-3.0.

In plain English

PaperColor Frame is open-source firmware for a small digital photo frame that uses a six-color E Ink screen. The target hardware is an ESP32-S3 board from a family called M5Stack PaperColor, with an SD card slot, buttons, status lights, and a 4-inch reflective color display. The README says the frame creates its own Wi-Fi hotspot and serves a phone-friendly web page, so you can upload and manage photos from a browser without any cloud account or separate app. The web interface lets you upload images, see them as a wall of polaroid-style cards, and send any photo to the screen. Before sending, you can rotate, fit, and crop the image, preview how the dithering will look, apply presets, or hand-tune the color. The image conversion that turns a normal photo into something a six-color E Ink panel can show is done in the browser using a WebAssembly module, producing a packed 4-bit-per-pixel framebuffer. There are two dithering paths, one called Classic VED and a newer one called E6 Mix that is tuned for real reflective ink. The firmware also exposes a calibration screen where you type in colorimeter readings for the solid inks and optional mixed patches, so the conversion can be matched to the actual screen. Photos are stored on the SD card by default and fall back to internal flash storage when no card is present. Other settings cover slideshow timing, sleep behavior, status light brightness, Wi-Fi password, and language. Building it needs ESP-IDF 5.x with ESP32-S3 support, plus Emscripten for the browser-side dither module and Node.js for a small smoke test. The repo is organized into firmware source, an embedded web app, documentation on the color pipeline and implementation, host-side test helpers, and standard ESP partition files. The README has English and Chinese sections side by side. The license is GPL-3.0-only.

Copy-paste prompts

Prompt 1
Walk me through flashing PaperColor-Frame to an ESP32-S3 board with ESP-IDF 5.x
Prompt 2
Show me how the WASM dither module in web_wasm/ converts an RGB photo to a 4bpp 6-color framebuffer
Prompt 3
Explain the captive portal HTTP API in main/http_server.* and how the phone web UI talks to it
Prompt 4
Help me add a new dithering preset alongside Classic VED and E6 Mix in main/dither.*
Prompt 5
Trace how power_manager.* coordinates buttons, sleep, and the PMIC for low-power behavior

Frequently asked questions

What is papercolor-frame?

Open-source ESP32-S3 firmware for a 6-color E Ink photo frame. Hosts its own Wi-Fi and a phone web app to upload, crop, dither, and display photos with no cloud.

What language is papercolor-frame written in?

Mainly C. The stack also includes C, ESP-IDF, WebAssembly.

What license does papercolor-frame use?

GPL-3.0-only requires that any distributed modifications or derivative works are also released under GPL-3.0.

How hard is papercolor-frame to set up?

Setup difficulty is rated hard, with roughly 1day+ to a first successful run.

Who is papercolor-frame for?

Mainly developer.

Open on GitHub → Explain another repo

This repo across BitVibe Labs

Verify against the repo before relying on details.