diff --git a/.github/workflows/verify.yml b/.github/workflows/verify.yml index be1907d..e896a3e 100644 --- a/.github/workflows/verify.yml +++ b/.github/workflows/verify.yml @@ -14,9 +14,9 @@ jobs: steps: - name: Check out pinned suite source uses: actions/checkout@v4 - - name: Check out the five RadioCore product repositories + - name: Check out RadioCore and Solar BLE source pins run: | - git submodule sync -- firmware/rc52-companion firmware/rc52-headless-companion firmware/rc52-repeater firmware/rcc6-companion firmware/rcc6-mqtt-repeater - git submodule update --init --depth 1 -- firmware/rc52-companion firmware/rc52-headless-companion firmware/rc52-repeater firmware/rcc6-companion firmware/rcc6-mqtt-repeater + git submodule sync -- firmware/rc52-companion firmware/rc52-headless-companion firmware/rc52-repeater firmware/rcc6-companion firmware/rcc6-mqtt-repeater firmware/heltec-v42-solar-companion + git submodule update --init --depth 1 -- firmware/rc52-companion firmware/rc52-headless-companion firmware/rc52-repeater firmware/rcc6-companion firmware/rcc6-mqtt-repeater firmware/heltec-v42-solar-companion - name: Validate catalog and submodule pins run: python scripts/verify_catalog.py diff --git a/.gitmodules b/.gitmodules index 5f5ffc9..ed7098a 100644 --- a/.gitmodules +++ b/.gitmodules @@ -16,6 +16,9 @@ [submodule "firmware/heltec-v4-companion"] path = firmware/heltec-v4-companion url = https://github.com/n30nex/NeonPocketMC-Heltec-V4.git +[submodule "firmware/heltec-v42-solar-companion"] + path = firmware/heltec-v42-solar-companion + url = https://github.com/n30nex/NeonPocketMC-Heltec-V4.git [submodule "firmware/deskos-meshcore"] path = firmware/deskos-meshcore url = https://github.com/n30nex/DeskOS-MeshCore.git diff --git a/README.md b/README.md index 0f1dafa..59a600d 100644 --- a/README.md +++ b/README.md @@ -134,6 +134,22 @@ These frames were captured from the OLED framebuffer running on the physical Hel Capture provenance and checksums are recorded with each device gallery under [`docs/images`](docs/images). +## Heltec V4.2 Solar BLE companion + +[Solar BLE RC1](https://github.com/n30nex/NeonPocketMC-Heltec-V4/releases/tag/v1.17.1-v42-solar-ble-rc.1) +is a separate test candidate for the original Heltec V4.2 with a single-cell +LiPo and regulated 5 V solar input. It retains standard MeshCore/MeshMapper +BLE access and continuous LoRa receive, reduces idle overhead, and adds +60-second battery checks after protective low-voltage sleep. + +USB startup and a phone connection were checked on one V4.2. Battery-only +reconnection, discharge/recharge recovery and overnight endurance remain under +test; desktop BLE reads have timed out and are being investigated. The board's +approximately 540 mA solar charger and lack of cell-temperature charge control +remain hardware limits. V4 R8 is excluded. Read the +[installation and test guide](https://github.com/n30nex/NeonPocketMC-Heltec-V4/releases/download/v1.17.1-v42-solar-ble-rc.1/START_HERE.md) +before using the [Solar BLE flasher profile](https://flasher.canadaverse.org/?device=heltec-v4&profile=solar-ble-companion). + ## ULP Solar Repeaters [ULP v1.0.0-rc.4](https://github.com/n30nex/NeonPocketMC-ULP-Solar-Repeaters/releases/tag/v1.0.0-rc.4) @@ -155,6 +171,7 @@ Each product release is pinned to an exact source commit and artifact checksum i |---|---|---|---| | Heltec WiFi LoRa 32 V3 + OLED | BLE, native-USB, Ultimate Web companion, or Ultimate Repeater WebUI | [v2.0.0-rc.2](https://github.com/n30nex/NeonPocketMC-Heltec-V3/releases/tag/v2.0.0-rc.2) | Flash the selected app `.bin` at `0x10000` | | Heltec WiFi LoRa 32 V4 + OLED | BLE, native-USB, Ultimate Web companion, or Ultimate Repeater WebUI | [v2.0.0-rc.2](https://github.com/n30nex/NeonPocketMC-Heltec-V4/releases/tag/v2.0.0-rc.2) | Flash the selected app `.bin` at `0x10000` | +| Heltec WiFi LoRa 32 V4.2 + OLED | Experimental Solar BLE companion, continuous LoRa receive | [Solar BLE RC1](https://github.com/n30nex/NeonPocketMC-Heltec-V4/releases/tag/v1.17.1-v42-solar-ble-rc.1) | App-only update at `0x10000`; read the test guide | | RC52-L62 + NV3001B TFT | BLE or native-USB companion with NeonPocket UI | [v1.1.0-rc.4](https://github.com/n30nex/NeonPocketMC-RC52/releases/tag/v1.1.0-rc.4) | Copy the selected `.uf2` to the RC52 bootloader drive | | RC52-L62 without TFT | Screenless BLE companion; pairing PIN `123456` | [v1.0.0-rc.1](https://github.com/n30nex/NeonPocketMC-RC52-Headless/releases/tag/v1.0.0-rc.1) | Copy the BLE `.uf2` to the RC52 bootloader drive | | RC52-L62 | Headless low-power repeater | [v1.1.0-rc.2](https://github.com/n30nex/NeonPocketMC-RC52-Repeater/releases/tag/v1.1.0-rc.2) | Copy the repeater `.uf2` to the RC52 bootloader drive | @@ -179,12 +196,13 @@ Exact install filenames, sizes, SHA-256 values, release links, and source commit ## Source layout -The ten firmware histories intentionally remain separate because they target different chips, bootloaders, transports, displays, and deployment roles. This repository indexes them as pinned Git submodules: +The firmware histories and separate release candidates remain pinned independently because they target different chips, bootloaders, transports, displays, and deployment roles. This repository indexes them as Git submodules: ```text firmware/ heltec-v3-companion/ heltec-v4-companion/ + heltec-v42-solar-companion/ rc52-companion/ rc52-headless-companion/ rc52-repeater/ diff --git a/catalog.json b/catalog.json index 16a8164..4192f7d 100644 --- a/catalog.json +++ b/catalog.json @@ -1,6 +1,6 @@ { "schema": 1, - "suite_version": "1.10.0-rc.3", + "suite_version": "1.11.0-rc.1", "products": [ { "id": "heltec-v3-companion", @@ -48,6 +48,33 @@ {"name": "NeonPocketMC-Heltec-V4-Ultimate-Repeater-Web-recovery-preserves-settings.bin", "size": 1180944, "sha256": "7551875a375a2fec1273b720f6244a7d27cdbecf37d633d4ccaeb71dd969b151", "url": "https://github.com/n30nex/NeonPocketMC-Heltec-V4/releases/download/v2.0.0-rc.1/NeonPocketMC-Heltec-V4-Ultimate-Repeater-Web-recovery-preserves-settings.bin"} ] }, + { + "id": "heltec-v42-solar-companion", + "hardware": "Heltec WiFi LoRa 32 V4.2 with integrated OLED, 16 MB flash and 2 MB PSRAM; V4 R8 excluded", + "role": "Experimental solar BLE companion with continuous LoRa receive and timed low-battery recovery", + "repository": "https://github.com/n30nex/NeonPocketMC-Heltec-V4", + "release": "https://github.com/n30nex/NeonPocketMC-Heltec-V4/releases/tag/v1.17.1-v42-solar-ble-rc.1", + "tag": "v1.17.1-v42-solar-ble-rc.1", + "commit": "183a0eec45e440f9cd0a496884e5a3247a90c78d", + "submodule": "firmware/heltec-v42-solar-companion", + "profiles": [ + "solar-ble-companion" + ], + "artifacts": [ + { + "name": "NeonPocketMC-Heltec-V4-Solar-BLE-app.bin", + "size": 1291504, + "sha256": "8bdb99e2d6cd044cadc784ea00b341f336bdefb0722390b9773910349e2db3e9", + "url": "https://github.com/n30nex/NeonPocketMC-Heltec-V4/releases/download/v1.17.1-v42-solar-ble-rc.1/NeonPocketMC-Heltec-V4-Solar-BLE-app.bin" + }, + { + "name": "NeonPocketMC-Heltec-V4-Solar-BLE-recovery-preserves-settings.bin", + "size": 1357040, + "sha256": "953dc458d641b9766cd280085cdd54889a6110bdc7fe55512348a1f07cd88b3c", + "url": "https://github.com/n30nex/NeonPocketMC-Heltec-V4/releases/download/v1.17.1-v42-solar-ble-rc.1/NeonPocketMC-Heltec-V4-Solar-BLE-recovery-preserves-settings.bin" + } + ] + }, { "id": "rc52-companion", "hardware": "Heltec RadioCore RC52-L62 with NV3001B TFT", diff --git a/firmware/heltec-v42-solar-companion b/firmware/heltec-v42-solar-companion new file mode 160000 index 0000000..183a0ee --- /dev/null +++ b/firmware/heltec-v42-solar-companion @@ -0,0 +1 @@ +Subproject commit 183a0eec45e440f9cd0a496884e5a3247a90c78d diff --git a/scripts/verify_catalog.py b/scripts/verify_catalog.py index e1a5ade..af13476 100644 --- a/scripts/verify_catalog.py +++ b/scripts/verify_catalog.py @@ -26,7 +26,7 @@ def main() -> None: data = json.loads(CATALOG.read_text(encoding="utf-8")) assert data["schema"] == 1 products = data["products"] - assert len(products) == 10 + assert len(products) == 11 ids: set[str] = set() names: set[str] = set()