From 19494c14a7d07fadb5d61fe24d1b8fe6445b4227 Mon Sep 17 00:00:00 2001 From: Elektr0Vodka <211697683+Elektr0Vodka@users.noreply.github.com> Date: Fri, 16 Oct 2026 17:51:32 +0200 Subject: [PATCH] feat(companion): add experimental usb_tcp envs for six more boards Add the meshcomod multi-transport companion (USB + TCP + WebSocket + BLE, SNMP agent, manifest OTA) for the Heltec Wireless Tracker V2, Heltec Vision Master E213, Seeed Xiao S3, RAK3112, LilyGo T-ETH Elite and LilyGo T-Beam S3 Supreme, and add them to MESHCOMOD_COMPANION_ENVS so the matrix workflow builds and releases them. These were picked because nothing is lost by moving them onto the meshcomod stack: each is an ESP32-S3 (the internal RAM HTTPS OTA needs with BLE and Wi-Fi up), has at least 8 MB flash on its existing partition table (two app slots for the ~1.6 MB image), and reuses the display driver of the board's stock companion builds. RAK3112 and T-ETH Elite are headless, like the WSL3. The T-ETH Elite build runs over Wi-Fi; upstream has no Ethernet companion for it either. BLE_DEBUG_LOGGING is left out because Serial carries the companion protocol in these builds. Nobody working on the fork owns these boards, so the README marks them experimental and lists what has not been checked. README, changelog, CI releases and SNMP docs updated. All six build with pio run (flash 1.52 to 1.68 MB, static RAM 150 to 165 KB, sizes in docs/companion_snmp.md); not tested on hardware. --- README.md | 10 ++++- build.sh | 6 +++ changelog_ev.md | 1 + docs/CI_RELEASES.md | 2 +- docs/companion_snmp.md | 25 +++++++++++++ variants/heltec_e213/platformio.ini | 37 +++++++++++++++++++ variants/heltec_tracker_v2/platformio.ini | 37 +++++++++++++++++++ .../platformio.ini | 34 +++++++++++++++++ variants/lilygo_teth_elite/platformio.ini | 33 +++++++++++++++++ variants/rak3112/platformio.ini | 34 +++++++++++++++++ variants/xiao_s3/platformio.ini | 37 +++++++++++++++++++ 11 files changed, 254 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 71f0f3479..b3a139219 100644 --- a/README.md +++ b/README.md @@ -24,7 +24,7 @@ This is the **Elektr0Vodka fork** of [ALLFATHER-BV/meshcomod](https://github.com | [Receive filter](docs/companion_receive_filter.md) | `filter` CLI that drops junk group text (malformed, too old, relayed by a blocked repeater) and hides channel text by sender or content. Off by default. | Builds, not tested on hardware. | | [SNMP agent](docs/companion_snmp.md) | Read-only SNMPv2c on UDP 161, same OID layout as the Dutch-MeshCore observer. Off by default (`set snmp on`). Not in the touch build. | Builds, not tested on hardware. | | [Manifest OTA](docs/companion_manifest_ota.md) | `ota check` and `ota update` against the DutchMeshCore OTA server. Never downgrades, refuses a partition layout change. | Builds, not tested on hardware. | -| Extra boards | `usb_tcp` builds for V4 R8, V4 R8 TFT, V4 TFT (no touch), Wireless Stick Lite V3 and Wireless Tracker. BLE and USB builds for the Seeed Wio Tracker L1 / L1 Pro. | Builds, not tested on hardware. | +| Extra boards | `usb_tcp` builds for V4 R8, V4 R8 TFT, V4 TFT (no touch), Wireless Stick Lite V3 and Wireless Tracker, plus experimental ones for Wireless Tracker V2, Vision Master E213, Xiao S3, RAK3112, T-ETH Elite and T-Beam S3 Supreme. BLE and USB builds for the Seeed Wio Tracker L1 / L1 Pro. | Builds, not tested on hardware. | | CI | One runner per board, cached toolchains, pre-releases for test builds. | In use. | A build with the receive filter reports it in `ver`, e.g. `v1.18.0.1--dmc-filter (Build: ...)`. @@ -52,6 +52,8 @@ Otherwise this is the same codebase as MeshCore; upstream meshcomod syncs from M "Hardware tested" means a fork build has run on that board. Boards marked "build only" compile and are released, but nobody has flashed this fork's build on one yet. +Boards marked **experimental** go one step further out: their env is the board's stock companion build moved onto the meshcomod multi-transport stack, and nobody working on the fork owns one. Beyond the general fork caveats, nothing board specific has been checked on them: display and button handling, battery reading and power off, Wi-Fi range, and free heap with Wi-Fi, BLE and SNMP all running. Flash one only if you can recover the board over USB, and please report what works and what does not. + | Device | MCU | Display | Build env | Fork build | |---|---|---|---|---| | **Heltec WiFi LoRa 32 V4** | ESP32-S3 | 128×64 OLED | `heltec_v4_companion_radio_usb_tcp` | Hardware tested (v1.17.0.4-DMC-EV) | @@ -63,6 +65,12 @@ Otherwise this is the same codebase as MeshCore; upstream meshcomod syncs from M | **Heltec WiFi LoRa 32 V4 TFT** | ESP32-S3 | 240×320 TFT (button UI, no touch) | `heltec_v4_tft_companion_radio_usb_tcp` | Build only, new in fork | | **Heltec Wireless Stick Lite V3** | ESP32-S3 | none | `Heltec_WSL3_companion_radio_usb_tcp` | Build only, new in fork | | **Heltec Wireless Tracker** | ESP32-S3 | 160×80 TFT, GPS | `Heltec_Wireless_Tracker_companion_radio_usb_tcp` | Build only, new in fork | +| **Heltec Wireless Tracker V2** | ESP32-S3 | 160×80 TFT, GPS | `heltec_tracker_v2_companion_radio_usb_tcp` | **Experimental**, build only, new in fork | +| **Heltec Vision Master E213** | ESP32-S3 | 250×122 e-ink | `Heltec_E213_companion_radio_usb_tcp` | **Experimental**, build only, new in fork | +| **Seeed Xiao S3** (Wio-SX1262 kit) | ESP32-S3 | optional 128×64 OLED | `Xiao_S3_companion_radio_usb_tcp` | **Experimental**, build only, new in fork | +| **RAK3112** (WisBlock) | ESP32-S3 | none | `RAK_3112_companion_radio_usb_tcp` | **Experimental**, build only, new in fork | +| **LilyGo T-ETH Elite** | ESP32-S3 | none | `LilyGo_TETH_Elite_sx1262_companion_radio_usb_tcp` | **Experimental**, build only, new in fork (Wi-Fi, not Ethernet) | +| **LilyGo T-Beam S3 Supreme** | ESP32-S3 | 128×64 OLED, GPS | `T_Beam_S3_Supreme_SX1262_companion_radio_usb_tcp` | **Experimental**, build only, new in fork | | **Seeed Wio Tracker L1 / L1 Pro** | nRF52840 | 128×64 OLED, GPS | `WioTrackerL1_companion_radio_ble`, `WioTrackerL1_companion_radio_usb` | Build only, new in fork | The SNMP, receive filter and manifest OTA features are not hardware tested on any board yet, including V4 and V3. diff --git a/build.sh b/build.sh index 80c90c16c..a0f08b09f 100755 --- a/build.sh +++ b/build.sh @@ -328,6 +328,12 @@ MESHCOMOD_COMPANION_ENVS=( "heltec_v4_tft_companion_radio_usb_tcp" # Heltec V4 TFT without the touch UI "Heltec_WSL3_companion_radio_usb_tcp" # Heltec Wireless Stick Lite V3, headless "Heltec_Wireless_Tracker_companion_radio_usb_tcp" # Heltec Wireless Tracker (ST7735 TFT, GPS) + "heltec_tracker_v2_companion_radio_usb_tcp" # Heltec Wireless Tracker V2 (ST7735 TFT, GPS, FEM) + "Heltec_E213_companion_radio_usb_tcp" # Heltec Vision Master E213 (e-ink) + "Xiao_S3_companion_radio_usb_tcp" # Seeed Xiao S3 + Wio-SX1262 kit, optional SSD1306 OLED + "RAK_3112_companion_radio_usb_tcp" # RAK3112 (WisBlock ESP32-S3), headless + "LilyGo_TETH_Elite_sx1262_companion_radio_usb_tcp" # LilyGo T-ETH Elite, headless, Wi-Fi only + "T_Beam_S3_Supreme_SX1262_companion_radio_usb_tcp" # LilyGo T-Beam S3 Supreme (SH1106 OLED, GPS) # Elecrow ThinkNode M7 (ESP32-S3 + LR1110). No _usb_tcp multi-transport variant # exists for this board, so these are the stock single-transport companions. # Hardware-validated by @ptr727 in #47; we hold none, so treat regressions here diff --git a/changelog_ev.md b/changelog_ev.md index 3d51743ae..1d8ca4213 100644 --- a/changelog_ev.md +++ b/changelog_ev.md @@ -16,6 +16,7 @@ Newest first. Each entry names the PR that landed it. ### Added +- **Six more multi-transport companion boards (experimental)**: `usb_tcp` envs (USB + TCP + WebSocket + BLE, SNMP, manifest OTA) for the Heltec Wireless Tracker V2, Heltec Vision Master E213, Seeed Xiao S3, RAK3112, LilyGo T-ETH Elite and LilyGo T-Beam S3 Supreme, all added to the release list. Each is an ESP32-S3 with at least 8 MB flash on its existing partition table and reuses the display driver of the board's stock companion builds (RAK3112 and T-ETH Elite are headless). The T-ETH Elite build runs over Wi-Fi; its Ethernet port is not used, as upstream has no Ethernet companion for it either. Marked experimental in the README: nobody working on the fork owns these boards, so beyond building, nothing board specific (display, buttons, battery, free heap) has been checked. Builds, not tested on hardware. - **Seeed Wio Tracker L1 / L1 Pro companions**: the existing upstream `WioTrackerL1_companion_radio_ble` and `WioTrackerL1_companion_radio_usb` envs are now in the release list, so the fork builds and releases them (`.uf2` + DFU `.zip`). The nRF52840 has no Wi-Fi, so these are single-transport (BLE or USB) with no TCP, SNMP or manifest OTA. The CAD toggle and receive filter build in. Builds, not tested on hardware. ### CI and build diff --git a/docs/CI_RELEASES.md b/docs/CI_RELEASES.md index c629658cd..fb26df2e7 100644 --- a/docs/CI_RELEASES.md +++ b/docs/CI_RELEASES.md @@ -13,7 +13,7 @@ releases on that track (keeping the newest 5). | Track | Tag prefix | Example tag | Workflow | Builds | |-------|-----------|-------------|----------|--------| -| Companion | `companion-` | `companion-v1.16.0.1` | build-companion-firmwares | the envs in `MESHCOMOD_COMPANION_ENVS` in `build.sh` (V4, V3, Wireless Paper, Xiao, V4 R8, V4 R8 TFT, V4 TFT, Wireless Stick Lite V3 and Wireless Tracker `_usb_tcp`, ThinkNode M7 BLE and Ethernet, Wio Tracker L1 BLE and USB) | +| Companion | `companion-` | `companion-v1.16.0.1` | build-companion-firmwares | the envs in `MESHCOMOD_COMPANION_ENVS` in `build.sh` (V4, V3, Wireless Paper, Xiao, V4 R8, V4 R8 TFT, V4 TFT, Wireless Stick Lite V3, Wireless Tracker, Wireless Tracker V2, E213, Xiao S3, RAK3112, T-ETH Elite and T-Beam S3 Supreme `_usb_tcp`, ThinkNode M7 BLE and Ethernet, Wio Tracker L1 BLE and USB) | | Room server | `room-server-` | `room-server-v1.16.0.1` | build-room-server-firmwares | `*_room_server` | | Repeater | — | (manual `workflow_dispatch`) | build-repeater-firmwares | `*_repeater_tcp` | diff --git a/docs/companion_snmp.md b/docs/companion_snmp.md index 5c964b5f9..56ed7c679 100644 --- a/docs/companion_snmp.md +++ b/docs/companion_snmp.md @@ -27,6 +27,12 @@ Builds with the agent (compile flag `-D WITH_SNMP=1`): * `heltec_v4_tft_companion_radio_usb_tcp` (V4 TFT without touch, `ui-new` screens) * `Heltec_WSL3_companion_radio_usb_tcp` * `Heltec_Wireless_Tracker_companion_radio_usb_tcp` +* `heltec_tracker_v2_companion_radio_usb_tcp` +* `Heltec_E213_companion_radio_usb_tcp` +* `Xiao_S3_companion_radio_usb_tcp` +* `RAK_3112_companion_radio_usb_tcp` +* `LilyGo_TETH_Elite_sx1262_companion_radio_usb_tcp` +* `T_Beam_S3_Supreme_SX1262_companion_radio_usb_tcp` The touch build does not include it yet: it needs a heap reading on hardware first, because BLE co-init there is already gated on free heap. @@ -228,6 +234,25 @@ The Wireless Tracker sits with Wireless Paper and Xiao at about 150 KB static RAM (the 256-entry offline queue), so it is another board to check for free heap on hardware. +The experimental boards (see the README device table) were measured with a +plain `pio run -e `, so without `DISABLE_DEBUG=1` and without the OTA +variant that `build.sh` bakes in. Expect the `build.sh` figures to differ by a +few KB: + +| Env | Flash | Static RAM | App slot used | +| --- | --- | --- | --- | +| `heltec_tracker_v2_companion_radio_usb_tcp` | 1,678,605 B | 164,904 B | 50.2% of 3.19 MB | +| `Heltec_E213_companion_radio_usb_tcp` | 1,611,609 B | 162,476 B | 24.6% of 6.25 MB | +| `Xiao_S3_companion_radio_usb_tcp` | 1,604,285 B | 152,456 B | 48.0% of 3.19 MB | +| `RAK_3112_companion_radio_usb_tcp` | 1,607,765 B | 152,880 B | 48.1% of 3.19 MB | +| `LilyGo_TETH_Elite_sx1262_companion_radio_usb_tcp` | 1,517,865 B | 149,872 B | 23.2% of 6.25 MB | +| `T_Beam_S3_Supreme_SX1262_companion_radio_usb_tcp` | 1,608,273 B | 151,616 B | 48.1% of 3.19 MB | + +All six use the 256-entry offline queue, so they start at 150 to 165 KB static +RAM like Wireless Paper and Xiao S3 WIO. The Wireless Tracker V2 and E213 are +the highest; the Tracker V2 has no PSRAM, so it is the first to check for free +heap with Wi-Fi, BLE and the agent running. + These deltas were measured when the agent first went in, before the observer-aligned OIDs (`.1.5.0` onwards, `.9`, `.10`). With the full current OID set, `Heltec_v3_companion_radio_usb_tcp` builds to 1,627,545 B flash and diff --git a/variants/heltec_e213/platformio.ini b/variants/heltec_e213/platformio.ini index 021938190..23041bb1a 100644 --- a/variants/heltec_e213/platformio.ini +++ b/variants/heltec_e213/platformio.ini @@ -84,6 +84,43 @@ lib_deps = densaugeo/base64 @ ~1.4.0 bakercp/CRC32 @ ^2.0.0 +; Heltec E213: meshcomod USB + TCP + WebSocket + BLE companion on the ui-new e-ink screens. +[env:Heltec_E213_companion_radio_usb_tcp] +extends = Heltec_E213_base +extra_scripts = pre:scripts/inject_wifi_env.py, merge-bin.py +build_flags = + ${Heltec_E213_base.build_flags} + -I examples/companion_radio/ui-new + -D MAX_CONTACTS=350 + -D MAX_GROUP_CHANNELS=40 + -D DISPLAY_CLASS=E213Display + -D AUTO_OFF_MILLIS=0 + -D OFFLINE_QUEUE_SIZE=256 + -D ADMIN_PASSWORD='"password"' + -D MULTI_TRANSPORT_COMPANION=1 + -D TCP_PORT=5000 + -D WS_PORT=8765 + -D BLE_PIN_CODE=123456 + ; Plain ws:// only (no WSS): smaller image, more internal RAM for HTTPS OTA. + -D CONFIG_MBEDTLS_ASYMMETRIC_CONTENT_LEN=1 + -D CONFIG_MBEDTLS_SSL_IN_CONTENT_LEN=16384 + -D CONFIG_MBEDTLS_SSL_OUT_CONTENT_LEN=4096 + ; Optional SNMPv2c agent, off until `set snmp on` (docs/companion_snmp.md). + -D WITH_SNMP=1 +; -D MESH_PACKET_LOGGING=1 +; -D MESH_DEBUG=1 +build_src_filter = ${Heltec_E213_base.build_src_filter} + + + + + +<../examples/companion_radio/*.cpp> + +<../examples/companion_radio/ui-new/*.cpp> +lib_deps = + ${Heltec_E213_base.lib_deps} + ${esp32_ota.lib_deps} + densaugeo/base64 @ ~1.4.0 + 0neblock/SNMP_Agent @ 2.1.0 + bakercp/CRC32 @ ^2.0.0 + [env:Heltec_E213_repeater] extends = Heltec_E213_base build_flags = diff --git a/variants/heltec_tracker_v2/platformio.ini b/variants/heltec_tracker_v2/platformio.ini index 5fd9edabe..929d44e19 100644 --- a/variants/heltec_tracker_v2/platformio.ini +++ b/variants/heltec_tracker_v2/platformio.ini @@ -203,6 +203,43 @@ lib_deps = ${Heltec_tracker_v2.lib_deps} densaugeo/base64 @ ~1.4.0 +; Wireless Tracker V2: meshcomod USB + TCP + WebSocket + BLE companion on the ui-new ST7735 screens. +[env:heltec_tracker_v2_companion_radio_usb_tcp] +extends = Heltec_tracker_v2 +extra_scripts = pre:scripts/inject_wifi_env.py, merge-bin.py +build_flags = + ${Heltec_tracker_v2.build_flags} + -I examples/companion_radio/ui-new + -D MAX_CONTACTS=350 + -D MAX_GROUP_CHANNELS=40 + -D DISPLAY_CLASS=ST7735Display + -D AUTO_SHUTDOWN_MILLIVOLTS=3400 + -D OFFLINE_QUEUE_SIZE=256 + -D ADMIN_PASSWORD='"password"' + -D MULTI_TRANSPORT_COMPANION=1 + -D TCP_PORT=5000 + -D WS_PORT=8765 + -D BLE_PIN_CODE=123456 + ; Plain ws:// only (no WSS): smaller image, more internal RAM for HTTPS OTA. + -D CONFIG_MBEDTLS_ASYMMETRIC_CONTENT_LEN=1 + -D CONFIG_MBEDTLS_SSL_IN_CONTENT_LEN=16384 + -D CONFIG_MBEDTLS_SSL_OUT_CONTENT_LEN=4096 + ; Optional SNMPv2c agent, off until `set snmp on` (docs/companion_snmp.md). + -D WITH_SNMP=1 +; -D MESH_PACKET_LOGGING=1 +; -D MESH_DEBUG=1 +build_src_filter = ${Heltec_tracker_v2.build_src_filter} + + + + + + + +<../examples/companion_radio/*.cpp> + +<../examples/companion_radio/ui-new/*.cpp> +lib_deps = + ${Heltec_tracker_v2.lib_deps} + ${esp32_ota.lib_deps} + densaugeo/base64 @ ~1.4.0 + 0neblock/SNMP_Agent @ 2.1.0 + [env:heltec_tracker_v2_sensor] extends = Heltec_tracker_v2 build_flags = diff --git a/variants/lilygo_tbeam_supreme_SX1262/platformio.ini b/variants/lilygo_tbeam_supreme_SX1262/platformio.ini index af4a8eafa..ae88f3c20 100644 --- a/variants/lilygo_tbeam_supreme_SX1262/platformio.ini +++ b/variants/lilygo_tbeam_supreme_SX1262/platformio.ini @@ -169,6 +169,40 @@ lib_deps = ${T_Beam_S3_Supreme_SX1262.lib_deps} densaugeo/base64 @ ~1.4.0 +; T-Beam S3 Supreme: meshcomod USB + TCP + WebSocket + BLE companion on the ui-new SH1106 screens. +[env:T_Beam_S3_Supreme_SX1262_companion_radio_usb_tcp] +extends = T_Beam_S3_Supreme_SX1262 +extra_scripts = pre:scripts/inject_wifi_env.py, merge-bin.py +build_flags = + ${T_Beam_S3_Supreme_SX1262.build_flags} + -I examples/companion_radio/ui-new + -D MAX_CONTACTS=350 + -D MAX_GROUP_CHANNELS=40 + -D OFFLINE_QUEUE_SIZE=256 + -D ADMIN_PASSWORD='"password"' + -D MULTI_TRANSPORT_COMPANION=1 + -D TCP_PORT=5000 + -D WS_PORT=8765 + -D BLE_PIN_CODE=123456 + ; Plain ws:// only (no WSS): smaller image, more internal RAM for HTTPS OTA. + -D CONFIG_MBEDTLS_ASYMMETRIC_CONTENT_LEN=1 + -D CONFIG_MBEDTLS_SSL_IN_CONTENT_LEN=16384 + -D CONFIG_MBEDTLS_SSL_OUT_CONTENT_LEN=4096 + ; Optional SNMPv2c agent, off until `set snmp on` (docs/companion_snmp.md). + -D WITH_SNMP=1 +; -D MESH_PACKET_LOGGING=1 +; -D MESH_DEBUG=1 +build_src_filter = ${T_Beam_S3_Supreme_SX1262.build_src_filter} + + + + + +<../examples/companion_radio/*.cpp> + +<../examples/companion_radio/ui-new/*.cpp> +lib_deps = + ${T_Beam_S3_Supreme_SX1262.lib_deps} + ${esp32_ota.lib_deps} + densaugeo/base64 @ ~1.4.0 + 0neblock/SNMP_Agent @ 2.1.0 + [env:T_Beam_S3_Supreme_SX1262_kiss_modem] extends = T_Beam_S3_Supreme_SX1262 build_src_filter = ${T_Beam_S3_Supreme_SX1262.build_src_filter} diff --git a/variants/lilygo_teth_elite/platformio.ini b/variants/lilygo_teth_elite/platformio.ini index 2debb0396..24f938831 100644 --- a/variants/lilygo_teth_elite/platformio.ini +++ b/variants/lilygo_teth_elite/platformio.ini @@ -99,6 +99,39 @@ lib_deps = ${LilyGo_TETH_Elite_sx1262.lib_deps} densaugeo/base64 @ ~1.4.0 +; T-ETH Elite: meshcomod USB + TCP + WebSocket + BLE companion, headless. Wi-Fi only, the Ethernet port is not used. +[env:LilyGo_TETH_Elite_sx1262_companion_radio_usb_tcp] +extends = LilyGo_TETH_Elite_sx1262 +extra_scripts = pre:scripts/inject_wifi_env.py, merge-bin.py +build_flags = + ${LilyGo_TETH_Elite_sx1262.build_flags} + -I examples/companion_radio/ui-new + -D MAX_CONTACTS=350 + -D MAX_GROUP_CHANNELS=40 + -D OFFLINE_QUEUE_SIZE=256 + -D ADMIN_PASSWORD='"password"' + -D MULTI_TRANSPORT_COMPANION=1 + -D TCP_PORT=5000 + -D WS_PORT=8765 + -D BLE_PIN_CODE=123456 + ; Plain ws:// only (no WSS): smaller image, more internal RAM for HTTPS OTA. + -D CONFIG_MBEDTLS_ASYMMETRIC_CONTENT_LEN=1 + -D CONFIG_MBEDTLS_SSL_IN_CONTENT_LEN=16384 + -D CONFIG_MBEDTLS_SSL_OUT_CONTENT_LEN=4096 + ; Optional SNMPv2c agent, off until `set snmp on` (docs/companion_snmp.md). + -D WITH_SNMP=1 +; -D MESH_PACKET_LOGGING=1 +; -D MESH_DEBUG=1 +build_src_filter = ${LilyGo_TETH_Elite_sx1262.build_src_filter} + + + + + +<../examples/companion_radio/*.cpp> +lib_deps = + ${LilyGo_TETH_Elite_sx1262.lib_deps} + ${esp32_ota.lib_deps} + densaugeo/base64 @ ~1.4.0 + 0neblock/SNMP_Agent @ 2.1.0 + [env:LilyGo_TETH_Elite_sx1262_kiss_modem] extends = LilyGo_TETH_Elite_sx1262 build_src_filter = ${LilyGo_TETH_Elite_sx1262.build_src_filter} diff --git a/variants/rak3112/platformio.ini b/variants/rak3112/platformio.ini index d181388b0..c28d31b00 100644 --- a/variants/rak3112/platformio.ini +++ b/variants/rak3112/platformio.ini @@ -192,6 +192,40 @@ lib_deps = ${rak3112.lib_deps} densaugeo/base64 @ ~1.4.0 +; RAK3112: meshcomod USB + TCP + WebSocket + BLE companion, headless (no display). +[env:RAK_3112_companion_radio_usb_tcp] +extends = rak3112 +extra_scripts = pre:scripts/inject_wifi_env.py, merge-bin.py +build_flags = + ${rak3112.build_flags} + -I examples/companion_radio/ui-new + -D MAX_CONTACTS=350 + -D MAX_GROUP_CHANNELS=40 + -D AUTO_SHUTDOWN_MILLIVOLTS=3400 + -D OFFLINE_QUEUE_SIZE=256 + -D ADMIN_PASSWORD='"password"' + -D MULTI_TRANSPORT_COMPANION=1 + -D TCP_PORT=5000 + -D WS_PORT=8765 + -D BLE_PIN_CODE=123456 + ; Plain ws:// only (no WSS): smaller image, more internal RAM for HTTPS OTA. + -D CONFIG_MBEDTLS_ASYMMETRIC_CONTENT_LEN=1 + -D CONFIG_MBEDTLS_SSL_IN_CONTENT_LEN=16384 + -D CONFIG_MBEDTLS_SSL_OUT_CONTENT_LEN=4096 + ; Optional SNMPv2c agent, off until `set snmp on` (docs/companion_snmp.md). + -D WITH_SNMP=1 +; -D MESH_PACKET_LOGGING=1 +; -D MESH_DEBUG=1 +build_src_filter = ${rak3112.build_src_filter} + + + + + +<../examples/companion_radio/*.cpp> +lib_deps = + ${rak3112.lib_deps} + ${esp32_ota.lib_deps} + densaugeo/base64 @ ~1.4.0 + 0neblock/SNMP_Agent @ 2.1.0 + [env:RAK_3112_sensor] extends = rak3112 build_flags = diff --git a/variants/xiao_s3/platformio.ini b/variants/xiao_s3/platformio.ini index b8ae79733..2ba863640 100644 --- a/variants/xiao_s3/platformio.ini +++ b/variants/xiao_s3/platformio.ini @@ -140,6 +140,43 @@ lib_deps = densaugeo/base64 @ ~1.4.0 adafruit/Adafruit SSD1306 @ ^2.5.13 +; Xiao S3: meshcomod USB + TCP + WebSocket + BLE companion, ui-new on the optional SSD1306 OLED. +[env:Xiao_S3_companion_radio_usb_tcp] +extends = Xiao_S3 +extra_scripts = pre:scripts/inject_wifi_env.py, merge-bin.py +build_flags = + ${Xiao_S3.build_flags} + -I examples/companion_radio/ui-new + -D MAX_CONTACTS=350 + -D MAX_GROUP_CHANNELS=40 + -D DISPLAY_CLASS=SSD1306Display + -D OFFLINE_QUEUE_SIZE=256 + -D ADMIN_PASSWORD='"password"' + -D MULTI_TRANSPORT_COMPANION=1 + -D TCP_PORT=5000 + -D WS_PORT=8765 + -D BLE_PIN_CODE=123456 + ; Plain ws:// only (no WSS): smaller image, more internal RAM for HTTPS OTA. + -D CONFIG_MBEDTLS_ASYMMETRIC_CONTENT_LEN=1 + -D CONFIG_MBEDTLS_SSL_IN_CONTENT_LEN=16384 + -D CONFIG_MBEDTLS_SSL_OUT_CONTENT_LEN=4096 + ; Optional SNMPv2c agent, off until `set snmp on` (docs/companion_snmp.md). + -D WITH_SNMP=1 +; -D MESH_PACKET_LOGGING=1 +; -D MESH_DEBUG=1 +build_src_filter = ${Xiao_S3.build_src_filter} + + + + + + + +<../examples/companion_radio/*.cpp> + +<../examples/companion_radio/ui-new/*.cpp> +lib_deps = + ${Xiao_S3.lib_deps} + ${esp32_ota.lib_deps} + densaugeo/base64 @ ~1.4.0 + adafruit/Adafruit SSD1306 @ ^2.5.13 + 0neblock/SNMP_Agent @ 2.1.0 + [env:Xiao_S3_sensor] extends = Xiao_S3 build_src_filter = ${Xiao_S3.build_src_filter}