How to build a printer
Points and comments are a snapshot, not live.
Turning an e-ink reader into an IPP printer so you can Cmd-P to it.
The author wanted to send content to their Xteink X3 e-ink reader without using its hotspot upload page. They implemented an Internet Printing Protocol (IPP) server on the ESP32-C3-based device, advertising it via Bonjour so macOS sees it as a printer. RAM constraints (400 KB total) forced an on-the-fly pipeline: decode, shrink, dither, and write directly to the display's frame buffer without allocating a full page. The first successful print of a manga page from Preview took about a second.
The code is available in the author's CrossPoint fork. Printouts are saved as BMP files on the SD card, browsable on the reader.
What commenters are saying
Commenters praised the idea as natural and satisfying, with several calling it a real-world PADD from Star Trek. A debate emerged over why not just load PDFs natively: the device has only 400 KB of RAM and an ESP32 CPU, making full PDF rendering impractical, though some noted the X3 spec sheet claims native PDF support. IPP expert advice explained how to declare exact screen dimensions and 1-bit-per-pixel mode to offload scaling and dithering to the sending computer. Others discussed the X3 vs X4 Pro hardware choice, recommending the backlit X4 Pro.