Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .github/workflows/verify.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
3 changes: 3 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
20 changes: 19 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand All @@ -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 |
Expand All @@ -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/
Expand Down
29 changes: 28 additions & 1 deletion catalog.json
Original file line number Diff line number Diff line change
@@ -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",
Expand Down Expand Up @@ -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",
Comment thread
n30nex marked this conversation as resolved.
"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",
Expand Down
1 change: 1 addition & 0 deletions firmware/heltec-v42-solar-companion
2 changes: 1 addition & 1 deletion scripts/verify_catalog.py
Original file line number Diff line number Diff line change
Expand Up @@ -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()

Expand Down
Loading