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

Elecrow CrowPanel E-Paper 5.79 (ESP32-S3) Pinout

25 pins
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
2043IO43TXD0uartuartUART0 - USB-C flashing/logs and the UART0 port
2144IO44RXD0uartuartUART0 - 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
25 GPIOs broken out 9 free · 15 need care · 1 to avoid

Start with these

9 pins with no boot or system involvement
IO1IO2IO4IO5IO6IO7IO15IO17IO21

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

Fine - with a little care

15 pins · 10 things to know
IO0 Bootstrapping pin (Chip boot mode selection) Strapping

Must be pulled high (default) or low (to enter UART download mode) at reset. Using it for other functions can interfere with boot mode configuration.

IO3 Bootstrapping pin (controls JTAG signal source) Strapping

Sampled at reset to select JTAG interface (USB Serial/JTAG controller vs. external pins). Improper use can disable external JTAG or alter debug interface.

IO9IO10IO11IO12IO13 General-purpose SPI2 (FSPI) IO MUX pins Other

IO MUX pin of the general-purpose SPI2 (FSPI) bus, not of the in-package flash - that sits on GPIO26-32. The datasheet lists it as a priority-2 pin ("can be freely used without restrictions"), so it is only taken if your board wires flash, an SD card or a display to FSPI.

  • IO9General-purpose SPI2 (FSPI) IO MUX pin - hold/data line (FSPIHD)
  • IO10General-purpose SPI2 (FSPI) IO MUX pin - chip select (FSPICS0)
  • IO11General-purpose SPI2 (FSPI) IO MUX pin - data in (FSPID)
  • IO12General-purpose SPI2 (FSPI) IO MUX pin - clock (FSPICLK)
  • IO13General-purpose SPI2 (FSPI) IO MUX pin - data out (FSPIQ)
IO39 JTAG test clock (MTCK); IO MUX alternates CLK_OUT3 and SUBSPICS1 (chip select on the alternative SUBSPI memory bus, unused on standard modules) JTAG

Default JTAG TCK - keep it free if you debug over JTAG. It is not a flash or PSRAM line on standard modules: those sit on GPIO26-37.

IO40 JTAG test data out pin (MTDO) JTAG

Default JTAG TDO output for debugging. Using it as GPIO will interfere with JTAG debugging functionality.

IO43 UART0 transmit pin (U0TXD), default serial console TX UART

Used for bootloader output and UART console logs. If repurposed, you will lose the default serial output (and programming via UART0).

IO44 UART0 receive pin (U0RXD), default serial console RX UART

Used for bootloader input (download mode via serial). If repurposed, you cannot use the default UART0 download mode for programming the chip.

IO45 Bootstrapping pin (selects VDD_SPI flash voltage) Strapping

Determines 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.

IO46 Bootstrapping pin (used with GPIO0 for boot mode; controls ROM log output) Strapping

Must 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.

IO47IO48 Octal SPI differential clock legs (SPICLK_P/N_DIFF), used only by the 1.8 V octal flash/PSRAM variants Other

Only the 1.8 V octal parts (ESP32-S3R8V, ESP32-S3R16V) run the differential memory clock here, and on those the pin works at 1.8 V instead of 3.3 V. On the common 3.3 V modules it is a normal GPIO - several devkits drive their RGB LED from GPIO48.

  • IO47Octal SPI differential clock positive leg (SPICLK_P_DIFF), used only by the 1.8 V octal flash/PSRAM variants
  • IO48Octal SPI differential clock negative leg (SPICLK_N_DIFF), used only by the 1.8 V octal flash/PSRAM variants

Only if you know the tricks

1 pins · 1 thing to know
IO19 USB OTG negative differential data line (USB_D-) USB

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.

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.

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. 15 of the exposed pins carry boot-time or system duties on the ESP32-S3 (IO0, IO3, IO9 and 12 more).

Pinout notes 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…

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
GPIO1 toggles - wire an LED and resistor to it, or change the pin to your board's own LED.
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
// toggle GPIO1 - wire an LED and resistor to it
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: esp32s3
  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 · vs other ESP32 chips →
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 · 2
PWM
8 channels
Power
USB
USB-C
Serial
-
Boot address
0x0
Electrical
Input
5V (USB-C)
Consumption
-
Regulator
-
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 controller, a squarer aspect ratio and a lower price; the 5.79" gets you the wide banner format and the split-controller panel. Note that the 4.2" ships in two revisions with different controllers - SSD1683 on v1.0, UC8276C on v1.2 - while the 5.79" has only ever used the dual SSD1683. 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
The Elecrow store link is an affiliate link - ESPboards may earn a commission on purchases, at no extra cost to you.

Resources

Similar boards