Heltec Wireless Paper
The WiFi LoRa 32 V3's ESP32-S3 and SX1262 with a 2.13" e-ink panel in place of the OLED, 8 MB flash and no PSRAM, no SD slot and no GNSS. The panel is driven through the display abstraction: pages draw on a GFX canvas and a refresh policy decides what reaches the glass, because an e-ink screen is written in whole frames and takes most of a second to do it. Revisions differ only in the panel — V1.0 is a DEPG0213BNS800, V1.1 an LCMEN2R13EFC1, V1.1.1 and V1.2 an E0213A367 — while the pins are the same across all of them; this build drives the E0213A367, so it covers V1.1.1 and V1.2. A CP2102 bridge rather than the S3's native USB, so it appears as /dev/ttyUSB* and not as an Espressif JTAG device — and every CP2102 reports the serial number 0001, so with more than one attached /dev/serial/by-id/ names only one of them and the rest have to be found by path. The serial port also carries PPP, as on the other Heltec boards. The radio's reset, busy and IRQ pins are the Heltec S3 family's rather than sourced twice for this board, so it boots with the radio self-test on — which passed on the first flash, one packet out and one back, and is what settles them.
01 Hardware
| Vendor | Heltec |
| PlatformIO env | heltec-wp |
| Board header | src/boards/heltec_wp.h |
| MCU | ESP32-S3: 8 MB flash, no PSRAM |
| Chip family | ESP32-S3 |
| Radio | SX1262 (TCXO, DIO2 drives the RF switch) |
| Display | 2.13" e-ink (250x122, E0213A367), driven |
| Extras | PPP over the CP2102 bridge (no SD, no GNSS) |
| Host links | Wi-Fi access point + station · CP2102 serial bridge · PPP over that bridge |
| Flashing | esptool can reset the chip through this port |
02 Radio
| Transceiver | Semtech SX1262 |
| Radio family | SX126x |
| As the registry states it | SX1262 (TCXO, DIO2 drives the RF switch) |
| TCXO | 1.8 V reference |
| DIO2 drives the RF switch | yes |
| Default channel | 869.525 MHz · BW 125 kHz · SF8 · CR 4/5 · 7 dBm inherited from Config.h |
| SPI bus | FSPI |
Every node on a channel must agree on frequency, bandwidth, spreading factor,
coding rate and sync word. These are the defaults this build ships with; they are changed
live on the node's settings page, which prints the matching RNodeInterface block.
03 Pin map
Read straight out of src/boards/heltec_wp.h — every peripheral
the firmware drives on this board, and the GPIO it drives it on. A harness diagram, not a
picture of where the parts sit.
Every pin as a table, with the define it comes from
| Peripheral | Signal | GPIO | Define | Note |
|---|---|---|---|---|
| Radio | SCK | GPIO 9 | PIN_LORA_SCK | |
| MISO | GPIO 11 | PIN_LORA_MISO | ||
| MOSI | GPIO 10 | PIN_LORA_MOSI | ||
| CS | GPIO 8 | PIN_LORA_CS | ||
| RST | GPIO 12 | PIN_LORA_RST | ||
| BUSY | GPIO 13 | PIN_LORA_BUSY | ||
| DIO1 | GPIO 14 | PIN_LORA_DIO1 | ||
| E-paper panel | SCK | GPIO 3 | PIN_EPD_SCK | |
| MOSI | GPIO 2 | PIN_EPD_MOSI | ||
| CS | GPIO 4 | PIN_EPD_CS | ||
| DC | GPIO 5 | PIN_EPD_DC | ||
| RST | GPIO 6 | PIN_EPD_RST | ||
| BUSY | GPIO 7 | PIN_EPD_BUSY | ||
| Controls & indicators | BTN | GPIO 0 | PIN_BUTTON | PRG, active low, beside the USB socket |
04 Firmware support
What this build actually drives on this board. Where a part is fitted but left alone, the firmware's own reason is quoted underneath rather than summarised.
| Capability | State | Detail |
|---|---|---|
| Reticulum transport | driven | Path table, announce propagation, hop-by-hop forwarding |
| Wi-Fi AP + captive portal | driven | Status page, neighbours, bulletin board, settings |
| TCP 4242 + AutoInterface | driven | Stock RNS clients, zero-config discovery |
| LoRa radio | driven | Semtech SX1262 |
| Radio self-test at boot | driven | Proves the IRQ line on first boot First board on the bench whose radio pins are inferred rather than sourced twice, so prove the interrupt line before trusting a quiet channel |
| RF front end | no | Driven before the radio can hear anything |
| External PA | no | — |
| Display | driven | E-paper · 250×122 The 2.13" panel, driven since the display grew an interface that can express what an update costs (EinkPanel.h). 250x122 landscape; the panel is 128x250 in its own orientation and the driver rotates it. The display pins are the Heltec platform's own, from the driver library's board header (heltec-eink-modules, Platforms/WirelessPaper) — which also states the LoRa pins above, and states them as 12/13/14, so the three that were inferred from the V3 when this board was added now have their second source and it agrees with the bench |
| Backlight control | no | — |
| Touch layer | no | — |
| Keyboard | no | On its own microcontroller, over I²C |
| Trackball | no | — |
| microSD | not driven | Reticulum store moves onto the card when one is present No SD slot, no GNSS, no PMU. The battery divider is left alone for the same reason as the LED: unverified on this board, and nothing reads it yet |
| GNSS | no | — |
| Real-time clock | no | Seeds the system clock at boot |
| Power management IC | no | — |
| Battery gauge | no | — |
| IMU | no | — |
| Magnetometer | no | — |
| Environment sensor | no | — |
| Sounder | no | — |
| USB networking (CDC-NCM) | no | The node is an Ethernet link with DHCP over the cable |
| PPP over the serial bridge | driven | Bridge: CP2102 |
05 Bench notes
verified on hardware (console, Wi-Fi, transport, SX1262 self-test, e-paper panel); PPP built, not yet run on this board.
06 Install
Browser
Pick Heltec Wireless Paper in the web flasher and click Install. Desktop Chrome or Edge, over HTTPS.
Terminal
pipx run --spec "git+https://github.com/dobrevit/RetiMesh_Node#subdirectory=tools/retimesh-flash" \ retimesh-flash install --board heltec-wp
From source
pio run -e heltec-wp pio run -e heltec-wp -t upload pio run -e heltec-wp -t uploadfs