Record Heltec V2 BLE memory repair and validation
This commit is contained in:
1 parent
1d4016f483
commit
2c762540ab
4 files changed
+153
-5
No files matched your search
@@ -111,12 +111,15 @@ The same-size V4 build of
|
||||
adds only the channel-response padding fix described below. Bluetooth, radio,
|
||||
sleep-policy and role code are unchanged between those last two revisions.
|
||||
|
||||
Classic Heltec V2 BLE remains below its required 8,192-byte internal RAM
|
||||
reserve. Historical checks left 2,552 bytes free on the baseline and 1,224 bytes
|
||||
At this checkpoint, Classic Heltec V2 BLE was below its required 8,192-byte
|
||||
static DRAM reserve. Historical checks left 2,552 bytes free on the baseline and 1,224 bytes
|
||||
on the initial sleep candidate. Removing an unnecessary WiFi-driver reference
|
||||
recovered 1,208 bytes, raising the later candidate to 2,432: 120 below baseline
|
||||
and 5,760 short of the reserve. Final cache/padding revisions were not
|
||||
remeasured on V2. The gate was retained; this target remains unqualified.
|
||||
remeasured on V2. The gate was retained. The later
|
||||
[22 October V2 cache repair](heltec_v2_ble_memory_2026-10-22.md) closes the RAM
|
||||
build failure with 12,440 static bytes free and unchanged capacities; physical
|
||||
V2 operation was not measured by that repair.
|
||||
|
||||
## Physical V4 observations
|
||||
|
||||
@@ -663,8 +666,8 @@ failure is retained, with its separate automatic-permission recovery verified.
|
||||
No nRF52 board, hub power or other firmware was changed in this task.
|
||||
|
||||
The Bluetooth hardware checks pass. SDK light-sleep calls are observed without
|
||||
SDK errors. Strict sleeping two-frequency packet qualification remains open,
|
||||
and Classic V2 still fails its existing RAM reserve gate. These results do not
|
||||
SDK errors. Strict sleeping two-frequency packet qualification remains open.
|
||||
The later V2 cache repair passes its existing RAM reserve gate. These results do not
|
||||
qualify every ESP32 board or the full thirteen-radio fleet, and do not measure
|
||||
electrical power savings. Unchanged Bluetooth and quiet-wait checks were not
|
||||
repeated for padding, version, documentation or fixture-only changes.
|
||||
|
||||
@@ -0,0 +1,86 @@
|
||||
<!-- meshcore-hosted-doc-link:start -->
|
||||
<p class="meshcore-hosted-doc-link"><a href="https://mikecarper.github.io/MeshCore/test-results/heltec_v2_ble_memory_2026-10-22/">View this page on MeshCore Docs</a>.</p>
|
||||
<!-- meshcore-hosted-doc-link:end -->
|
||||
|
||||
# Heltec V2 BLE RAM reserve repair, 22 October 2026
|
||||
|
||||
Status: **build, memory and host tests PASS**. Physical V2 operation was not
|
||||
tested in this work. The earlier RAM failure remains recorded below.
|
||||
|
||||
Clean source
|
||||
[`1d4016f48`](https://github.com/mikecarper/MeshCore/commit/1d4016f483caaddebde4c923f7eea3dee27ac3ea)
|
||||
was built through the canonical builder as `Heltec_v2_companion_radio_ble`,
|
||||
using the auto feature profile, Cascade runtime defaults, USA Cascadia radio
|
||||
preset and release-length version `v1.18.0.1-halo-keymind-cascade-dev-1d4016f4`.
|
||||
The [safe receipt](heltec_v2_ble_memory_2026-10-22.safe.json) binds the source,
|
||||
linked measurements and packaged artifact hashes.
|
||||
|
||||
## Change and retained behavior
|
||||
|
||||
Only V2 BLE explicitly enables the existing `MESH_CONTACT_CACHE` policy.
|
||||
Its `Heltec_v2_companion_radio_ble_ps` alias inherits the same setting.
|
||||
Other V2 profiles and the default cache policies of other boards are unchanged.
|
||||
|
||||
All 160 contacts, eight channels and 128 offline frames remain available.
|
||||
The cache keeps 16 paths and 16 shared secrets resident, rather than embedding
|
||||
a complete path and shared secret in every contact object. Other paths remain
|
||||
accessible through checked reads of existing contact records; cold ESP32
|
||||
secrets are recalculated without secret-file I/O. These resident-cache limits
|
||||
do not reduce the contact capacity. Cold access can add filesystem reads or
|
||||
key-calculation work.
|
||||
|
||||
The Bluedroid Bluetooth host, PIN authentication, bond storage, dependencies,
|
||||
radio/display setup, contact protocol and 152-byte contact-file records remain
|
||||
unchanged. No pairing migration or repartitioning is introduced. The packaged
|
||||
capability verification passes with an empty reductions list.
|
||||
|
||||
The existing 8,192-byte static DRAM reserve remains mandatory. The runtime
|
||||
model additionally reserves 6,144 bytes for this explicit ESP32 cache opt-in:
|
||||
4,096 bytes for retained reader buffering plus 2,048 bytes for reader objects,
|
||||
allocator metadata and related overhead. This is above the unchanged common
|
||||
filesystem and transient allowances; it is not a claim of zero heap cost.
|
||||
Automatic Full profiles keep their existing accounting policy.
|
||||
|
||||
## Linked results
|
||||
|
||||
| Check | Baseline `76437c6bf` | Fixed `1d4016f48` |
|
||||
| --- | ---: | ---: |
|
||||
| Static DRAM region | 124,580 bytes | 124,580 bytes |
|
||||
| Occupied static span | 122,964 bytes | 112,140 bytes |
|
||||
| Static DRAM free | 1,616 bytes | 12,440 bytes |
|
||||
| Required static reserve | 8,192 bytes | 8,192 bytes |
|
||||
| Margin above reserve | -6,576 bytes, FAIL | 4,248 bytes, PASS |
|
||||
|
||||
The fixed image saves **10,824 static bytes**. Its runtime model passes with
|
||||
181,400 internal bytes available versus 141,104 required, including the extra
|
||||
reader allowance. The modeled margin is 40,296 bytes; these are linked
|
||||
capacity estimates, not running free-heap or fragmentation measurements.
|
||||
|
||||
The application occupies 1,810,568 of 3,342,336 app-slot bytes. The partition
|
||||
table is byte-identical to the baseline. Both firmware and merged packages,
|
||||
capability verification and unchanged application-size gates pass. The failed
|
||||
baseline ELF/map and successful candidate/final artifacts are retained privately.
|
||||
|
||||
## Verification and limits
|
||||
|
||||
All 74 host test methods passed:
|
||||
|
||||
- 14 contact-cache methods, including the exact non-Full ESP32 160-contact
|
||||
configuration with default secret-flash caching disabled. Sanitized cases
|
||||
cover eviction, unchanged frames/files, full reload, cooperative saves,
|
||||
held snapshots, failed-write rollback and cold-secret recalculation.
|
||||
- 53 RAM-policy methods, including the resolved-environment metadata check.
|
||||
Synthetic ELF checks reject the old capacity and one byte below the new
|
||||
requirement, and accept the exact new boundary.
|
||||
- Seven contact-lifetime, partial-record and packet-streaming methods.
|
||||
|
||||
The unit workflow now builds this exact classic ESP32 target at release-version
|
||||
length and enforces both memory gates. The inherited power-saving alias is
|
||||
checked by the recipe contract; an identical feature configuration was not
|
||||
built a second time. No firmware feature or capacity was removed to obtain
|
||||
the pass, and no memory gate was lowered.
|
||||
|
||||
No radio was flashed or contacted. Physical V2 boot, pairing/reconnect,
|
||||
populated contact sync, filesystem latency and sleep remain outside this
|
||||
build/host result. It closes the documented V2 RAM build failure, not those
|
||||
hardware qualification claims.
|
||||
@@ -0,0 +1,58 @@
|
||||
{
|
||||
"source_commit": "1d4016f483caaddebde4c923f7eea3dee27ac3ea",
|
||||
"source_clean": true,
|
||||
"canonical_target": "Heltec_v2_companion_radio_ble",
|
||||
"runtime_profile": "cascade",
|
||||
"build_profile": "auto",
|
||||
"radio_preset": "usa-cascadia",
|
||||
"version": "v1.18.0.1-halo-keymind-cascade-dev-1d4016f4",
|
||||
"passed": true,
|
||||
"static_used": 112140,
|
||||
"static_limit": 124580,
|
||||
"static_free": 12440,
|
||||
"static_required_reserve": 8192,
|
||||
"static_margin": 4248,
|
||||
"static_saved": 10824,
|
||||
"runtime_available": 181400,
|
||||
"runtime_required": 141104,
|
||||
"runtime_margin": 40296,
|
||||
"cache_reader_allowance": 6144,
|
||||
"partitions_unchanged": true,
|
||||
"capabilities_verified": true,
|
||||
"reductions": [],
|
||||
"host_test_methods_passed": 74,
|
||||
"hardware_tested": false,
|
||||
"preserved": {
|
||||
"contacts": 160,
|
||||
"channels": 8,
|
||||
"offline_frames": 128,
|
||||
"bluetooth_host": "Bluedroid",
|
||||
"existing_bonds": "unchanged storage and host",
|
||||
"contact_record_bytes": 152
|
||||
},
|
||||
"artifact_sha256": {
|
||||
"Heltec_v2_companion_radio_ble.partsig": "a743a4253cddb196524eca11ec4ca63235f8116ed4e5db0363a75842bd7a41b7",
|
||||
"Heltec_v2_companion_radio_ble-ota-v1.18.0.1-halo-keymind-cascade-dev-1d4016f4.memory.json": "ba9a300ac2ea16855817f3fafa2527cd4e36868b95d3cb9d6af28423e34c64eb",
|
||||
"Heltec_v2_companion_radio_ble-ota-v1.18.0.1-halo-keymind-cascade-dev-1d4016f4.bin": "09d01ea046e80d6b480e15b00c3cfeef0587a638447c6b6234a8d645c7b1dc48",
|
||||
"Heltec_v2_companion_radio_ble-ota-v1.18.0.1-halo-keymind-cascade-dev-1d4016f4-merged.bin": "4ba76ada54a961cd58bf998160349d3e3be4898d27d515a6068148410f2442ad",
|
||||
"Heltec_v2_companion_radio_ble-ota-v1.18.0.1-halo-keymind-cascade-dev-1d4016f4.capabilities.json": "7e306f4a70e02975c86d4623c84f5e80d8f6c753a4bd3b4fa0d227e37257ed2c",
|
||||
"Heltec_v2_companion_radio_ble-ota-v1.18.0.1-halo-keymind-cascade-dev-1d4016f4.meshtext-license.txt": "c37d0a453a2491514bac33ed835c1877f207390f134ae439a97b06b004e236d2"
|
||||
},
|
||||
"linked_artifacts_sha256": {
|
||||
"firmware.elf": "e211590b2bfae32fad0cf5cd5a6040a318b838ca3ff515eef58bf1187716058e",
|
||||
"partitions.bin": "1d9cca96de0fe07ad7fc0648b9878ddecd9ce565e38b589ad20fea698ed4c80c",
|
||||
"firmware.map": "f24a4f1252ea9a144bf76e4cad42964b5fda39e2155cdfcf8c7a3e099b7bfb8c"
|
||||
},
|
||||
"schema": 1,
|
||||
"scope": "Clean V2 BLE canonical build and host validation; no hardware qualification",
|
||||
"baseline": {
|
||||
"source_commit": "76437c6bf8b9e6589b150f265f41bac829e1584f",
|
||||
"source_clean": true,
|
||||
"passed": false,
|
||||
"static_dram_used": 122964,
|
||||
"static_dram_limit": 124580,
|
||||
"static_dram_free": 1616,
|
||||
"static_dram_required_reserve": 8192,
|
||||
"static_dram_short_by": 6576
|
||||
}
|
||||
}
|
||||
@@ -70,6 +70,7 @@ Completed validation reports, experiments, and test guides are collected here. O
|
||||
|
||||
## Build, storage, memory, and checklists
|
||||
|
||||
- [Heltec V2 BLE RAM reserve repair, 2026-10-22](heltec_v2_ble_memory_2026-10-22.md)
|
||||
- [ESP32 Bluetooth shutdown and radio2 CPU idle, 2026-10-21](esp32_ble_radio2_sleep_2026-10-21.md)
|
||||
- [RAK3401 all firmware CPU sleep checks, 2026-10-21](rak3401_all_roles_cpu_sleep_2026-10-21.md)
|
||||
- [Shared contact RAM savings and RAK4631 Full qualification, 2026-10-19](contact_memory_2026-10-19.md)
|
||||
|
||||
Reference in new issue
Block a user