Elecrow CrowPanel E-Paper 5.79 (ESP32-S3)

5.79" 792x272 black-and-white e-paper on an ESP32-S3 N8R8 with a rotary switch, buttons and a 2x10 GPIO header - we reviewed it and later wrote the ESPHome/LVGL driver for it.

USB-C
Elecrow CrowPanel E-Paper 5.79 (ESP32-S3) board
ESP32-S3
MCU
240MHz
clock
8MB
flash
512KB
SRAM
25· Two 12-bit, 20 Channels ADC
GPIO
BLE 5.0+ WiFi
radio
On this page

Pinout

25 pins
View:
Elecrow CrowPanel E-Paper 5.79 (ESP32-S3) pinout diagram
PinGPIOLabelsStatusCapabilitiesNotes
10IO0BOOTstrapping-BOOT button - hold at power-up for download mode
21IO1EXIT_BTNsafe-Exit button - active low
32IO2MENU_BTNsafe-Menu button - active low
43IO3HDRstrapping-Free GPIO on the 2x10 header
54IO4ROTARY_DOWNsafe-Rotary switch down - active low
65IO5ROTARY_PRESSsafe-Rotary switch press - active low
76IO6ROTARY_UPsafe-Rotary switch up - active low
87IO7EPD_POWERsafe-E-paper power rail switch - MUST be driven high before the display responds
99IO9HDRstrapping-Free GPIO on the 2x10 header
1010IO10SD_CSstrappingspimicroSD slot - chip select
1111IO11EPD_MOSIstrappingspiInternal - e-paper SPI MOSI
1212IO12EPD_CLKstrappingspiInternal - e-paper SPI clock
1313IO13SD_MISOstrappingspimicroSD slot - MISO
1415IO15HDRsafe-Free GPIO on the 2x10 header
1517IO17HDRsafe-Free GPIO on the 2x10 header
1619IO19HDRuart-Free GPIO on the 2x10 header
1721IO21HDRsafe-Free GPIO on the 2x10 header
1839IO39SD_CLKstrappingspimicroSD slot - clock
1940IO40SD_MOSIstrappingspimicroSD slot - MOSI
2043IO43TXD0strappinguartUART0 - USB-C flashing/logs and the UART0 port
2144IO44RXD0strappinguartUART0 - USB-C flashing/logs and the UART0 port
2245IO45EPD_CSstrappingspiInternal - e-paper chip select
2346IO46EPD_DCstrapping-Internal - e-paper data/command
2447IO47EPD_RSTstrapping-Internal - e-paper reset
2548IO48EPD_BUSYstrapping-Internal - e-paper busy signal

Start with these

9 pins with no boot or system involvement
IO1EXIT_BTNIO2MENU_BTNIO4ROTARY_DOWNIO5ROTARY_PRESSIO6ROTARY_UPIO7EPD_POWERIO15HDRIO17HDRIO21HDR

Freely assignable - no strapping, flash, USB or JTAG duties. Ideal first picks for buttons, sensors and LEDs.

Fine - with a little care

sampled at boot or shared with debug/serial
PinLabelWhat to knowRole
IO0GPIO0Must be pulled high (default) or low (to enter UART download mode) at reset. Using it for other functions can interfere with boot mode configuration.Strapping
IO3GPIO3Sampled at reset to select JTAG interface (USB Serial/JTAG controller vs. external pins). Improper use can disable external JTAG or alter debug interface.Strapping
IO39MTCK (GPIO39)Default JTAG debugging TCK pin. If JTAG is needed, this pin must be free; it may also be used internally for PSRAM chip select on certain modules, so avoid repurposing it.Other
IO40MTDO (GPIO40)Default JTAG TDO output for debugging. Using it as GPIO will interfere with JTAG debugging functionality.Other
IO43U0TXD (GPIO43)Used for bootloader output and UART console logs. If repurposed, you will lose the default serial output (and programming via UART0).Other
IO44U0RXD (GPIO44)Used for bootloader input (download mode via serial). If repurposed, you cannot use the default UART0 download mode for programming the chip.Other
IO45GPIO45Determines flash/PSRAM power voltage (3.3 V vs 1.8 V) at boot. Must match hardware configuration; using as GPIO can upset flash supply setting.Strapping
IO46GPIO46Must be at a defined level during reset (with GPIO0) to select normal or download boot and UART/USB print mode. This pin is input-only (no output drive), so it should be left for its intended strapping function.Strapping

