Harden USB logging and persist watchdog events in management reports
This commit is contained in:
1 parent
bd55369aa9
commit
3add4695cc
98 files changed
+7207
-372
No files matched your search
@@ -1,6 +1,6 @@
|
||||
# Management report decoder
|
||||
|
||||
Paste MGR1 management-report payloads or complete GroupData packets from a
|
||||
Paste MGR1, MGR2, or MGR3 management-report payloads or complete GroupData packets from a
|
||||
packet analyzer to read a radio's public management information. Everything,
|
||||
including password authentication and ACL decryption, happens locally in this
|
||||
browser. The report, password, and candidate public key are never uploaded.
|
||||
@@ -13,13 +13,13 @@ by someone who does not know that password.
|
||||
## Decode a management report
|
||||
|
||||
<div class="management-tool" data-management-decoder>
|
||||
<label for="management-packet-input">MGR1 payload or complete GroupData packet hex</label>
|
||||
<label for="management-packet-input">MGR1/MGR2/MGR3 payload or complete GroupData packet hex</label>
|
||||
<textarea
|
||||
id="management-packet-input"
|
||||
data-role="input"
|
||||
spellcheck="false"
|
||||
autocomplete="off"
|
||||
placeholder="Paste analyzer Raw Data, canonical MGR1 payload hex, or one MQTT raw value per line"
|
||||
placeholder="Paste analyzer Raw Data, canonical MGR1/MGR2/MGR3 payload hex, or one MQTT raw value per line"
|
||||
aria-describedby="management-packet-help"
|
||||
></textarea>
|
||||
<p class="management-help" id="management-packet-help">
|
||||
@@ -31,7 +31,7 @@ by someone who does not know that password.
|
||||
<label for="management-password-input">Management password <span>(optional for public fields; required for ACLs)</span></label>
|
||||
<input id="management-password-input" data-role="password" type="password" autocomplete="new-password">
|
||||
<p class="management-help">
|
||||
The password remains in this page only. The decoder derives the MGR1 AES-SIV key in
|
||||
The password remains in this page only. The decoder derives the management AES-SIV key in
|
||||
your browser and does not send it anywhere.
|
||||
</p>
|
||||
|
||||
@@ -67,9 +67,10 @@ by someone who does not know that password.
|
||||
## What the decoder accepts
|
||||
|
||||
- Complete `PAYLOAD_TYPE_GRP_DATA` (`0x06`) analyzer/MQTT packet hex. It checks
|
||||
the MeshCore route header, encoded path length, MGR1 page bounds, and required
|
||||
the MeshCore route header, encoded path length, version-specific page bounds, and required
|
||||
zero padding.
|
||||
- A canonical MGR1 payload beginning with `4D475231` (`MGR1`).
|
||||
- A canonical payload beginning with `4D475231` (`MGR1`), `4D475232` (`MGR2`),
|
||||
or `4D475233` (`MGR3`).
|
||||
- One raw packet or canonical payload per line; duplicate observations of an
|
||||
identical page are deduplicated.
|
||||
|
||||
@@ -78,5 +79,32 @@ the report-specific fingerprints and the administrator and/or OTA-signer flags.
|
||||
It cannot turn a fingerprint back into a full key. Use the optional candidate
|
||||
field to test a specific full public key.
|
||||
|
||||
MGR2 and MGR3 also show USB logging, host/reader connection, logger-client activity, stalled/recovering/deferred
|
||||
state, recovery stage, saved backoff, retry interval/inactive seconds, Auto qualification
|
||||
seconds, and persistence
|
||||
readiness. Unsupported observation is shown explicitly; legacy MGR1 has no
|
||||
USB block and shows it as unavailable. These values are the report-start
|
||||
snapshot, not proof that a Pi or host application is healthy. Older decoder
|
||||
copies require an update for MGR3.
|
||||
|
||||
MGR3 additionally shows the latest USB watchdog action, reason mask and names,
|
||||
advisory node-clock timestamp, recorded-boot uptime seconds, event sequence,
|
||||
and whether the record was durably saved. Software recovery and re-enumeration
|
||||
mean attempted actions, not successful repairs. A reboot request is not proof
|
||||
that a reboot completed; a later cancellation can replace it. The node clock
|
||||
can be wrong, even when it resembles a valid date. Event uptime and sequence
|
||||
remain useful for ordering. MGR1/MGR2 do not carry this event field and show it
|
||||
as unavailable. All 36 ACL entries still fit, using up to nine MGR3 pages.
|
||||
|
||||
Reports contain a frozen latest-event snapshot, not immediate watchdog alerts
|
||||
or a complete event history. See [USB logging watchdog](usb_logging_watchdog.md)
|
||||
for local review and persistence limitations.
|
||||
|
||||
Host/reader connection only describes the USB link or open reader. Logger-client
|
||||
activity means recent USB stats polling within a 15-minute lease, renewed by
|
||||
the existing five-minute polls without a new registration or heartbeat command.
|
||||
The flag also requires logging enabled and a connected, unstalled USB link.
|
||||
It does not identify the client or prove MQTT delivery, disk writes, or Pi health.
|
||||
|
||||
For the report schedule, public-field layout, cryptographic design, and the
|
||||
offline Python capture tool, see [Management reports](management_reports.md).
|
||||
Reference in new issue
Block a user