Skip to content

feat(build): release thirteen more nRF52 companion boards - #23

Merged
Elektr0Vodka merged 5 commits into
mainfrom
Feat/nrf52-more-boards
Oct 18, 2026
Merged

Elektr0Vodka merged 5 commits into
mainfrom
Feat/nrf52-more-boards

Conversation

@Elektr0Vodka

Copy link
Copy Markdown
Owner

What

Add 28 existing upstream nRF52840 companion envs (BLE + USB for 13 boards, plus the T-Echo Lite's no-shell variant) to MESHCOMOD_COMPANION_ENVS:

LilyGo T-Echo Lite (with and without shell), RAK4631, RAK3401, Seeed SenseCAP T1000-E, Heltec T114, T1, T096 and MeshPocket, Elecrow ThinkNode M1 and M8, B&Q Nano G2 Ultra, nRF52840 Pro Micro (DIY) and Keepteen LT1.

README device table and feature row, docs/CI_RELEASES.md, docs/companion_cad_toggle.md and changelog_ev.md updated.

Why

These are the ui-new and ui-orig nRF52 boards from the upstream companion env survey. Like the Wio Tracker L1 (#14) and T-Echo (#16), they have no Wi-Fi, so they ship the stock single-transport companions (.uf2 + DFU .zip) with the receive filter and CAD toggle built in. The T1000-E uses ui-orig (CAD shown read-only on device, toggled from the app). The others use ui-new with the CAD page.

Testing

All 28 built with build.sh build-firmware (no DISABLE_DEBUG). Flash is out of 712,704 B (708,608 B on the T1000-E):

Env Flash RAM
LilyGo_T-Echo-Lite_companion_radio_ble 383,648 B (53.8%) 110,068 B
LilyGo_T-Echo-Lite_companion_radio_usb 377,936 B (53.0%) 105,636 B
LilyGo_T-Echo-Lite_non_shell_companion_radio_ble 340,360 B (47.8%) 105,468 B
LilyGo_T-Echo-Lite_non_shell_companion_radio_usb 334,728 B (47.0%) 58,564 B
RAK_4631_companion_radio_ble 491,432 B (69.0%) 109,640 B
RAK_4631_companion_radio_usb 483,480 B (67.8%) 62,728 B
t1000e_companion_radio_ble 337,468 B (47.6%) 105,508 B
t1000e_companion_radio_usb 331,836 B (46.8%) 101,084 B
Heltec_t114_companion_radio_ble 444,608 B (62.4%) 107,724 B
Heltec_t114_companion_radio_usb 438,928 B (61.6%) 60,812 B
ThinkNode_M1_companion_radio_ble 391,228 B (54.9%) 111,296 B
ThinkNode_M1_companion_radio_usb 381,964 B (53.6%) 106,864 B
ThinkNode_M8_companion_radio_ble 396,748 B (55.7%) 111,432 B
ThinkNode_M8_companion_radio_usb 374,328 B (52.5%) 106,568 B
Mesh_pocket_companion_radio_ble 371,820 B (52.2%) 109,180 B
Mesh_pocket_companion_radio_usb 366,100 B (51.4%) 62,276 B
Nano_G2_Ultra_companion_radio_ble 372,412 B (52.3%) 106,360 B
Nano_G2_Ultra_companion_radio_usb 366,716 B (51.5%) 101,936 B
Heltec_t1_companion_radio_ble 461,664 B (64.8%) 107,612 B
Heltec_t1_companion_radio_usb 455,984 B (64.0%) 60,700 B
Heltec_t096_companion_radio_ble 461,044 B (64.7%) 107,916 B
Heltec_t096_companion_radio_usb 455,348 B (63.9%) 61,012 B
RAK_3401_companion_radio_ble 460,160 B (64.6%) 108,020 B
RAK_3401_companion_radio_usb 452,208 B (63.4%) 61,116 B
ProMicro_companion_radio_ble 395,124 B (55.4%) 106,252 B
ProMicro_companion_radio_usb 387,156 B (54.3%) 59,340 B
KeepteenLT1_companion_radio_ble 379,400 B (53.2%) 105,788 B
KeepteenLT1_companion_radio_usb 362,792 B (50.9%) 58,876 B

Not tested on hardware.

Firmware and build impact

28 new release artifacts. The companion release matrix runs one runner per env, so a release grows from 31 to 59 runners. Trim the list in build.sh if that is too many.

Merge order

Stacked on #20, #22 and #19 to avoid changelog conflicts. Merge those first; GitHub then shows only this PR's commit.

disable_debug_flags() passed -UCFG_DEBUG. The Adafruit nRF52 core reads
CFG_DEBUG unconditionally (cores/nRF5/rtos.cpp), and the platform
builder only adds its CFG_DEBUG=0 default when the flags don't mention
the macro, so every nRF52 build with DISABLE_DEBUG=1 failed with
"'CFG_DEBUG' was not declared". Pass -DCFG_DEBUG=0 instead, which is
the quiet setting the builder would have used.

Built with DISABLE_DEBUG=1: LilyGo_T-Echo_companion_radio_ble,
WioTrackerL1_companion_radio_usb (both failed before) and
heltec_v4_companion_radio_usb_tcp (same size as before).
The C6 envs use pioarduino (Arduino core 3.x) through esp32c6_base but
inherited h2zero/NimBLE-Arduino 1.4.3 from esp32_base, which only builds
against core 2.x ("syscfg/syscfg.h: No such file"). Every C6 companion
failed to compile.

esp32c6_base now pulls NimBLE-Arduino 2.3.9. SerialBLEInterface keeps
its behaviour but implements both callback APIs: the bodies move into
shared helpers and thin overrides match each version's signatures
(NimBLEConnInfo, onPassKeyDisplay, onConfirmPassKey with
injectConfirmPasskey, enableScanResponse). The version is picked with
__has_include(<NimBLEAdvertisementData.h>), which only 2.x ships. Core
3.x moved esp_efuse_mac_get_default to esp_mac.h, so include it when
present.

Built: Xiao_C6, Meshimi, WHY2025_badge and LilyGo_Tlora_C6 BLE
companions, M5Stack_Unit_C6L BLE and USB, Xiao_C6_repeater_ (all failed
or untested before). The S3 boards stay on 1.4.3:
heltec_v4_companion_radio_ble and _usb_tcp build, the latter +136 B
from the helper indirection. Not tested on hardware.
After #16, #17 and #18:

- README: the multi-transport claim only holds for the Wi-Fi boards;
  add how to flash the nRF52 boards (.uf2, DFU .zip); describe nRF52
  build outputs and warn that DISABLE_DEBUG=1 breaks nRF52 builds.
- CAD toggle doc: the per-UI board examples now name the released
  boards (ui-new on the display usb_tcp boards, Wio Tracker L1 and
  T-Echo; ui-tiny on the T-Echo Card; ui-orig on the ThinkNode M7).
- Changelog: tag the Unreleased entries with the PR that landed them.
Add the existing upstream BLE and USB companion envs for the LilyGo
T-Echo Lite (with and without shell), RAK4631, RAK3401, Seeed SenseCAP
T1000-E, Heltec T114, T1, T096 and MeshPocket, Elecrow ThinkNode M1 and
M8, B&Q Nano G2 Ultra, the nRF52840 Pro Micro DIY board and Keepteen
LT1 to MESHCOMOD_COMPANION_ENVS: 28 envs, each a .uf2 plus DFU .zip.
Like the Wio Tracker L1 and T-Echo these are single-transport (no
Wi-Fi), with the receive filter and CAD toggle built in.

All 28 build with build.sh (flash 47.0% to 69.0% of 712,704 B; RAK4631
BLE is the largest). README device table, CI releases, CAD doc and
changelog updated. Not tested on hardware.

The companion release matrix grows from 31 to 59 runners.
@Elektr0Vodka
Elektr0Vodka merged commit 90d0d9f into main Oct 18, 2026
6 checks passed
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