Only if you know the tricks

wired to flash or USB - expect a fight
PinLabelWhat to knowRole
IO9FSPIHDConnected to external flash (data/hold signal) on most modules. Not recommended for use as GPIO, since it must remain dedicated to flash communication.Flash
IO10FSPICS0Used to select the external flash chip. It is required for flash access and cannot be repurposed without losing flash connectivityFlash
IO11FSPIDUsed as a data line for flash (and in-package PSRAM). It should not be used as GPIO when the flash/PSRAM is in use.Flash
IO12FSPICLKDrives the flash (and PSRAM) clock. This critical signal must be reserved for memory and not used as general GPIO.Flash
IO13FSPIQUsed as a data line for flash/PSRAM transfers. Not available for other uses when flash/PSRAM is connected.Flash
IO19USB_D-By default connected to the on-chip USB Serial/JTAG controller. Using it as general GPIO without reconfiguring IO MUX will interfere with USB functionality.USB
IO47SPICLK_PUsed only on variants with Octal SPI interface (e.g. ESP32-S3R16V) as part of the differential clock pair. On such chips it operates at 1.8 V and is reserved for the high-speed octal SPI clock, not for general GPIO use.Flash
IO48SPICLK_NUsed only on variants with Octal SPI interface, as the negative leg of the differential clock&. On such chips it operates at 1.8 V; it should be avoided for GPIO to prevent conflicts with the octal flash/PSRAM clock.Flash
These are recommendations, not hard rules - with the right pull-ups, timing and boot-state awareness most pins can be made to work. When in doubt, start green.
Pinout notes The Elecrow CrowPanel E-Paper 5.79 (ESP32-S3) pinout brings out 25 GPIO pins - every one of them usable in your project. If you want zero surprises, IO1 , IO2…

The Elecrow CrowPanel E-Paper 5.79 (ESP32-S3) pinout brings out 25 GPIO pins - every one of them usable in your project.

If you want zero surprises, IO1, IO2, IO4, IO5 and 5 more are free of any such role - the safest first picks. 8 of the exposed pins carry boot-time or system duties on the ESP32-S3 (IO0, IO3, IO39 and 5 more).


The e-paper panel takes SPI on IO12 (CLK) / IO11 (MOSI) with IO45 (CS), IO46 (DC), IO47 (RST) and IO48 (BUSY). Critically, IO7 switches the display's power rail - it must be driven high before the panel responds at all, which catches out every first-time firmware author (our ESPHome guide handles it for you).

Physical input sits on IO2 (Menu), IO1 (Exit) and the rotary switch on IO6/IO4/IO5 (up/down/press) - all active-low with pull-ups. The microSD slot runs its own SPI on IO39 (CLK), IO40 (MOSI), IO13 (MISO), IO10 (CS).

The 2x10 header exposes power rails, the UART0 pins and six free GPIOs - IO3, IO9, IO15, IO17, IO19, IO21 - a generous allocation by display-board standards, and enough for I2C plus a handful of sensors without any bus-sharing gymnastics.

Getting started

flash your first firmware in ~2 minutes
Tool:
1
Connect over USB
Install your USB-serial driver (CH340 / CP210x) if no port appears. Not detected? Hold BOOT while plugging in.
2
Match & flash
Set the Tools options shown, then click Upload.
3
Verify it runs
The onboard LED on GPIO1 blinks - swap the pin if your board's LED differs.
Set these in Tools · leave everything else at default
Arduino IDE 2.x — Tools Copy
Board: "ESP32S3 Dev Module"
Flash Size: "8MB (64Mb)"
PSRAM: "QSPI PSRAM"
Partition Scheme: "8M with spiffs (3MB APP / 1.5MB SPIFFS)" (default)
Upload Speed: "921600"
▸ every other Tools option — leave at default
Board: ESP32S3 Dev Module
Flash Size: 8MB (64Mb)
PSRAM: QSPI PSRAM
Partition Scheme: 8M with spiffs (3MB APP / 1.5MB SPIFFS)
Upload Speed: 921600
Find it: Tools ▸ Board ▸ ESP32 Arduino ▸ ESP32S3 Dev Module
blink.ino Copy
// blink the onboard LED
void setup() {
  pinMode(1, OUTPUT);
}
void loop() {
  digitalWrite(1, HIGH); delay(500);
  digitalWrite(1, LOW);  delay(500);
}
board to selectesp32-s3-devkitc-1⧉ copy
platformio.ini Copy
[env:elecrow-crowpanel-epaper-5-79]
platform = espressif32
board = esp32-s3-devkitc-1
framework = arduino
monitor_speed = 115200
upload_speed = 921600
board_build.arduino.memory_type = qio_qspi
build_flags = -DBOARD_HAS_PSRAM
Find it: PlatformIO Home ▸ Boards, search esp32-s3-devkitc-1 — or type it after board =.
board to selectesp32-s3-devkitc-1⧉ copy
device.yaml Copy
esp32:
  board: esp32-s3-devkitc-1
  variant: 
  framework:
    type: esp-idf
