FrameOS
Devices

Seeed reTerminal E1004

Seeed Studio reTerminal E1004 - a 13.3" Spectra 6 colour e-ink frame with an ESP32-S3 and 8 MB of PSRAM, rendering 1200×1600 scenes on-device.

Official Seeed Studio store

Official store page for this device.

Buy from Seeed Studio

Manufacturer docs & datasheets

Vendor
Seeed Studio
Model
reTerminal E1004
Technology
E-ink
Colors
6 colors (Spectra 6)
Resolution
1200×1600 px
Size
13.3″ diagonal
Interface
ESP32-S3 board
Platforms
ESP32-S3
Status
🟢 Confirmed working
Buttons
3 (usable in scenes)
FrameOS driver
waveshare.EPD_13in3e

Part of the FrameOS device database. Spotted an error, or tested this panel? Edit this page on GitHub - it's a markdown file.

The Seeed reTerminal E1004 is the big one in the reTerminal E-series: a portrait 13.3" Spectra 6 six-colour panel at 1200×1600, an ESP32-S3 with 8 MB of PSRAM and 32 MB of flash, a microSD slot, a battery, and touch buttons on the bezel plus physical ones on the back. FrameOS runs on it as a full ESP32-S3 frame, rendering and dithering scenes on the device.

Pick the Seeed reTerminal E1004 hardware preset (seeed_reterminal_e1004) when you add the frame. It selects the waveshare.EPD_13in3e panel driver with the T133A01 refresh sequence this glass wants (about 30 seconds per refresh), the E-series SPI bus with the 13.3" panel's second chip select, the 32 MB flash profile, the TF card asset mount, the three E-series keys (GPIO 3, 4 and 5, dispatched as scene events) and the battery wiring: a 2:1 divider on GPIO 1 that GPIO 21 switches on for each reading. The panel is the same glass as the Waveshare 13.3" (E), with Seeed's own analogue tuning applied by the preset.

Battery

The E1004 carries a 5000 mAh cell, and the preset treats it as a battery frame from the start: deep_sleep_on_battery is on with a 15-minute wake_check, so unplugged it deep-sleeps between renders (waking on the timer, or on any of its buttons) and on USB it stays connected. The cloud or backend shows asleep · wakes in 5 min and the charge while it's down, and delivers anything you deploy on the next wake. A 15-minute weather scene keeps it awake for roughly 80-90 seconds per cycle - render, dither and the panel's own refresh - which is where the battery goes; see Battery and deep sleep. A frame flashed before the preset knew the wiring reads no battery until you re-run set hardware seeed_reterminal_e1004 on the console or fill in the three battery fields under Power.

Why 8 MB is enough

A 1200×1600 RGBA canvas alone would be 7.3 MB - most of this board's PSRAM before a single image is decoded. On this board the ESP32 renderer instead composites into a 16-bit canvas (3.7 MB), reserved once at boot and reused for every render, with dithered stores so gradients stay smooth, and the packed framebuffer is reserved at boot as well so a fragmented heap can't fail a render. Every panel the firmware drives is a dithered e-paper, so side by side with a full-colour canvas a photo dithered to Spectra 6 lands the same palette within 0.05% per colour. Images decode straight off the socket into that canvas - a 2 MB gallery PNG renders with 1.5 MB of PSRAM to spare. That is what makes this board render on-device rather than as a thin client.

Setup

  1. In the FrameOS backend, create a frame with Flash embedded device.
  2. Choose ESP32-S3, select the Seeed reTerminal E1004 preset, and enter your WiFi details.
  3. Build the firmware and flash it over USB from the browser - or write the generic release image with Flash latest release and let the backend configure it over the USB console.
  4. Install scenes as usual - they sync over WiFi, and the device updates itself over the air.

macOS: install the WCH serial driver first

The E1004's USB port sits behind a WCH CH340/CH341 USB-serial chip, and unlike most ESP32-S3 boards it does not show up as a serial port on macOS out of the box - the browser flasher won't see the device until you install WCH's driver:

  1. Download the driver from WCH's site: CH34XSER_MAC, and run CH34xVCPDriver.pkg from the archive.
  2. Enable the extension under System Settings → General → Login Items & Extensions → Driver Extensions and switch CH34xVCPDriver on. If macOS blocks it, go to Privacy & Security, find the blocked WCH software and click Allow.
  3. Reconnect the terminal and check that ls /dev/tty.wch* lists a /dev/tty.wchusbserial… port. That's the one to pick in the flasher - it shows up as a USB Single Serial port, which the firmware's console has answered on since 2026.8.38.

Windows 11 and Linux ship with the driver; Windows 10 and older need the CH341SER package. See the Seeed wiki for the full walkthrough.

A full Spectra 6 refresh on a panel this size takes around half a minute, and a heavy scene can take a similar time to render and dither first. Fine for a frame that updates a few times an hour.

Pin map

SignalGPIO
CS10
CS22
DC11
RST38
BUSY13
SCK7
MOSI9
PWR12

Status

🟢 Confirmed working - runs on the maintainers' own E1004, on battery, managed from FrameOS Cloud: panel refresh, buttons, battery reading and deep sleep are all verified on this hardware.

On this page