Skip to content

Add Heltec Wireless Stick Lite V3 (BOARD_HELTEC_WSL_V3 0x43)#44

Open
slack-t wants to merge 3 commits into
attermann:masterfrom
slack-t:feature/heltec-wsl-v3
Open

Add Heltec Wireless Stick Lite V3 (BOARD_HELTEC_WSL_V3 0x43)#44
slack-t wants to merge 3 commits into
attermann:masterfrom
slack-t:feature/heltec-wsl-v3

Conversation

@slack-t
Copy link
Copy Markdown

@slack-t slack-t commented May 15, 2026

Adds support for the Heltec Wireless Stick Lite V3 as a dedicated board with its own board ID (0x43), distinct from the full Heltec V3.

Changes

Boards.h — defines BOARD_HELTEC_WSL_V3 0x43 in the ESP32 range, with inline comment per convention.

sx126x.cpp — adds BOARD_HELTEC_WSL_V3 to the SX1262 driver guard chains (pin assignments, ANT switch logic). Also fixes the radio-offline bug: the board was missing from two #if chains that enable the SX1262 RX/TX path, causing the radio to silently stay offline after boot.

Utilities.h / Power.h — board-specific pin and power management cases.

platformio.ini — new [env:heltec-wsl-v3] build target.

extra_script.py — adds heltec_wsl_v3 to the provisioning variant table.

Testing

Tested on physical hardware for several weeks running as a standalone transport node (TNC mode). RX/TX confirmed working; no observed regressions on other boards built from the same tree.

l33chy and others added 3 commits May 15, 2026 09:45
Add build environment for the HTIT-WSL_V3, which is hardware-identical
to the Heltec WiFi LoRa 32 V3 but lacks an OLED display. Uses a
NO_DISPLAY build flag to conditionally disable HAS_DISPLAY in the V3
board block. Also adds missing heltec32v3 provisioning case to
extra_script.py.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…L_V3 0x43)

Hardware is identical to Heltec LoRa32 V3 (ESP32-S3 + SX1262 + TCXO) but
without the OLED display. Defined as a proper separate board rather than
using BOARD_HELTEC32_V3 + -DNO_DISPLAY, following the same pattern as all
other boards in this firmware.

Changes:
- Boards.h: add BOARD_HELTEC_WSL_V3 constant (0x43) and full board config
  section with HAS_DISPLAY false and identical pin/modem/TCXO definitions
- sx126x.cpp: add BOARD_HELTEC_WSL_V3 to TCXO 3.3V branch in enableTCXO()
- Utilities.h: add BOARD_HELTEC_WSL_V3 to LED function definitions
- platformio.ini: switch env to -DBOARD_MODEL=BOARD_HELTEC_WSL_V3,
  remove -DNO_DISPLAY, fix stale DUSTORE_* flags to RNS_PATH_TABLE_*
- extra_script.py: add heltec32v3_wsl variant to provisioning (uses same
  rnodeconf product/model as V3: 0xC1/0xCA — identical hardware)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
BOARD_HELTEC_WSL_V3 was missing from several per-board dispatch chains,
causing the radio to stay offline:

- sx126x.cpp preInit(): WSL V3 fell through to bare SPI.begin() without
  explicit pin arguments, so SX1262 SPI bus never initialised and the
  sync word check failed → modem_installed = false
- Utilities.h eeprom_model_valid(): no case for WSL V3, so always returned
  false → "Invalid EEPROM configuration" printed at boot, hw_ready never set
- Utilities.h eeprom_model_valid(): combined with BOARD_HELTEC32_V3 since
  both accept MODEL_C5 / MODEL_CA (identical provisioning bytes)

Also add WSL V3 to Power.h battery/PMU init (same pins and ADC scaling
as V3: pin_vbat=1, pin_ctrl=37, measurement factor 0.0041).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant