Small white e-ink display lying flat on a wooden floor, the screen showing Hacker News headlines in two columns

TRMNL mini

A DIY mini TRMNL: 4.26" 800x480 e-ink, battery powered, in a 3D printed case.

codereddittrmnleinkdesign

TRMNL mini is a 4.26” 800x480 e-ink display that runs on a battery and is fully compatible with TRMNL’s BYOD. In other words, TRMNL mini. It’s a DIY project, so you solder and assemble everything yourself, and 3D print the case.

The mini standing on a wooden floor, seen from the front at an angle, the screen showing Hacker News headlines

The back of the case: a plain white panel with a small black button, a cut-out logo and a grid of vent holes

The mini lying face down, with a USB-C port in the side of the case

Why I made it

I built myself a TRMNL (and bought the BYOD license) using the Seeed Xiao OG DIY Kit, in a case that I designed, and I really like using it in my day-to-day. So I thought to myself - what if I had this… but a bit smaller, to display weather and some simple stats? I wanted a smaller device for simpler plugins/recipes that would still work with TRMNL’s design system.

I started looking for a compatible panel that would somehow work with TRMNL image generation, and found a 4.26” 800x480 panel from Waveshare - an exact match when it comes to resolution.

The mini next to a much larger e-ink display in a similar white case, which shows 309 days passed and 56 days left

The mini standing in front of the larger display, which is wider and taller

Day to day it’s a weather station in the entryway of my home, so I can always glance at it while going out. It shows TRMNL’s native weather plugin along with the Temperature Graph recipe in a 50/50 mashup, refreshed every hour.

Build story

I used the HAT version of the Waveshare display only because that was available in my country and I didn’t want to wait for shipping. I desoldered ripped off the pads while removing the headers. The device could be a little slimmer with the raw panel and Waveshare’s Universal e-Paper Raw Panel Driver HAT, but then I wouldn’t have had built-in mounting screw posts.

I started from TRMNL’s firmware (v1.6.10 back then), perused the code and found the bits I needed to flip. It took me more time to figure out how to set up my fork. One thing I had to change: fast and partial updates render as noise on the 4.26” panel, so it always does a full refresh.

I released it in 2025-11 and posted it on r/trmnl. At that point I didn’t have a BYOD license for it yet, so the pictures showed a local instance of byos-node.

I did get the BYOD license as a gift - my post was noticed by Ryan, the owner of the company. I exchanged a couple of emails with him, and their team actually added support for this screen into their firmware. I kept my fork separate because I’m not using the board they used for it though (XIAO ePaper Display Board ESP32-S3 EE04), but the Firebeetle 2 ESP32-E.

In 2026-09 I got it up to a newer firmware and set up the repo so my changes are an overlay on top of my fork of TRMNL’s firmware, with the firmware as a git submodule, so my device still gets updates:

Upstream has since absorbed most of what I used to patch by hand: bb_epaper is a managed dependency now instead of a vendored copy, the 4.26” panel is a first-class panel type, and board pins live in a data table rather than #define. So the overlay is down to about 120 lines across three files:

How it works

Parts:

The battery lasts more than a month on one charge (with refresh every hour).

The case was designed by me in Fusion360, in a similar style to the case I did for the OG DIY Kit. It has four parts:

The four printed case parts laid out on black: the front frame, the thin display ring, the back with vent holes and the midframe

The board screws into the midframe, the midframe screws into the back of the display, and the battery sits in a holder in the midframe. I routed the display cable under the midframe (there is enough clearance for it). The button goes into the back of the case (I would recommend a drop of AC glue to hold it in place). Then the display with the midframe pops into the front, with the display ring already in it, and the back pushes in and snaps shut. The back holds the whole assembly in place, and the USB-C port of the Firebeetle 2 is accessible from underneath.

The mini opened up: the back panel with the button wired to it, and next to it the back of the display with the midframe screwed on, the dev board below it and coloured wires between them

I designed a stand for it as well, which angles the display nicely for desktop usage. It can be used in two different configurations.

The mini in its stand on a wooden table, tilted back at a low angle, the screen showing a pattern of grey rectangles

The mini in its stand, standing more upright, the screen showing a pattern of grey rectangles

I printed the case on a Bambu Lab P1S in Bambu Lab Matte PLA Bone White. All the files are in the repo: .stl, .step and .f3d, plus a .3mf with everything set up on plates in Bambu Studio. The wiring, and how to build and flash the firmware, are in the README too.

What I’d change

Nothing, honestly I am very happy how it came out.

Note

AI was not used at all in creation of TRMNL mini, apart from the recent firmware commits in the repo - I used AI to set it up so my changes overlay on top of my fork of the firmware.

AI drafted this page from the README in the github repo (mostly 1:1), after which I edited it. AI also created the alt text for images.