Record updated V4 build and native console qualification
This commit is contained in:
1 parent
ebf2f0823e
commit
3a7d273d49
4 files changed
+208
-11
No files matched your search
@@ -139,8 +139,12 @@ off, and 600 seconds open with USB logging. See the [V4 native console
|
||||
qualification](../test-results/hardware_validation_heltec_v4_native_console_2026-10-06.md)
|
||||
for deadlines, host preparation and retained failed attempts. USB remained
|
||||
attached, so these checks do not measure CPU sleep or button wake. The subsequent
|
||||
V4 button-wake correction and its software validation are separate; physical
|
||||
button wake was not tested here.
|
||||
`ebf2f082` V4 button-wake profile correction passed host tests and linked-image
|
||||
checks, followed by another unchanged native GUI fresh-flash connection and
|
||||
180-second open/closed console checks with power saving on and USB logging.
|
||||
Original settings, identity and ACL response were restored. Physical button
|
||||
wake, CPU sleep and current draw were not tested here; the new source's GitHub
|
||||
unit workflow remains in progress.
|
||||
|
||||
Build qualification does not establish physical compatibility on every board.
|
||||
Hardware CDC has finite buffers, and closing a Linux TTY does not necessarily
|
||||
|
||||
@@ -98,5 +98,7 @@ deadline, and measured fresh-flash and power-saving console idle results. The
|
||||
older source and boundaries above remain historical evidence. Neither report
|
||||
qualifies every host OS, physical USB adapter, cold power cycle, ESP32 board,
|
||||
firmware profile, or radio traffic load. USB-attached console checks do not
|
||||
establish CPU sleep, measured current or button wake; the subsequent V4
|
||||
button-wake correction needs separate qualification.
|
||||
establish CPU sleep, measured current or button wake. The subsequent V4
|
||||
button-wake profile correction passed host/build validation and another native
|
||||
GUI fresh-flash plus 180-second open/closed console check, as recorded in that
|
||||
linked report; physical button wake remains untested.
|
||||
@@ -10,6 +10,11 @@ original settings and closed their streams. Final operator readback and owned
|
||||
browser/host-service cleanup also passed. Release 1.17.1.9 remains held and
|
||||
unpublished.
|
||||
|
||||
The subsequent button-profile correction at `ebf2f082` passed host/build checks
|
||||
and another native fresh-flash GUI connection with 180-second open/closed
|
||||
console intervals. That updated-source checkpoint is recorded separately below;
|
||||
it does not extend the older source's 600-second measurements to the new image.
|
||||
|
||||
These results extend the [earlier startup investigation](hardware_validation_esp32_web_console_startup_2026-10-05.md)
|
||||
to the current normal Full image and native hardware CDC. They are physical
|
||||
console stability checks, not a measurement of sleep current, radio traffic
|
||||
@@ -22,7 +27,7 @@ The requested target was `heltec_v4_repeater`, Full profile. Its resolved
|
||||
update identity. Runtime readback had to match the complete version
|
||||
`v1.17.1.9-halo-keymind-cascade-dev-c88885a3 (Build: 06-Oct-2026)`.
|
||||
The source includes the OTA upload correction in `d2983762` and WiFi ownership
|
||||
correction in `95913c53`. The GitHub unit workflow for the current source passed;
|
||||
correction in `95913c53`. The GitHub unit workflow for `c88885a3` passed;
|
||||
this does not replace the physical checks below or the final release matrix.
|
||||
|
||||
| Artifact | Bytes | SHA-256 |
|
||||
@@ -139,10 +144,9 @@ The USB cable remained attached throughout these trials. The native-host sleep
|
||||
guard keeps CPU command service available while the USB host is connected,
|
||||
including when its serial port is closed. Power saving on is therefore not
|
||||
proof of CPU light-sleep entry, measured current, or physical button wake.
|
||||
At this source, V4 lacks the momentary-button wake profile flag. The later
|
||||
profile correction is outside this image and needs separate software/build
|
||||
and console validation. No physical button access is available in this setup,
|
||||
so physical button wake remains unqualified.
|
||||
At this source, V4 lacks the momentary-button wake profile flag. Its subsequent
|
||||
software/build and console validation is recorded below. No physical button
|
||||
access is available in this setup, so physical button wake remains unqualified.
|
||||
|
||||
These checks qualify this historical `c88885a3` Full application, native Pi Chromium setup,
|
||||
protected active-slot application flash, and measured intervals. They do not
|
||||
@@ -151,3 +155,55 @@ heavy logging volume, measured power consumption, or RF traffic load. GPIO/reset
|
||||
behavior outside the unchanged stock flasher's reset sequence was not separately
|
||||
qualified. The release remains unpublished; the final same-source all-board
|
||||
build and release packaging are separate gates.
|
||||
|
||||
## Updated button-profile checkpoint: `ebf2f082`
|
||||
|
||||
Source `ebf2f0823ef8413987d31ccb2d044a2090e88469` enables the existing
|
||||
momentary-button wake flag in the shared V4 and V4-R8 profiles. Seven ESP32
|
||||
USB/sleep tests and two display-power tests passed. Configuration assertions
|
||||
cover 71 firmware profiles, excluding four deliberately standalone partition
|
||||
migrators. Six host cases execute actual board sleep/USB methods, real family
|
||||
button constructors and implementation, role polling guards, UITask button
|
||||
fragments and DisplayPowerPolicy. Three controls must fail if the profile flag,
|
||||
gesture polling guard or display wake is removed. These are synthetic GPIO/sleep
|
||||
results, not a physical button press.
|
||||
|
||||
| Updated artifact | Bytes | SHA-256 |
|
||||
| --- | ---: | --- |
|
||||
| Full application | 2,097,560 | `aebfd06f5e35ad636f52f329bd051deb9dfeb633361dc77396c0ee9d4456e7c1` |
|
||||
| Merged image | 2,163,096 | `08750bd38f9f71ea37b8739a8b3c26befa91829df6d5754ad9cffbf61a796a90` |
|
||||
| Matching ELF | - | `c2ec6d54c32c4b3cb331f9216607480e851933cf4865cc399be9409fdf587467` |
|
||||
|
||||
The normal Full target, table, two slots, capabilities and RAM gates passed,
|
||||
with the same 20,880-byte required-heap margin. Linked instructions now contain
|
||||
the GPIO0 pending-press check, active-low wake and button cleanup, plus the
|
||||
gesture polling guard, while retaining radio IRQ14 wake. The HWCDC PHY handoff
|
||||
and startup hook remain linked; no TinyUSB USBCDC class is linked. This confirms
|
||||
the profile flag reached the application rather than only its source recipe.
|
||||
|
||||
The same pinned stock native GUI/flasher and unchanged 5,000 ms deadline were
|
||||
used. Before this flash, host-only TTY preparation again changed VMIN/VTIME from
|
||||
0/0 to 1/0 with zero explicit modem-signal calls. The app-only ROM preflight
|
||||
again selected the protected active slot. Exact runtime readback was
|
||||
`v1.17.1.9-halo-keymind-cascade-dev-ebf2f082 (Build: 06-Oct-2026)`.
|
||||
|
||||
| Updated-source check | Result |
|
||||
| --- | --- |
|
||||
| First stock DOM GUI Connect after fresh flash | PASS. Plain time clock-set acknowledgement in 2,036.4 ms; full GUI bootstrap, exact version and original reference checks passed. No extra reset, replug, settle or retry. |
|
||||
| Power saving on, USB logging, console open | PASS. 180.061 seconds with zero native writes or keepalives; uptime 17 -> 198 seconds. First post-idle core reply took 39.7 ms; full DOM reconnect time acknowledgement took 45.0 ms. |
|
||||
| Power saving on, USB logging, console closed | PASS. 180.100 seconds with streams closed and zero writes; uptime 205 -> 391 seconds. First DOM reconnect time response took 26.7 ms and was the recognized clock-cannot-go-backwards rejection, not an acknowledgement. Full GUI bootstrap passed. |
|
||||
| Cleanup and operator readback | PASS. Original power saving off, USB logging, all 15 checked preferences, public identity and ACL response were restored. Streams closed; independent operator readback again matched the exact updated version and original digests at uptime 448 seconds. |
|
||||
|
||||
There were no native command errors or GUI modem-signal calls. Radio remained
|
||||
in active RX with zero physical RX errors; flags changed 0 -> 8, received
|
||||
packets stayed zero and one packet was sent. This remains a receive-silence
|
||||
watchdog warning, not a CPU crash or loaded-radio qualification. The owned
|
||||
browser and tunnel were closed, the serial port had no owner, original host
|
||||
service states were restored, and no Pi network configuration changed.
|
||||
|
||||
The compact safe audit records this as `updated_source_checkpoint`, separate
|
||||
from the older 600-second trials. The updated source qualifies these
|
||||
180-second console intervals; physical button wake, CPU sleep and current draw
|
||||
remain untested with USB attached. GitHub unit run `37426156162` for this new
|
||||
source is still in progress at this checkpoint. Release 1.17.1.9 remains held
|
||||
and unpublished.
|
||||
+137
-2
@@ -90,7 +90,7 @@
|
||||
"Failed flasher preparations remain failed and did not exercise the GUI five-second command timer.",
|
||||
"Merged artifact is audited; actual browser tests flashed only the protected active application slot.",
|
||||
"No measured sleep current, factory erase/cold-cycle, heavy logging or RF traffic-soak claim.",
|
||||
"USB-attached CPU sleep guard means no physical light-sleep/button-wake or current-draw qualification; V4 momentary-button wake profile correction needs new-source qualification.",
|
||||
"USB-attached CPU sleep guard means no physical light-sleep/button-wake or current-draw qualification; Updated profile host/build and native USB console checks are recorded separately; physical button wake remains untested.",
|
||||
"Original host service states restored; MQTT packet delivery was not measured."
|
||||
],
|
||||
"qualified_trials": [
|
||||
@@ -235,6 +235,141 @@
|
||||
"current_draw_measured": false,
|
||||
"physical_button_wake_tested": false,
|
||||
"c888_V4_momentary_button_wake_profile_flag_present": false,
|
||||
"new_button_fix_qualification": "pending"
|
||||
"new_button_fix_qualification": "Host/build and updated-source native USB console180s qualified; physical button/CPU sleep/current untested."
|
||||
},
|
||||
"updated_source_checkpoint": {
|
||||
"source_commit": "ebf2f0823ef8413987d31ccb2d044a2090e88469",
|
||||
"firmware_version": "v1.17.1.9-halo-keymind-cascade-dev-ebf2f082 (Build: 06-Oct-2026)",
|
||||
"status": "host_build_and_native_console_180s_passed_operator_restored",
|
||||
"build": {
|
||||
"target": "heltec_v4_repeater",
|
||||
"profile": "full",
|
||||
"platformio_feature_base": "heltec_v4_repeater_observer_mqtt",
|
||||
"app_sha256": "aebfd06f5e35ad636f52f329bd051deb9dfeb633361dc77396c0ee9d4456e7c1",
|
||||
"app_bytes": 2097560,
|
||||
"merged_sha256": "08750bd38f9f71ea37b8739a8b3c26befa91829df6d5754ad9cffbf61a796a90",
|
||||
"merged_bytes": 2163096,
|
||||
"elf_sha256": "c2ec6d54c32c4b3cb331f9216607480e851933cf4865cc399be9409fdf587467",
|
||||
"partition_table_4096_sha256": "9af3af2b74e944337ba85f2b0027ee80df160579a1ab746ba0f95853f618cd60",
|
||||
"slot_bytes": 6553600,
|
||||
"RAM_capability_and_file_hash_gates_passed": true,
|
||||
"heap_margin_bytes": 20880,
|
||||
"linked_HWCDC_PHY_handoff_and_startup_hook": true,
|
||||
"linked_GPIO0_active_low_button_wake_and_pending_press_cleanup": true,
|
||||
"linked_radio_IRQ14_wake_retained": true,
|
||||
"linked_role_gesture_polling_guard": true,
|
||||
"independent_build_audit_sha256": "826089a49402a4cc23f648f4d642c7547f33f05520333877373a2a134af0c2d4"
|
||||
},
|
||||
"host_validation": {
|
||||
"ESP32_USB_sleep_tests_passed": 7,
|
||||
"display_power_tests_passed": 2,
|
||||
"profile_flag_assertions": 71,
|
||||
"standalone_migrator_exclusions": 4,
|
||||
"actual_family_role_CXX_cases": 6,
|
||||
"required_failure_controls": 3,
|
||||
"scope": "Real Board.sleep/USB methods, MomentaryButton, role polling and UITask button fragments with DisplayPowerPolicy; simulated GPIO/sleep."
|
||||
},
|
||||
"native_browser": {
|
||||
"version": "154.0.8037.92",
|
||||
"same_pinned_stock_GUI_and_flasher": true,
|
||||
"native_command_deadline_ms": 5000,
|
||||
"extra_post_flash_reset_replug_settle_retry": false,
|
||||
"report_sha256": "ba7d9f415a1cd27fd5fe4070d47306f2cd67e4ce08baee684f07c83eb364cef3",
|
||||
"independent_report_review_sha256": "be8eed53f8ec012f4c217c52e55fbdab3b29aad972fda933c4fb18fbe75c5f43",
|
||||
"first_plain_time_ms": 2036.3999999985099,
|
||||
"first_plain_time_clock_set_acknowledged": true,
|
||||
"power_saving": "on",
|
||||
"logging_output": "usb",
|
||||
"quiet_intervals": [
|
||||
{
|
||||
"kind": "open",
|
||||
"requested_seconds": 180,
|
||||
"actual_seconds": 180.0605071799946,
|
||||
"native_writes_during_idle": 0,
|
||||
"uptime_before": 17,
|
||||
"serial_open": true,
|
||||
"uptime_after": 198,
|
||||
"uptime_delta": 181,
|
||||
"uptime_continuity_verified": true,
|
||||
"ok": true
|
||||
},
|
||||
{
|
||||
"kind": "closed",
|
||||
"requested_seconds": 180,
|
||||
"actual_seconds": 180.10022866498912,
|
||||
"native_writes_during_idle": 0,
|
||||
"uptime_before": 205,
|
||||
"serial_open": false,
|
||||
"uptime_after": 391,
|
||||
"uptime_delta": 186,
|
||||
"uptime_continuity_verified": true,
|
||||
"ok": true
|
||||
}
|
||||
],
|
||||
"first_post_open_idle_core_ms": 39.70000000111759,
|
||||
"post_open_idle_DOM_clock_reply_ms": 45,
|
||||
"post_open_idle_DOM_clock_set_acknowledged": true,
|
||||
"post_closed_idle_DOM_clock_reply_ms": 26.700000001117587,
|
||||
"post_closed_idle_DOM_clock_set_acknowledged": false,
|
||||
"post_closed_idle_response": "recognized framed clock-cannot-go-backwards rejection",
|
||||
"full_GUI_rereads_passed": true,
|
||||
"native_command_errors": 0,
|
||||
"GUI_modem_signal_calls": 0,
|
||||
"original_reference_and_final_restoration_verified": true,
|
||||
"checked_preferences_count": 15,
|
||||
"original_power_saving": "off",
|
||||
"original_logging_output": "usb",
|
||||
"streams_closed": true
|
||||
},
|
||||
"host_preparation": {
|
||||
"tty_before": {
|
||||
"VMIN": 0,
|
||||
"VTIME": 0
|
||||
},
|
||||
"tty_after": {
|
||||
"VMIN": 1,
|
||||
"VTIME": 0
|
||||
},
|
||||
"explicit_modem_signal_calls": 0,
|
||||
"safe_start_report_sha256": "7129af121900b598d02ec3e33702bb87dec988ae3a8d3f2eaf9550cb73ddd3d3"
|
||||
},
|
||||
"radio": {
|
||||
"initial_core_error_flags": 0,
|
||||
"final_core_error_flags": 8,
|
||||
"all_observations_active_RX": true,
|
||||
"physical_rx_errors_max": 0,
|
||||
"final_recv": 0,
|
||||
"final_sent": 1,
|
||||
"scope": "Known CAD/receive-silence flags are warnings; no zero-error RF or traffic-soak claim."
|
||||
},
|
||||
"operator_cleanup": {
|
||||
"ok": true,
|
||||
"exact_runtime_version_and_reference_digests_verified": true,
|
||||
"uptime_seconds": 448,
|
||||
"core_error_flags": 8,
|
||||
"serial_closed_and_no_owner": true,
|
||||
"owned_browser_profile_closed": true,
|
||||
"owned_tunnel_closed": "parent independently verified",
|
||||
"original_services_restored": {
|
||||
"ModemManager": "active",
|
||||
"mctomqtt": "active",
|
||||
"mesh-logger": "inactive"
|
||||
},
|
||||
"network_configuration_changed": false,
|
||||
"operator_report_sha256": "c79f570fa7d5b4599d4538527aa9edefeb8d5173a47dc5689c44cfdb632d33fd",
|
||||
"services_report_sha256": "bc98de9e3753d736de35a45d4cfda1c7380a7c2eff66891c3a3f4444e1d74425",
|
||||
"browser_cleanup_report_sha256": "c848c50e4ae1ab73fee92f5381dc60e0b9cd23b04a672ad9a5df60dd0fb3b3dc",
|
||||
"independent_cleanup_audit_sha256": "f96f14695beafba898cb2361b41540614026bda3316764a0421a93158de3ce38"
|
||||
},
|
||||
"CI": {
|
||||
"run_id": 37426156162,
|
||||
"status": "in_progress_at_checkpoint"
|
||||
},
|
||||
"limitations": [
|
||||
"Updated-source180s intervals are separate from historical c888600s trials.",
|
||||
"USB cable remained attached; no physical button wake, measured CPU sleep or current draw.",
|
||||
"Host services restored; no MQTT delivery or loaded-RF qualification.",
|
||||
"Release held and unpublished."
|
||||
]
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user