Skip to content

Add Heltec T096 board support (closes #35) - #37

Open
soup0r wants to merge 1 commit into
oltaco:masterfrom
soup0r:add-heltec-t096
Open

Add Heltec T096 board support (closes #35)#37
soup0r wants to merge 1 commit into
oltaco:masterfrom
soup0r:add-heltec-t096

Conversation

@soup0r

@soup0r soup0r commented May 13, 2026

Copy link
Copy Markdown

Closes #35

Adds OTAFIX bootloader support for the Heltec Mesh Node T096
(nRF52840 + SX1262 + UC6580 GNSS), released by Heltec in April 2026.

Headline result

OTAFIX brick recovery validated on T096:

  • Interrupted mid-transfer OTA → device stays in DFU mode, accepts retry
  • Timed-out OTA → same recovery behavior
  • Full BLE OTA workflow (~1 min for 430 KB MeshCore firmware via Android DFU app)

This is the killer feature for solar-powered hilltop deployments where
physical USB access is costly. Stock Heltec T096 bootloader does not
have this recovery behavior.

Implementation

Based on existing heltec_t114 board files. T096 changes:

  • Status LED: P0.28 (white), active high (T114 used P1.03 green)
  • Display: omitted in v1 (T096 uses ST7735S which the bootloader does
    not yet support; pins documented in board.h for future addition)
  • USB PID 0x0071 matches Heltec's stock T096 (which collides with
    T114; their oversight, matching it allows out-of-box UF2 self-update)
  • Strings: HT-n5262G matches stock unit INFO_UF2.TXT

Build fix

Added per-file CFLAGS to handle stricter modern GCC (tested on 15.2):

  • bootloader_settings.o: -Wno-array-bounds
  • ghostfat.o: -Wno-unterminated-string-initialization

Scoped per-file rather than globally to avoid hiding diagnostics elsewhere.

Test environment

  • Hardware: Heltec Mesh Node T096 EU868, late-April 2026 production
  • Application firmware: MeshCore v1.15.0 repeater build (custom no-display variant)
  • DFU client: nRF Device Firmware Update app on Android
  • Bootloader binary: 32,488 B, fits in 38 KB region

Open for discussion

Happy to adjust any of:

  1. USB PID handling (alternative: use 0x0072 and require SWD for first install)
  2. GCC compatibility scope (alternative: global Makefile change vs per-file)
  3. Display support (currently deferred; could add ST7735 in this PR if preferred)

Headline: OTAFIX brick recovery validated on T096.
Interrupted and timed-out OTA transfers leave the device in DFU mode
and accept a retry, rather than bricking. Critical for solar-powered
hilltop mesh repeater deployments where physical USB access is costly.

Board details:
- nRF52840 + SX1262 (28 dBm via KCT8103L FEM) + UC6580 GNSS
- New variant src/boards/heltec_t096/ based on heltec_t114
- White status LED on P0.28, active-high (no SK6812 RGBs on this board)
- Display omitted in this port; T096 uses ST7735S which the bootloader
  does not yet support. Pins documented in board.h for future addition.
- USB PID 0x0071 matches Heltec stock T096 bootloader (note: this
  conflicts with T114's PID, which is Heltec's oversight; matching it
  allows out-of-the-box UF2 self-update for stock T096 boards).
- Volume label and product strings 'HT-n5262G' match Heltec stock.

Tested on real hardware (Heltec T096 EU868, late-Apr 2026 production):
- UF2 bootloader self-update succeeds
- MeshCore application firmware boots cleanly on new bootloader
- 'start ota' CLI jumps to DFU mode correctly
- BLE OTA via Android nRF DFU app, ~1 minute for ~430 KB firmware
- Recovery from interrupted OTA: device stays in DFU, accepts retry
- Recovery from timed-out OTA: device stays in DFU, accepts retry

Build fix for newer GCC (15.x):
- Scoped -Wno-array-bounds to bootloader_settings.o
- Scoped -Wno-unterminated-string-initialization to ghostfat.o
- Per-file scope avoids hiding diagnostics for unrelated code
@towerviewcams

Copy link
Copy Markdown

Sure hope we get this soon. Been using a pre release that not many have access to

@dblaber

dblaber commented Jun 9, 2026

Copy link
Copy Markdown

I just tested it, seemed to work perfectly fine, however the bootloader screen on TFT shows completely black when it ota dfu or uf2 dfu mode on my t096 (but still functionally works). On t114, this display shows a test pattern, along with some additional text on the tft while in dfu mode.

@skyepn

skyepn commented Aug 10, 2026

Copy link
Copy Markdown

Any update on this? Would really like to make OTA more reliable on my T096

@drveni

drveni commented Aug 15, 2026

Copy link
Copy Markdown

and update of project? THX

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.

Heltec Mesh Node T096 support

5 participants