Releases: n30nex/NeonPocketMC-RCC6
Release list
NeonPocket Ultimate Companion RCC6 v2.2.0 RC1
NeonPocket Ultimate Companion RCC6 v2.2.0 RC1
Ultimate 2.2 is an experimental RCC6-L62/SX1262 + 220×128 NV3001B prerelease. It keeps every earlier release available and must not be flashed to RC32, RC52, or another RadioCore layout.
Choose exactly one image
- BLE:
NeonPocketMC-RCC6-Ultimate-v2.2.0-rc.1-BLE-app.bin - Web:
NeonPocketMC-RCC6-Ultimate-v2.2.0-rc.1-Web-app.bin - signed Web OTA:
NeonPocketMC-RCC6-Ultimate-Web-v2.2.0-rc.1.npu
Normal USB flashing writes the app-only binary at 0x10000. Use a separately named merged recovery image at 0x0 only for bootloader/partition recovery. Neither path reaches SPIFFS; do not erase the whole chip.
What 2.2 adds
- A rebuilt Web experience with five plain-language areas: Dashboard, Messages, Map, Radio, and Device.
- Grouped 24-hour and seven-day RX/TX/failure bar charts, alongside the existing live signal and two-hour telemetry.
- A local mesh map that plots only contacts carrying valid advertised coordinates. Contacts without location remain visible in the list and are never assigned a guessed position.
- At-a-glance delivery, message-history, packet, memory, storage, battery, display-transfer, and queue health.
- Cleaner human-facing labels throughout; diagnostic implementation terms stay in the detailed Device view.
- A persisted battery-size setting in the authenticated WebUI and USB CLI Rescue. For a 420 mAh pack, enter
set.batterysize 420ornp battery size 420; enter0to clear it.
RCC6 does not expose raw charger VBUS to firmware, but ESP32-C6 can detect an enumerated live USB host. A live-host disconnect clears charger-biased samples and starts a clean discharge-learning window; wall chargers and power banks fall back to at least ten minutes of sustained falling-voltage samples. Battery size is descriptive metadata; ADC calibration remains the separate multimeter-derived np battery offset <mV> setting.
The firmware source uses official MeshCore 1.17.0 plus the relevant post-release SX126x boosted-RX-gain persistence fix. There is no official upstream MeshCore 1.17.1 tag at the time of this release.
TCP/5000 remains always enabled in Web mode and carries the unrestricted MeshCore companion/admin protocol. Any trusted-LAN client can use it; HTTP authentication does not protect it.
Release proof
- exact source/tag:
ef5a16d2fa1987934ae2752ffd64bd3a437c5366 - exact-main GitHub Actions: run 31579070019
- upstream tests, deterministic WebUI verification, stable BLE/Web regressions, Ultimate BLE/Web builds, budgets, markers, manifests, and signed NPU checks all passed
- exact Web app SHA-256
96931e7d3bd54562f829ec9d4738642bdfcd17c712c3a2792cbee5bc45d1efcfwas app-only flashed and flash-verified on the connected RCC6 - the device re-enumerated with its preserved USB identity, booted the authenticated dashboard at its saved LAN address, and exposed TCP/5000
The on-device gallery in the repository was captured from the connected RCC6 framebuffer; it is device-rendered output, not a browser mockup.
NeonPocket Ultimate Companion RCC6 v2.1.0 RC1
NeonPocket Ultimate Companion RCC6 v2.1.0 RC1
Caution
Experimental RCC6-L62/SX1262 + 220×128 NV3001B firmware only. Do not flash RC32, RC52, or another RadioCore layout. The proven v1.2.0 RC2 and first Ultimate v2.0.0 RC1 remain available.
Ultimate ships as two separate application images. BLE and Wi-Fi never run together:
NeonPocketMC-RCC6-Ultimate-v2.1.0-rc.1-BLE-app.binNeonPocketMC-RCC6-Ultimate-v2.1.0-rc.1-Web-app.bin
What changed in 2.1
- Exact TFT message-delivery states: Queued, On Air, Transmitted, ACKed with round-trip time, No ACK, Unconfirmed, and Failed.
- A persistent composer with pinned recent targets, crash-safe drafts, editable quick phrases, template fields, and the one-switch keyboard.
- Adaptive 66/100/125/150 ms rendering plus Balanced, Field, and Battery power profiles.
- Calibratable battery voltage, trend, and estimated runtime telemetry.
- Refreshed device-rendered Home, Inbox, Network, Radio, Tools, Power, target-picker, and quick-phrase captures.
- Correct MeshCore path decoding:
0x80is three-byte hash mode with zero hops, so the UI now shows0 hopsinstead of the encoded value128.
The Web image retains the Ultimate dashboard, charts, explicit browser-location transfer, authenticated history/settings/status APIs, and signed app-only .npu OTA.
Warning
TCP port 5000 is always enabled in Web mode. Any client on the trusted local network can access the full MeshCore companion/admin protocol. HTTP authentication does not protect raw TCP. Use Web mode only on a trusted private LAN.
On-device gallery
Every frame below was CRC checked while exported from the connected RCC6 framebuffer. These are device-rendered screens, not browser mockups.
| Home | Inbox |
|---|---|
![]() |
![]() |
| Network Explorer | Radio |
|---|---|
![]() |
![]() |
| Tools | Power |
|---|---|
![]() |
![]() |
| Composer targets | Quick phrases |
|---|---|
![]() |
![]() |
Install and recovery
Normal USB installation is application-only at 0x10000 and preserves the bootloader, partition table, NVS, and SPIFFS identity/settings:
python -m esptool --chip esp32c6 --port COM21 write-flash 0x10000 NeonPocketMC-RCC6-Ultimate-v2.1.0-rc.1-BLE-app.bin
Replace the port and filename for Web mode. Use a separately named recovery-preserves-settings.bin image at 0x0 only for bootloader/partition recovery. Never erase the whole chip. Verify SHA256SUMS.txt before flashing.
Web OTA accepts only NeonPocketMC-RCC6-Ultimate-Web-v2.1.0-rc.1.npu. The existing bootloader does not guarantee automatic rollback from a boot-breaking app, so retain USB access and the matching recovery image.
Release proof
- exact source/tag:
587bccc291734a28829bb64b9b439c66e849898c - MeshCore 1.17.1 base
- exact-main GitHub Actions: run 31550265198
- upstream tests, deterministic WebUI, stable BLE/Web regressions, Ultimate BLE/Web builds, image budgets, target markers, manifests, and signed NPU verification passed
- exact Web app SHA-256
278c2786ee3b36648d55a888e992614df9b4811129035c3ad16a7a59373a81e0was app-only flashed and flash-verified on the connected RCC6 - saved NVS, OTA metadata, and SPIFFS were restored and verified after framebuffer capture; the exact release Web image then booted and exposed authenticated HTTP plus TCP/5000
See the full Ultimate 2.1 guide for history, composer, battery profiles, APIs, USB CLI Rescue, location, OTA, and recovery details.
NeonPocket Ultimate Companion RCC6 v2.0.0 RC1
NeonPocket Ultimate Companion RCC6 v2.0.0 RC1
Caution
Experimental RCC6-L62/SX1262 + 220×128 NV3001B firmware only. Do not flash RC32, RC52, or another RadioCore layout. Keep the proven v1.2.0 RC2 release available for rollback.
Ultimate v2 ships as two separate application images. BLE and Wi-Fi never run together:
NeonPocketMC-RCC6-Ultimate-v2.0.0-rc.1-BLE-app.binNeonPocketMC-RCC6-Ultimate-v2.0.0-rc.1-Web-app.bin
The native TFT experience now includes Home, threaded Inbox, Network Explorer, Radio/Diagnostics, composer and history Tools, and deliberate two-hold Power control. It uses a 28,160-byte indexed framebuffer, 20×8 changed-tile transfers, eased 15 FPS motion, persistent /np/ history and seven-day metrics, a one-switch keyboard, and the full stage-driven NeonPocket demo-scene startup.
The Web image adds the Ultimate dashboard, explicit browser-location transfer, authenticated history/settings/status APIs, and signed app-only .npu OTA.
Warning
TCP port 5000 is always enabled in Web mode. Any client on the trusted local network can access the full MeshCore companion/admin protocol. HTTP authentication does not protect raw TCP. Use Web mode only on a trusted private LAN.
On-device gallery
Every frame below was CRC checked while exported from the connected RCC6 framebuffer. These are device-rendered screens, not browser mockups.
| Home | Inbox |
|---|---|
![]() |
![]() |
| Network Explorer | Radio |
|---|---|
![]() |
![]() |
| Tools | Power |
|---|---|
![]() |
![]() |
Install
Normal USB installation is application-only at 0x10000 and preserves the bootloader, partition table, NVS, and SPIFFS identity/settings:
python -m esptool --chip esp32c6 --port COM21 write-flash 0x10000 NeonPocketMC-RCC6-Ultimate-v2.0.0-rc.1-BLE-app.bin
Replace the port and filename for Web mode. Use a recovery-preserves-settings.bin image at 0x0 only for bootloader/partition recovery. Never erase the whole chip. Verify SHA256SUMS.txt before flashing.
Web OTA accepts only the signed NeonPocketMC-RCC6-Ultimate-Web-v2.0.0-rc.1.npu. USB recovery remains required for a boot-breaking update because the existing bootloader does not guarantee automatic rollback.
Candidate proof
- exact source:
d1a46ee5cd97398f36a2aa06437ad2b00b88eb87 - MeshCore 1.17.1 base
- exact-main GitHub Actions: upstream tests, deterministic WebUI, stable BLE/Web regressions, Ultimate BLE/Web builds, image/partition/marker budgets, signed NPU verification
- connected RCC6: upright six-area render, CRC-checked frames, threaded Inbox/message paging, Network details/Back navigation, and app-only flash identity preservation
See the full Ultimate guide for history, APIs, USB CLI Rescue, location, OTA, recovery, and security details.
NeonPocketMC-RCC6 v1.2.0 RC2
NeonPocketMC-RCC6 1.2 RC2
Experimental BLE and Wi-Fi Web/AP MeshCore companion firmware for the Heltec RadioCore RCC6 with the attached 220×128 NV3001B TFT.
RX-gain hotfix
- Backports the exact six-file fix from upstream MeshCore PR #3158 / commit
6f491f30332226a57291cce6c7c3864e931b374d. - Preserves the configured boosted-RX-gain setting after RadioLib radio resets instead of reverting to the compiled default.
- Includes no unrelated MeshCore
devchanges. Upstream has not published an official 1.17.1 tag; this is MeshCore 1.17.0 plus that exact fix.
Exact product source: bbf585e65afb1044d2ed91079f96d3b0e3325279. WebUI verification and both BLE and Web/AP firmware builds passed in exact-main Actions run 31434948735.
Choose either BLE or Web/AP. Flash a normal -app.bin at 0x10000; use the matching merged recovery image at 0x0 only for bootloader/partition recovery. Do not erase the whole flash. Recovery images stop before SPIFFS and preserve MeshCore identity, contacts, channels, and preferences.
This hotfix build is CI-qualified but was not re-flashed during this release pass. It remains a prerelease.
NeonPocketMC-RCC6 v1.2.0 RC1
NeonPocketMC-RCC6 1.2 RC1
Experimental MeshCore 1.17 companion firmware for the Heltec RadioCore RCC6 with the attached 220×128 NV3001B TFT.
New in this candidate
- Animated NeonPocketMC startup.
- Cached Diagnostics page.
- Six-choice auto-scanning Quick Reply for the latest valid direct or channel target.
- Canonical on-device and WebUI branding.
Choose either BLE or Web/AP. Flash normal application files at 0x10000; use a matching merged recovery file at 0x0 only for bootloader/partition recovery. Do not erase the whole flash. The merged files stop before SPIFFS and preserve MeshCore identity, contacts, channels, and preferences.
The exact BLE candidate was app-only flashed and read-back verified on the RCC6 qualification unit, booted with its 56,320-byte framebuffer, and passed the 16 KB memory gate. This remains a prerelease.
NeonPocketMC-RCC6 1.1 RC1
NeonPocketMC-RCC6 1.1 RC1
This prerelease moves the RCC6 NeonPocket companion firmware to MeshCore 1.17.0 at upstream commit 727fc0512ce08bfd7b499e46daa7fca6eeec730d.
It provides two separate RCC6 images:
- BLE — secure MeshCore companion mode with the native 220×128 NeonPocket TFT interface.
- Web/AP — the same TFT experience plus a WPA setup AP, local 2.4 GHz Wi-Fi setup, authenticated WebUI, and TCP/5000 for trusted private LANs.
Storage-startup fix
Earlier builds could show STORAGE ERROR after a fresh/full recovery because an erased SPIFFS partition is not yet a formatted filesystem. This version mounts without auto-formatting, formats only when the entire SPIFFS partition is confirmed erased (0xFF), and otherwise fails closed without destroying existing MeshCore data.
Normal app-only updates and the included merged recovery images preserve the SPIFFS partition containing identity, contacts, channels, and preferences.
Exact-candidate validation
- Public source/tag:
3de6a8ff564fb07ce799c65250112fd8efeca476 - GitHub Actions run
31331428438: embedded WebUI, BLE firmware, Web/AP firmware, DIO image/header checks, merged recovery images, and checksums passed. - Both exact app images were flashed at
0x10000and read-back verified on RCC6f0:f5:bd:0b:aa:e0; no erase was performed. - Web/AP booted once, allocated the 56,320-byte framebuffer, passed the 16 KB runtime memory gate, joined local Wi-Fi, returned the expected HTTP authentication challenge, and opened TCP/5000.
- BLE booted cleanly, allocated the framebuffer, passed the memory gate, retained the stored node identity, and advertised the MeshCore UART service after reset.
Files
NeonPocketMC-RCC6-1.1-RC1-BLE-app.bin— recommended BLE update; flash at0x10000.NeonPocketMC-RCC6-1.1-RC1-WebAP-app.bin— recommended Web/AP update; flash at0x10000.*-full-recovery-preserves-meshcore-settings.bin— bootloader/partition recovery at0x0; resets NVS/BLE bonds/saved Wi-Fi but does not reach SPIFFS at0xC90000.NeonPocketMC-RCC6-1.1-RC1-third-party-licenses.zip— license texts and dependency notices.SHA256SUMS.txt— integrity manifest.
Attach the LoRa antenna before transmitting. Do not erase the whole flash. Raw TCP/5000 exposes the full companion/admin protocol; use station mode only on a trusted private LAN.
RCC6 only—do not flash RC32, RC52, or other RadioCore hardware.
RadioCore²-RCC6 1.0 RC2
RadioCore²-RCC6 1.0 RC2
RC2 replaces the withdrawn RC1 startup candidate. It provides two separate RCC6 firmware modes with the same Neon Pocket 220×128 TFT experience:
- BLE — secure MeshCore companion mode with PIN pairing.
- Web/AP — offline iPhone-dark WebUI, WPA setup AP, local 2.4 GHz Wi-Fi wizard, authenticated station HTTP, and raw TCP/5000 for trusted private LANs.
Physical validation
Firmware source candidate: 2fd6c8bfd1b6a2cf05a3f991eddfa8e188ae87bd (merged to main).
- Both exact images app-only flashed and hash-verified on the ESP32-C6 RCC6.
- Both cleanly booted with the 56,320-byte framebuffer and normal delta flush.
- BLE companion connected, loaded the node, and sent a direct Public LoRa message received independently at 11.75 dB SNR.
- Web/AP joined local Wi-Fi, served the authenticated WebUI, returned a valid TCP/5000 MeshCore
DEVICE_INFO, and sent a direct Public LoRa message received independently at 12.0 dB SNR. - GitHub Actions unit tests, deterministic WebUI verification, BLE build, and Web/AP build passed.
Files
RadioCore2-RCC6-1.0-RC2-BLE-app.bin— recommended BLE app-only update at0x10000; preserves NVS and MeshCore settings.RadioCore2-RCC6-1.0-RC2-WebAP-app.bin— recommended Web/AP app-only update at0x10000; preserves NVS and MeshCore settings.*-full-recovery-preserves-meshcore-settings.bin— flash at0x0; resets NVS, BLE bonds, and saved Wi-Fi while preserving MeshCore identity/settings in SPIFFS.RadioCore2-RCC6-1.0-RC2-third-party-licenses.zip— license texts and dependency source pointers.SHA256SUMS.txt— integrity manifest.
Attach the LoRa antenna before transmitting. Raw TCP/5000 exposes the full companion/admin protocol without application authentication; use Web station mode only on a trusted private LAN.
This is a prerelease. Exhaustive battery-runtime, low-voltage, notification-failure, and long-duration RF soak testing remains for final 1.0.













