

ESP32 C3 EReader
ESP32 based E-Ink reader
- Size
- 62.5 × 96.2 mm
- Copper layers
- 4
- Thickness
- 1.61 mm
- Parts
- 95
- Nets
- 70
- Pads
- 310
- Tracks, vias
- 635, 171
- Pours
- 5
- Routed
- Yes
- KiCad
- KiCad 9.0 (file 20241229)
- Created
- 18 Jul 2026
- Updated
- 19 Sep 2026
Overview
ESP32 C3 EReader is an open-source printed circuit board by IS7V4N, from the IS7V4N/ESP32_E-Reader repository on GitHub. It is a 4-layer board of 62.5 × 96.2 mm with 95 parts on 70 nets, routed with 635 tracks and 171 vias.
It is built around the ESP32-C3-WROOM-02-H4, DW01A and ME6211C33M5G-N, with the USBLC6-2SC6, MBR0530 and NSR0240H among its other parts. Its parts include 32 capacitors, 27 resistors, 6 ICs, 6 switches and 5 diodes. It belongs with the lEDs and displays boards and the ESP32 and RISC-V boards of this library.
Main components
7ESP32-C3-WROOM-02-H4
SMD,20x18mm-105dBm -40℃~+105℃ 2.4GHz 20.5dBm 345mA 3V~3.6V 82mA Bluetooth5.0 ESP32-C3 On-board PCB Antenna UART、SPI、I2C、I2S、USB SMD,20x18mm WiFi Modules ROHSEspressif SystemsWiFi ModulesDW01A
SOT-23-6L-40℃~+85℃ 1 2.5V 300mV~10V 3uA 4.3V Protection IC Support SOT-23-6L Battery Management ROHSPUOLOPBattery ManagementME6211C33M5G-N
SOT-23-5-40℃~+150℃ 1 120mV@(100mA) 3.3V 500mA 50uVrms 60uA 6V 70dB@(1kHz) Fixed Over Current Protection、Enable、Short Circuit Protection Positive SOT-23-5 Voltage Regulators - Linear, Low Drop Out (LDO) Regulators ROHSMICRONEVoltage Regulators - Linear, Low Drop Out (LDO) RegulatorsUSBLC6-2SC6
SOT-23-60.35pF、0.8pF 100nA 150W@8/20us 15V 2 5V 6A@8/20us 6V ESD SOT-23-6 ESD and Surge Protection (TVS/ESD) ROHSUMWESD And Surge Protection (TVS/ESD)MBR0530
SOD-1231 Independent 30V 5.5A 500mA 550mV@500mA 80uA@30V SOD-123 Schottky Diodes ROHSJiangsu Changjing Electronics Technology (CJ)Schottky DiodesNSR0240H
SOD-323-55℃~+150℃ 1 Independent 10uA@40V 1A 250mA 40V 710mV@200mA SOD-323 Schottky Diodes ROHSonsemiSchottky DiodesSI1308EDL
SC-70-3-55℃~+150℃ 1 N-channel 1.4nC@10V 1.5A 1.5V 105pF 11pF 132mΩ@10V 23pF 30V 400mW N-Channel SOT-323 MOSFETs ROHSVishay IntertechnologyMOSFETs
README
README.mdESP32 E-Reader

A custom-built e-ink reading device based on the ESP32-C3, designed for everyday use. Built around a 4.2" e-ink display with a frontlight for reading in the dark environment, running a modified version of the Crosspoint open-source firmware adapted for custom hardware. The goal was to build a capable, low-cost alternative to commercial e-readers with full control over both hardware and software.
Hardware License
The hardware designs in /Hardware are licensed under the
CERN-OHL-W v2.
Hardware
Building your own? See the Build guide for step-by-step assembly instructions.
| Component | Details |
|---|---|
| MCU | ESP32-C3 (4MB flash) |
| Display | Good Display 4.2" grayscale e-ink panel |
| Storage | SD card (books, cache, user settings) |
| Frontlight | TI TPS61169 PWM-controlled LED driver, 15V boost |
| Battery | 700mAh LiPo |
| USB | USB-C (charging + native USB via differential pair) |
| PCB | 4-layer, custom KiCad design (Rev. B) |

