Skip to content

fix(companion): fix the 8 boards that failed the companion release build - #21

Merged
Elektr0Vodka merged 3 commits into
dmc-devfrom
fix/dmc-dev-companion-ci-builds
Oct 16, 2026
Merged

Elektr0Vodka merged 3 commits into
dmc-devfrom
fix/dmc-dev-companion-ci-builds

Conversation

@Elektr0Vodka

Copy link
Copy Markdown

Fixes the 8 boards that failed in the first companion release run (run 38939032112, firmware=companion, channel=dev).

Board(s) Cause Fix
PicoW_companion_radio_wifi, PicoW_companion_radio_ble MeshcomodImport.cpp (#18) includes <Preferences.h> behind #if ESP32, but PlatformIO's library finder ignores the #if. The current RP2040 framework (arduinopico 1.60100) ships iLabs Hearth, which has its own Preferences.h, so it got built and hit its #error. Read meshcomod's Wi-Fi NVS keys with the IDF NVS API (nvs.h), the same storage Preferences wraps.
Heltec_mesh_solar_companion_radio_ble The meshsolar library #defines NONE, breaking InterfaceType::NONE in MultiSerialInterface.h (an upstream clash). #pragma push_macro/pop_macro("NONE") around the header.
Station_G2_companion_radio_{ble,wifi}, Station_G3_ESP32_companion_radio_{ble,wifi}, LilyGo_TBeam_1W_companion_radio_wifi 16 MB boards with no partition table get the 4 MB default (1.25 MB app slots). The BLE builds already overflowed; the Wi-Fi ones overflowed with SNMP + OTA (#20). board_build.partitions = default_16MB.csv on those companion envs (6.25 MB app slots, OTA kept).

Note: moving an existing Station G2/G3 or T-Beam 1W companion to this build changes the partition table, so it needs the full -merged.bin flash once, which resets stored data (identity, contacts). After that, OTA works normally (partSig matches).

Verification

  • Local builds pass: Heltec_mesh_solar_companion_radio_ble, Heltec_v3_companion_radio_wifi, PicoW_companion_radio_wifi, and the five 16 MB envs via build.sh (20-21% flash, .partsig = 16 MB table).
  • The PicoW fix can only be confirmed in CI: the local RP2040 framework predates iLabs Hearth. Re-run the release button (companion, dev) after merge.

🤖 Generated with Claude Code

PlatformIO's library finder ignores the #if around the include, and the
current RP2040 framework ships a library (iLabs Hearth) with its own
Preferences.h, which then got built for the PicoW companions and failed.
Use the IDF NVS API, the same storage Preferences wraps.
The Heltec mesh solar's meshsolar library defines NONE, which broke
InterfaceType::NONE in Heltec_mesh_solar_companion_radio_ble. Push the
macro out for the length of MultiSerialInterface.h.
…panions

The boards have 16 MB flash but no partition table, so they got the 4 MB
default with 1.25 MB app slots: the companion builds overflowed (BLE ones
already, Wi-Fi ones with SNMP and OTA). Their companion envs now use
default_16MB.csv (6.25 MB app slots). Moving a device to it needs the
full -merged.bin flash once.
@Elektr0Vodka
Elektr0Vodka merged commit 609283b into dmc-dev Oct 16, 2026
1 check 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