RetiMesh/node latest release …
Heltec SX127x ESP32 Verified on hardware

Heltec Wireless Stick V2/V2.1

0.49" 64x32 OLED on the switched Vext rail, SX1276, 8 MB flash, no SD slot and no GNSS. The small panel gets its own page layout — ten columns and four rows — rather than the 128x64 one clipped. Serial is a CP2102 bridge, 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: pppd on the host makes the node a network interface at 10.65.<n>.1 (docs/local-link.md). Uses the 8 MB partition table for the same reason the V3 does: no SD card, so the filesystem is the only storage the transport store has.

No photograph on file

Heltec now publishes photographs of the Wireless Stick V3 — an ESP32-S3 with an SX1262. This build targets the V2/V2.1, an ESP32 with an SX1276: a different board behind the same name.

The pin map below is drawn from this board's own header in the firmware, so it is right whether or not a picture is.

01 Hardware

VendorHeltec
PlatformIO envheltec-ws
Board headersrc/boards/heltec_ws.h
MCUESP32: 8 MB flash
Chip familyESP32
RadioSX1276
Display0.49" 64x32 SSD1306 on Vext
ExtrasPPP over the CP2102 bridge (no SD, no GNSS)
Host linksWi-Fi access point + station · CP2102 serial bridge
Flashingesptool can reset the chip through this port

02 Radio

TransceiverSemtech SX1276/78
Radio familySX127x
As the registry states itSX1276
Default channel869.525 MHz · BW 125 kHz · SF8 · CR 4/5 · 7 dBm
inherited from Config.h
SPI busVSPI

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

Pin map heltec-ws · 3 peripherals
ESP32 8 MB flash Radio SPI SCK 5 MISO 19 MOSI 27 CS 18 RST 14 DIO1 35 DIO0 26 OLED panel I²C SDA 4 SCL 15 RST 16 Vext 21 Controls & indicators GPIO BTN 0 LED 25
Every pin as a table, with the define it comes from
PeripheralSignalGPIODefineNote
RadioSCKGPIO 5PIN_LORA_SCK
MISOGPIO 19PIN_LORA_MISO
MOSIGPIO 27PIN_LORA_MOSI
CSGPIO 18PIN_LORA_CS
RSTGPIO 14PIN_LORA_RST
DIO1GPIO 35PIN_LORA_DIO1unused by this driver on SX127x
DIO0GPIO 26PIN_LORA_DIO0
OLED panelSDAGPIO 4PIN_OLED_SDA
SCLGPIO 15PIN_OLED_SCL
RSTGPIO 16PIN_OLED_RST
VextGPIO 21PIN_DISPLAY_VEXT
Controls & indicatorsBTNGPIO 0PIN_BUTTON
LEDGPIO 25PIN_STATUS_LED

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.

CapabilityStateDetail
Reticulum transportdrivenPath table, announce propagation, hop-by-hop forwarding
Wi-Fi AP + captive portaldrivenStatus page, neighbours, bulletin board, settings
TCP 4242 + AutoInterfacedrivenStock RNS clients, zero-config discovery
LoRa radiodrivenSemtech SX1276/78
Radio self-test at bootdrivenProves the IRQ line on first boot
Prove the IRQ line at boot rather than trusting the pin map. The SX1280 work showed a wrong IRQ pin reports itself perfectly healthy and simply never receives; this board's pins come from a second-hand source, so they get checked. Drop this once it has been confirmed on hardware
RF front endnoDriven before the radio can hear anything
External PAno—
DisplaydrivenOLED · 64×32
Backlight controlno—
Touch layerno—
KeyboardnoOn its own microcontroller, over I²C
Trackballno—
microSDnoReticulum store moves onto the card when one is present
GNSSno—
Real-time clocknoSeeds the system clock at boot
Power management ICno—
Battery gaugenot driven—
The board has a JST LiPo connector and a lithium charging circuit, so a cell can be fitted — but nothing here reads its voltage yet, and that is on purpose. The reference RNode_Firmware does not read it on this board either, so there is no confirmed divider pin to copy, and a guessed one is worse here than elsewhere: a wrong IRQ pin fails loudly and obviously, while a wrong ADC pin returns a plausible number that is simply not the battery. Reporting "no battery" is truthful and every caller already handles it. Once a cell is on hand the pin can be found the same way the SX1280's were — sample the ADC-capable pins and see which one tracks half the pack voltage
IMUno—
Magnetometerno—
Environment sensorno—
Sounderno—
USB networking (CDC-NCM)noThe node is an Ethernet link with DHCP over the cable
PPP over the serial bridgenoBridge: CP2102

05 Bench notes

Status as the registry records it boards.json

verified on hardware; PPP built, not yet run on this board.

06 Install

Browser

Pick Heltec Wireless Stick V2/V2.1 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-ws

From source

pio run -e heltec-ws
pio run -e heltec-ws -t upload
pio run -e heltec-ws -t uploadfs