PCB stack-up
F.Cu — signal
GND — full ground plane
PWR — power distribution
B.Cu — signalGround pour with stitching vias on both outer layers. EMI-sensitive boost converter traces kept compact.
Power rails
| Rail | Source | Purpose |
|---|---|---|
| 3.4–4.2V | LiPo battery | System input |
| 3.3V | LDO | ESP32-C3, logic |
| 5V | USB-C input | Charging |
| ±20V | Boost converter | E-ink panel driver |
| 15V | Boost converter (TPS61169) | Frontlight LED driver |
Power management
Three operating states optimized for battery life:
| State | Description | Wake latency |
|---|---|---|
| Active | Full speed, display updating | — |
| Sleep | Reduced CPU clock, peripherals idle | Fast |
| Deep sleep | µA range consumption, triggered by power button | Slow |
The device enters Sleep automatically after a display update completes. Deep sleep is only used when powered off via the power button.
Controls
| Button | Function |
|---|---|
| Left / Right / Back / Confirm | Context-sensitive navigation (current function shown on display) |
| Power button | Short press: page turn / Long press: power on/off |
Firmware
Based on Crosspoint Reader with modifications for custom hardware and 4MB flash constraint.
What's changed from upstream
- HalFrontlight — new HAL driver for PWM-controlled frontlight via TPS61169
- HalPowerManager — smaller tweaks
- HalGPIO — GPIO, button layout adapted to custom PCB
- partitions_4mb.csv — custom partition scheme to fit 4MB flash (replaces upstream 16MB default)
- platformio.ini — 4MB build configuration
- Display refresh — modified refresh handling for Good Display 4.2" panel compatibility
- Dictionary — English → Hungarian word lookup in the EPUB reader (see Dictionary)
See docs/4mb-build/ for detailed documentation on the 4MB build process and known issues.
Dictionary
Long-press Confirm (0.5 s) in an EPUB to enter dictionary mode. The four front buttons become a cursor:
| Button (left to right) | Short press | Long press |
|---|---|---|
| Left | cursor left | — |
| Back | cursor up | leave dictionary mode |
| Confirm | cursor down | translate the selected word |
| Right | cursor right | — |
The translation (a few Hungarian words) appears in a popup, any button closes it.
The dictionary is a file on the SD card, /dict/en-hu.dic (about 4 MB, 118 000 word forms incl. inflections). It is
built on a PC with scripts/build_dict.py from Wiktionary
(via kaikki.org) with FreeDict eng-hun as a fallback; the script
documents the steps and the file format. Wiktionary data is CC BY-SA 4.0, FreeDict eng-hun is GPL-2.0+.
Repository structure
ESP32_E-Reader/
├── Hardware/
│ ├── 3D CAD/ — enclosure 3D models
│ ├── Bill Of Materials/ — BOM spreadsheets
│ ├── PCB/ — KiCad project (Rev. B)
│ ├── REV-A/ — Rev. A schematic/layout reference
│ └── LICENSE — CERN-OHL-W v2
├── Datasheets of Components/ — component datasheets (PDF)
└── Software/
└── crosspoint-reader/ — firmware (fork of Crosspoint Reader)
├── src/ — application source (activities, UI)
├── lib/ — internal libraries (Epub engine, GfxRenderer, HAL, I18n)
├── open-x4-sdk/ — Xteink X4 community SDK (submodule)
├── docs/ — build docs, file formats, 4mb-build notes
├── scripts/ — build/codegen/debugging scripts
├── test/ — unit tests
├── platformio.ini — build configuration
└── LICENSE — MITBuild
Requirements
- PlatformIO
- ESP32-C3 board with 4MB flash
Steps
git clone https://github.com/IS7V4N/ESP32_E-Reader.git
cd ESP32_E-Reader
git submodule update --init --recursive
~/.platformio/penv/bin/pio run -e 4mb -t uploadLicense
/Hardware are licensed under the
CERN-OHL-W v2.
Firmware modifications follow the license of the upstream Crosspoint Reader project.
Parts
95| Qty | Value | Footprint | References |
|---|---|---|---|
| 10 | 4.7uF | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C3, C15, C16, C17, C18, C22, C23, C26, C28, C29 |
| 8 | 10k | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R4, R10, R11, R18, R19, R20, R21, R23 |
| 6 | 100nF | Capacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolder | C2, C4, C8, C9, C12, C30 |
| 5 | 10uF | Capacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolder | C5, C7, C10, C14, C24 |
| 4 | 100k | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R12, R13, R24, R25 |
| 3 | 1uF | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C21, C25, C27 |
| 3 | 1uF | Capacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolder | C1, C11, C13 |
| 3 | MBR0530 | Diode_SMD:D_SOD-123 | D2, D3, D4 |
| 2 | 100nF | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C31, C32 |
| 2 | 20R | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R27, R28 |
| 2 | 470R | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R5, R14 |
| 2 | 5.1k | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R7, R8 |
| 1 | 100nF | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | C20 |
| 1 | 10R | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R22 |
| 1 | 10uF | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C19 |
| 1 | 10uF | Capacitor_SMD:C_0603_1608Metric | C6 |
| 1 | 10uH | Inductor_SMD:L_Changjiang_FXL0420 | L2 |
| 1 | 12k | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R1 |
| 1 | 1M | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R16 |
| 1 | 2.2R | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R17 |
| 1 | 2.2k | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R6 |
| 1 | 2.5k | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R9 |
| 1 | 2.7k | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R15 |
| 1 | 330R | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R26 |
| 1 | 3V3 | TestPoint:TestPoint_Pad_D1.5mm | TP2 |
| 1 | 47uH | Inductor_SMD:L_Panasonic_PCC-M0540M | L1 |
| 1 | 5.6k | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R3 |
| 1 | BATT | TestPoint:TestPoint_Pad_D1.5mm | TP1 |
| 1 | BAT_Measure | TestPoint:TestPoint_Pad_D1.5mm | TP6 |
| 1 | BOOT | Jumper:SolderJumper-2_P1.3mm_Open_RoundedPad1.0x1.5mm | JP1 |
| 1 | Back | Button_Switch_SMD:SW_SKRPACE010 | SW2 |
| 1 | Batt | Connector_JST:JST_PH_S2B-PH-K_1x02_P2.00mm_Horizontal | BT1 |
| 1 | CHRG_STAT | LED_SMD:LED_0805_2012Metric_Pad1.15x1.40mm_HandSolder | D1 |
| 1 | Confirm | Button_Switch_SMD:SW_SKRPACE010 | SW3 |
| 1 | DW01A | Package_TO_SOT_SMD:SOT-23-6 | U3 |
| 1 | E-Ink_Display_connector_01x24_Socket | Connector_FFC-FPC:Mirrored_Hirose_FH12-24S-0.5SH_1x24-1MP_P0.50mm_Horizontal | J2 |
| 1 | EInk_Front_Light_Conn_01x06_Socket | Connector_FFC-FPC:XUNPU FPC-05FB-6PH20_1x06-1MP_P0.50mm_Horizontal | J3 |
| 1 | EN_Push | Button_Switch_SMD:SW_EVQ-P7C01P | S1 |
| 1 | EPD_FL | Button_Switch_SMD:SW_SPDT_CK_JS102011SAQN | FrontLight |
| 1 | ESP32-C3-WROOM-02 | RF_Module:ESP32-C3-WROOM-02 | U4 |
| 1 | FS8205A_DUAL_MOSFET | Package_TO_SOT_SMD:SOT-23-6_Handsoldering | Q1 |
| 1 | LED | TestPoint:TestPoint_Pad_D1.5mm | TP7 |
| 1 | LOGO | LOGO | G*** |
| 1 | Left | Button_Switch_SMD:SW_SKRPACE010 | SW4 |
| 1 | MCP73831-2-OT | Package_TO_SOT_SMD:SOT-23-5 | U1 |
| 1 | ME6211C33M5 | Package_TO_SOT_SMD:SOT-23-5 | U5 |
| 1 | Micro_SD_Card | Connector_Card:microSD_HC_Hirose_DM3AT-SF-PEJM5 | J4 |
| 1 | NSR0240 | Diode_SMD:D_SOD-323_HandSoldering | D5 |
| 1 | Power | Button_Switch_SMD:SW_EVQ-P7C01P | S2 |
| 1 | Right | Button_Switch_SMD:SW_SKRPACE010 | SW6 |
| 1 | Si1308EDL | Package_TO_SOT_SMD:SOT-323_SC-70 | Q2 |
| 1 | TPS61169DCKR | Package_TO_SOT_SMD:SOT-353_SC-70-5 | U6 |
| 1 | USB | Connector_USB:USB_C_Receptacle_GCT_USB4105-xx-A_16P_TopMnt_Horizontal | J1 |
| 1 | USBLC6-2SC6 | Package_TO_SOT_SMD:SOT-23-6 | U2 |
| 1 | VBUS | TestPoint:TestPoint_Pad_D1.5mm | TP3 |
| 1 | VGH | TestPoint:TestPoint_Pad_D1.5mm | TP5 |
| 1 | VGL | TestPoint:TestPoint_Pad_D1.5mm | TP4 |
Questions
How big is the ESP32 C3 EReader PCB?
It measures 62.5 × 96.2 mm and has 4 copper layers, 1.61 mm thick.
What parts does the ESP32 C3 EReader use?
95 parts, built around the ESP32-C3-WROOM-02-H4, DW01A, ME6211C33M5G-N and USBLC6-2SC6. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
Where can I download the ESP32 C3 EReader KiCad files?
From the IS7V4N/ESP32_E-Reader repository on GitHub, at the commit this page was made from: the board is Hardware/PCB/ESP32_C3_EReader.kicad_pcb and its schematic Hardware/PCB/ESP32_C3_EReader.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the ESP32 C3 EReader design in my own project?
Its repository states no licence, so its author keeps all rights: ask IS7V4N before reusing the design.
Similar boards
- 4 layers121.9 × 44.4 mm

- 2 layers84.9 × 51.2 mm

- 2 layers83.2 × 40 mm

- 4 layers28 × 70 mm

- 4 layers45 × 32 mm

Templog mainboard
Michael-Manning/E-Paper-Climate-Logger
Firmware, PCB, and enclosure for the Weathergotchi E-Paper climate logger.
68 parts457MIT - 2 layers80 × 50 mm

- 2 layers84 × 98 mm

- 4 layers45 × 69 mm

OpenVault
NoctaLabs-Sh/Nocta-One-Hardware
Open hardware for the Nocta vault: an offline password manager with a 2.7 inch e-ink screen. KiCad schematic, board layout, gerbers and BOM. CERN-OHL-S v2.
64 parts1CERN-OHL-S-2.0