psram:
  mode: quad
  speed: 80MHz

# blink - GPIO1
output:
  - platform: gpio
    pin: 1
    id: led_out
light:
  - platform: binary
    name: "LED"
    output: led_out
Find it: search ESPHome's board list for esp32-s3-devkitc-1 (same ids as PlatformIO).
esptool doesn't pick board settings — a prebuilt .bin already has them baked in. This is just the raw flash command.
terminal Copy
esptool.py --chip esp32s3 --port /dev/ttyACM0 \
  --baud 921600 write_flash 0x0 firmware.bin
--port = your /dev/tty* (macOS/Linux) or COMx (Windows).

Good to know

board-specific quirks worth 60 seconds
We wrote the ESPHome driver for this panel illustration
We wrote the ESPHome driver for this panel
The dual-SSD1683 split panel defeats generic e-paper components, so we rewrote the driver from scratch - correct DisplayBuffer inheritance, a non-blocking update state machine, and LVGL compatibility. It's open source as crowpanel_epaper , and the guide builds a full weather dashboard on it. Set full_update_every: 10 for frequently updating dashboards, or 9999 and trigger full refreshes manually - we wire a…

The dual-SSD1683 split panel defeats generic e-paper components, so we rewrote the driver from scratch - correct DisplayBuffer inheritance, a non-blocking update state machine, and LVGL compatibility. It's open source as crowpanel_epaper, and the guide builds a full weather dashboard on it.

Set full_update_every: 10 for frequently updating dashboards, or 9999 and trigger full refreshes manually - we wire a long-press of the Menu button to force_full_update().

The display is dead until IO7 goes high illustration
The display is dead until IO7 goes high
IO7 switches the e-paper's power rail. Firmware must drive it high before the first SPI transaction, or the panel stays blank and every symptom points at a wiring or driver problem that isn't there. It also means you can hard-cut display power in deep-sleep scenarios for extra savings. A blank panel with working serial logs is nearly always the IO7 rail, not a broken display - check it before opening a…

IO7 switches the e-paper's power rail. Firmware must drive it high before the first SPI transaction, or the panel stays blank and every symptom points at a wiring or driver problem that isn't there. It also means you can hard-cut display power in deep-sleep scenarios for extra savings.

A blank panel with working serial logs is nearly always the IO7 rail, not a broken display - check it before opening a support ticket.

Real buttons and a rotary switch, no touchscreen needed illustration
Real buttons and a rotary switch, no touchscreen needed

E-paper and touchscreens rarely mix, so Elecrow gave this one proper physical input: Menu (IO2), Exit (IO1) and a three-way rotary switch (IO6/IO4/IO5). Mapped as an LVGL encoder, it navigates menus surprisingly well - the preloaded demo shows the pattern.

All five inputs are active-low - configure them with pull-ups and inverted logic, as in the example configs.

Specifications

ESP32-S3
Compute
MCU
ESP32-S3
Clock
240 MHz
SRAM · Flash
512 KB · 8MB · 8MB PSRAM
Radio
Wi-Fi
802.11 b/g/n
Bluetooth
5.0 LE
Antenna
PCB
I/O
GPIO · ADC
25 · Two 12-bit, 20 Channels
UART · I²C · SPI
3 · 2 · 4
PWM
8 channels
Power
USB
USB-C
Serial
-
Boot address
0x0
Display
Screen
E-Paper · 5.79" · 792x272
Driver
2x SSD1683
Touch
No
Flashing
Upload · OTA
esptool_py · esp_ota
Flash · Boot mode
- · -
Sketch · Data
- · -
The Elecrow CrowPanel E-Paper 5.79 (ESP32-S3) uses esptool_py for firmware uploads, esp_ota for over-the-air (OTA) updates.

About this board

At its core is the ESP32-S3 - a dual-core Xtensa with vector extensions suited to AI workloads.

