Distilled from M5Stack's official material (PaperS3 datasheet, updated 2026-05-07) as a reference for firmware development and the capability boundary for future features — what the hardware offers determines what we can build. Official docs: https://docs.m5stack.com/en/core/PaperS3
A 4.7" touch e-ink controller device aimed at low-power display and interaction: IoT monitoring / smart-home panels / e-labels / reading.
| Item | Spec |
|---|---|
| SoC | ESP32-S3R8, dual-core Xtensa LX7, 240 MHz |
| Flash / PSRAM | 16 MB flash + 8 MB PSRAM (octal mode required, see software notes) |
| Wireless | 2.4 GHz Wi-Fi (upgraded antenna, ~111 m open field) |
| Battery | 1800 mAh Li-ion (largest of the Paper family), LGS4056H charger |
| Size / weight | 121.5 × 67.7 × 7.7 mm / 89 g (thinnest) |
| Power | USB Type-C 5V@500mA, OTG/CDC/MSC |
| Operating temp | 0–40 °C |
Everything the PaperS3 board offers — future features cannot exceed this table.
| Capability | Part | Interface / pins | What it enables |
|---|---|---|---|
| E-ink panel | EPD_ED047TC1, 4.7", 960×540, 16-level grayscale | ESP32-S3 direct parallel: DB0-7 = G6/G14/G7/G12/G9/G11/G8/G10, XSTL G13 / XLE G15 / SPV G17 / CKV G18 / PWR G45 | Paged reading, zero-power standby display. 16 grays beat pure B/W; partial refresh supported |
| Capacitive touch | GT911, 2-point + gestures | I²C, INT G48 | Page turns, taps, gestures (gestures unused so far) |
| IMU / gyro | BMI270 | I²C 0x68 |
Flip gestures, posture detection (used for flip-to-sleep; raise-to-wake not possible from deep sleep, see note) |
| Physical key ×1 | Side key | — | Power on/off / reset / download mode. |
| Buzzer | Onboard passive buzzer | BUZ_PWM | Notification tones (unused) |
| RTC | BM8563 | I²C 0x51 |
Timed deep-sleep wake, local time |
| microSD | — | CS G47 / SCK G39 / MOSI G38 / MISO G40 | External storage (unused; article cache lives on internal LittleFS) |
| Battery gauge | ADC | ADC_VBAT (G21) | Battery level monitoring |
| Power control | PMS150G | — | Power on/off and download control |
Deep-sleep wake note: ESP32-S3 deep sleep can only be woken by RTC GPIOs (0–21). Neither the GT911 touch INT (G48) nor the BMI270 INT is wired to one, so the only way out of deep sleep is the side key (hardware reset) or an RTC timer.
| Port | Pins | Notes |
|---|---|---|
| HC1.25-4PLT (PORT.CUSTOM / Grove) | GND / 3V3 / G1 / G2 | 3V3 + GND + 2× GPIO, open port on the back for sensors |
| USB power detect | USB_DET G5 | >0.2 V on the pin = USB attached |
| State | Current @4.2 V |
|---|---|
| Low power (main rail off, gyro low-power) | 9.28 µA |
| Standby (main rail off, gyro on) | 949.58 µA |
| Active (main rail on) | 154.02 mA |
1800 mAh + 9.28 µA deep sleep gives the best battery life in the Paper family. Wi-Fi off while reading, deep sleep when idle, zero-power e-ink standby — this power model is what the firmware implements.
- Framework: Arduino + M5Unified + M5GFX; e-ink driver requires EPDIY ≥ 2.0.0
- PlatformIO:
board = esp32-s3-devkitm-1profile family,flash_size = 16MB,memory_type = qio_opi, LittleFS ⚠️ Dev note: PSRAM must be enabled in octal mode; EPDIY needs 2.0.0+
- Power on: single-press the side key; power off: double-press
- Download mode: connect USB → long-press the side key → status LED on the back blinks red
⚠️ Don't use QC3.0/2.0 chargers on early batches: a QC protocol timing issue on the USB port means PD high voltage can damage the device; fixed in v1.1/v1.2+. Check the sticker on the back (v1.0 has no version printed).- The large flat back panel may bow slightly — a normal structural artifact, not battery swelling.
- M5Stack PaperS3 docs (datasheet downloads live here)
- Datasheets: ESP32-S3 / GT911 / EPD_ED047TC1