Skip to content

feat(build): release Wio Tracker L1 BLE and USB companions - #14

Merged
Elektr0Vodka merged 2 commits into
mainfrom
Feat/wio-tracker-l1-companion
Oct 16, 2026
Merged

Elektr0Vodka merged 2 commits into
mainfrom
Feat/wio-tracker-l1-companion

Conversation

@Elektr0Vodka

Copy link
Copy Markdown
Owner

What changed

  • WioTrackerL1_companion_radio_ble and WioTrackerL1_companion_radio_usb are added to MESHCOMOD_COMPANION_ENVS in build.sh, so the companion release workflow builds and publishes them. This also covers the Wio Tracker L1 Pro, which uses the same nRF52840 + SX1262 board. These are the existing upstream envs, unchanged.
  • WioTrackerL1_companion_radio_ble is added to the PR build check matrix so companion code that only builds on ESP32 is caught before merge.
  • Two fixes in examples/companion_radio/MyMesh.cpp (upstream meshcomod code) that broke every non-ESP32 companion build:
    • The backup import (uiImportBackup) used the ESP32 PSRAM allocator (heap_caps_*). Other platforms now use ArduinoJson's default allocator.
    • ota status read the HTTP OTA progress globals that only ESP32Board.cpp defines (link error). It now reports ota: idle on boards without HTTP OTA.
  • README device table, changelog_ev.md and docs/CI_RELEASES.md updated.

Why

The Wio Tracker L1 (Pro) was requested. The nRF52840 has no Wi-Fi, so a usb_tcp multi-transport build is not possible. The stock single-transport companions (one image for BLE, one for USB) are what the board can run. TCP, WebSocket, SNMP and manifest OTA are not available on it. The fork's CAD toggle and receive filter are included.

How it was tested

  • sh build.sh build-firmware WioTrackerL1_companion_radio_ble and ..._usb build locally after rebasing on main (including feat(companion): add CLI commands for Wi-Fi and BLE MAC addresses #13), producing .uf2 and DFU .zip in out/.
    • BLE: RAM 46.0%, flash 61.2% of 708608
    • USB: RAM 44.2%, flash 60.0% of 708608
  • arm-none-eabi-nm on both images shows CompanionFilter::*, MyMesh::cfilter* and MyMesh::getCADEnabled linked in; the filter help string and -dmc-filter tag are present.
  • ESP32 builds were not rebuilt locally. The MyMesh.cpp changes only add #ifdef ESP32 / #if defined(ESP32) around the existing code, so ESP32 compiles the same code as before. The PR build check covers V3, V4 and V4 TFT touch.
  • Not tested on hardware.

Firmware and build impact

  • Companion releases gain two nRF52 boards. Their assets are .uf2 and .zip, not merged .bin.
  • The CI toolchain cache key is shared by all matrix jobs (platformio.ini hash). If an ESP32 job saves it first, the Wio jobs download the nordicnrf52 platform each run. That costs time only and does not affect results.
  • No change to ESP32 firmware behavior.

The backup import used the ESP32 PSRAM allocator (heap_caps_*) and
'ota status' read HTTP OTA progress globals that only ESP32Board.cpp
defines. Both broke every nRF52 companion build. Use the default
ArduinoJson allocator and report 'ota: idle' outside ESP32.
Add WioTrackerL1_companion_radio_ble and _usb to the meshcomod release
list so CI builds and publishes them (.uf2 and DFU .zip). This covers
the Wio Tracker L1 Pro, which is the same nRF52840 board. Without
Wi-Fi these are single-transport: no TCP, SNMP or manifest OTA. The
CAD toggle and receive filter are included.

The BLE env also joins the PR build check so ESP32-only companion
code is caught before merge.
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