Skip to content

Add Heltec Wireless Tracker v1.1 board support#19

Open
slack-t wants to merge 2 commits intojrl290:mainfrom
slack-t:feat/tracker-v1.1
Open

Add Heltec Wireless Tracker v1.1 board support#19
slack-t wants to merge 2 commits intojrl290:mainfrom
slack-t:feat/tracker-v1.1

Conversation

@slack-t
Copy link
Copy Markdown

@slack-t slack-t commented Apr 28, 2026

Summary

  • New board: BOARD_HELTEC_TRACKER (0x3D) — Heltec Wireless Tracker v1.1 (ESP32-S3, SX1262, ST7735S 160×80 TFT, UC6580 GNSS)
  • Product/model IDs: PRODUCT_HELTEC_TRACKER (0xC4), MODEL_CB (0xCB, 433 MHz), MODEL_CC (0xCC, 868/915 MHz)
  • SX1262 errata 15.4 fix (sx126x.cpp): SetPacketParams silently resets register 0x0736 to the wrong IQ polarity default; without restoring bit 2 after every call, RX demodulation fails silently while TX still works, and spurious preamble IRQs keep the carrier-detect LED constantly on. Fix is unconditional — benefits all SX1262 boards in this repo.

Files changed

File Change
platformio.ini New rtnode_heltec_tracker env (QIO PSRAM, 16 MB partitions, Adafruit ST7735+GFX)
Boards.h Full pin definitions: SX1262 (same as V4), ST7735S TFT, VEXT gate, VBAT ADC, GNSS UART
BoundaryConfig.h Add Tracker to ESP32-S3 boundary-mode allowlist
Display.h ST7735S branch: INITR_MINI160x80_PLUGIN, 160×80 landscape, NVS rotation bypass, no fillScreen on update (avoids soft-SPI flicker)
Power.h Battery branch (VBAT_READ=1, ADC_CTRL=2, same divider scale as V4)
Utilities.h / Input.h Tracker branches matching V3/V4 patterns
sx126x.cpp Tracker in SPI init + TCXO branch; errata 15.4 IQ polarity fix (unconditional)
GNSS.h New: UC6580 UART driver — VEXT gate, 115200 baud, NMEA parse into gnss_state_t
flash.py / extra_script.py Tracker board profile and provisioning entry
docs/ manifest-tracker.json, manifest-tracker-full.json, web flasher UI entry

Test plan

  • pio run -e rtnode_heltec_tracker builds cleanly
  • USB enumerates and LoRa TX/RX round-trips with another node
  • Display shows correctly in 160×80 landscape (ST7735S INITR_MINI160x80_PLUGIN)
  • LED blinks only on RX/TX activity (errata fix — was constantly on before)
  • GNSS UART streams NMEA sentences visible in serial console
  • Existing boards unaffected (errata fix is unconditional but safe for all SX1262 silicon)

🤖 Generated with Claude Code

slack-t and others added 2 commits April 28, 2026 17:17
- New board: BOARD_HELTEC_TRACKER (0x3D), PRODUCT_HELTEC_TRACKER (0xC4),
  MODEL_CB (0xCB 433 MHz) / MODEL_CC (0xCC 868/915 MHz)
- platformio.ini: new rtnode_heltec_tracker env (QIO PSRAM, 16 MB partitions,
  Adafruit ST7735+GFX libs)
- Boards.h: full pin definitions — SX1262, ST7735S TFT, VEXT, VBAT, GNSS UART
- Display.h: ST7735S branch (INITR_MINI160x80_PLUGIN, 160×80 landscape,
  NVS rotation bypass, no fillScreen on update to avoid soft-SPI flicker)
- Power.h / Utilities.h / BoundaryConfig.h / Input.h: Tracker branches
- sx126x.cpp: add Tracker to SPI init list; TCXO branch; fix SX1262 errata
  15.4 — restore register 0x0736 IQ polarity bit after every SetPacketParams
  (was missing from this fork — caused LED always-on via spurious preamble IRQ
  and silent RX demodulation failure)
- GNSS.h: UC6580 UART driver (VEXT gate, 115200 baud, NMEA parse, gnss_state_t)
- flash.py / extra_script.py: tracker board profile and provisioning entry
- docs: manifest-tracker.json + manifest-tracker-full.json; web flasher UI entry

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