Expect to pay about $31.90 - in line with other ESP32-S3 boards.

Onboard you'll find 8MB PSRAM, an E-Paper 5.79" 792x272 display, a microSD slot, a rotary encoder, battery charging via SH1.0-2P and Menu/Exit/Boot/Reset + rotary up/down/press buttons.


The Elecrow CrowPanel E-Paper 5.79 pairs an ESP32-S3-WROOM-1 N8R8 (8 MB flash, 8 MB PSRAM) with a wide-format 5.79-inch black-and-white e-paper panel at 792x272. We reviewed it hands-on - the short version: a well-built module in a clean acrylic case, with more physical input than e-paper boards usually get, at a price that undercuts buying a bare panel plus a dev board separately.


The input hardware is the underrated part: besides Boot and Reset you get Menu and Exit buttons plus a three-way rotary switch (up/down/press), which makes menu-driven UIs possible without any external controller. A microSD slot, battery connector with charging, UART0 port and a 2x10 GPIO header round it out - six IOs on the header are genuinely free for your own hardware.


The panel is driven by two SSD1683 controllers, each owning half of the 792-pixel width. That split design is why generic e-paper drivers don't just work - and why our review originally listed "no ESPHome support" as the main con. That con is gone: we ended up writing an ESPHome external component with full LVGL support for this exact panel, with partial refresh (~600 ms), configurable full-refresh intervals and a manual refresh hook.


Where it fits: always-on dashboards, weather stations and status displays where an LCD's backlight and power draw are wrong, and where deep sleep between updates matters. It won't do video or smooth animation - that's e-paper physics, not a flaw - but as a low-power glanceable display with real buttons, it's one of the more complete packages around.

  • 5.79" 792x272 black-and-white e-paper (two SSD1683 controllers in a split configuration)
  • ESP32-S3-WROOM-1 N8R8 - 8 MB flash, 8 MB PSRAM
  • Menu and Exit buttons plus a three-way rotary switch (up/down/press) for controller-free UIs
  • 2x10 GPIO header with six free IOs (IO3, IO9, IO15, IO17, IO19, IO21)
  • microSD slot on a dedicated SPI bus
  • SH1.0 battery connector with onboard charging - built for deep-sleep battery projects
  • Full ESPHome + LVGL support via our open-source crowpanel_epaper external component
  • Partial refresh in ~600 ms, with configurable full-refresh cadence to clear ghosting
  • Acrylic case and USB-C cable included; demo firmware preloaded

FAQ

5 common questions
Does the CrowPanel E-Paper 5.79 work with ESPHome?
Yes - using the crowpanel_epaper external component we published, which drives the dual-SSD1683 panel with full LVGL support, partial refresh and a force_full_update() hook. Our original review flagged missing ESPHome support as the board's main weakness; the component was our answer, and the companion guide walks through a complete weather-dashboard config for both this and the 4.2" model.
Why does the display do nothing when I flash my own firmware?
Almost certainly the power rail - IO7 gates power to the e-paper and must be pulled high before any SPI traffic. Elecrow's examples and our ESPHome component both do this on boot; hand-rolled firmware that skips it gets a permanently blank panel that looks exactly like a driver bug.
How fast does the screen update?
Partial refresh takes roughly 600 ms, which is quick enough for menu navigation and periodically updated dashboards. Partial updates accumulate ghosting, so a full refresh (the classic e-paper black-white flash) should run every N updates - our component exposes this as full_update_every, and a long press on the Menu button in our example config forces one on demand.
Can it run on battery?
That's the point of it. E-paper holds its image with zero power, so an ESP32-S3 deep-sleep cycle - wake, fetch data, update the display, sleep - gives battery life measured in weeks or months depending on update frequency. The SH1.0 battery connector has a charging circuit onboard; just note the connector placement on top pokes out of the acrylic case.
What's the difference from the 4.2" CrowPanel e-paper?
The 4.2" (400x300) uses a single SSD1683 controller, a squarer aspect ratio and a lower price; the 5.79" gets you the wide banner format and the split-controller panel. Both are ESP32-S3 based and both are supported by the same crowpanel_epaper ESPHome component - only the model key and pin mapping differ.

Where to buy

prices are typical street prices
Elecrow CrowPanel E-Paper 5.79 (ESP32-S3)
Elecrow CrowPanel E-Paper 5.79 (ESP32-S3)
$31.90per unit, typical

Resources

Similar boards