Safe testing

Capture, verify, restore

Test one reversible setting at a time. Save the old value, check the result, then restore it.

Before any write

Protect the hardware

Use the typed developer CLI only with known setters. Make one reversible change at a time.

Stop immediately Stop if the device, power state, response, readback, or saved value becomes unclear.

For the five upstream-derived profiles, start with the experimental testing and diagnostics guide. Their typed controls are available, but the capture and physical-validation evidence below is still needed before calling them validated. Never run USBPcap and OpenBlade control against the same interface together. Sleep/resume testing requires a present user who can resume the laptop.

Collect evidence with Synapse Observer

Synapse Observer is the public collector for new model evidence. It collects device information and guides one deliberate setting change and exact restoration without a terminal or repository checkout.

Download Synapse ObserverOpen a device support request

Review the evidence ZIP before attaching it to a public device-support issue. Report problems with the collector itself in the Synapse Observer issue tracker.

Manual protocol review

The steps below are for maintainers who need a manual capture after reviewing a Synapse Observer report.

  1. Record the current value, target value, expected result, and restore value. Make a separate capture for each setting or power state.
  2. Confirm the model, VID/PID, BIOS, EC, MCU, HID usage, and feature-report length. Mark any version that cannot be read safely as unavailable. Do not rely on the display name alone.
  3. Close unrelated activity and set the required AC, battery, USB-C, HDR, or display state.
  4. Run USBPcapCMD in its own console process group. Stop it with a targeted CTRL_BREAK_EVENT. Never send a console control event to process-group ID 0.
  5. Change one setting and mark the action in the capture. Do not open other pages in the vendor app while recording.
  6. Confirm the new state, restore the saved value, and confirm it again before ending the session.
  7. Compare the smallest useful packet window. Keep the model, action, bounded payload, response shape, and evidence checks. Remove serials, paths, session data, and unrelated packets.
  8. Use a typed command that names the action, saves the old value, asks for confirmation, applies and checks one value, then restores it.
  9. Mark support validated only after decoder tests, negative tests, application, confirmation, and restoration pass. Keep raw class, ID, and payload inputs out of the interface.

Capture matrix

EvidenceRequired questionPass condition
Setter deltaWhich request changed when one UI value changed?The change repeats in another capture and is absent from a no-op window.
ResponseDid firmware acknowledge the same transaction and payload contract?The envelope, status, checksum, class, ID, length, and payload all pass validation.
GetterCan firmware independently report the effect?Known states decode to different values. Otherwise, document setter-only or generic readback.
ApplicationDid the physical behavior change as intended?What happened on the laptop matches the typed target.
RestorationCan the exact prior state be recovered?The restore command succeeds, and readback or observation matches the saved state.
Negative casesWhat must be rejected?A wrong PID, model, or interface fails closed. So do malformed responses, invalid values, unsupported combinations, and cancellation.

Decoding rules

From capture to production

Complete each stage before moving to the next.

  1. Decode a private capture from a sanitized byte window while no device handle is open.
  2. Add a typed read-only query with an exact response contract. Reject unknown statuses, lengths, selectors, reserved bytes, and values.
  3. Repeat the same vendor UI state and prove the candidate setter is absent or stable when nothing changes.
  4. Save the prior state, require confirmation for the exact target, apply one admitted value, read or observe it, then restore it.
  5. Before production use, link the sanitized fixture and validation result to reviewed source. Expose only the named capability.

Response evidence record

Add this record to the core change. Keep raw captures and local logs private.

Model / VID:PID:
BIOS / EC / MCU:
HID usage page / usage / feature-report length:
Question and single UI action:
Power source and required preconditions:
Request class/ID and sanitized payload shape:
Expected status, class/ID, payload length and response shape:
Unknown or malformed values rejected:
Independent getter, generic readback, or one-shot-only:
Saved prior state and restoration result:
Negative controls and repeat count:
Core tests and sanitized fixture paths:
Remaining inference or unsupported variants:

Private evidence handling

The legacy captures repository is private and retired. Immutable sanitized fixtures needed by core now live with the source in the evidence directory, with original paths and SHA-256 values in its provenance index. The legacy repository is not an intake or support channel. Submit new reviewed Synapse Observer evidence through a core device-support issue.

Keep private

PCAP files, HID paths, serials, transaction streams, user or machine names, local paths, diagnostic exports, screenshots with account data, and unreviewed payload collections.

Publish after review

Model and observed BIOS, EC, and MCU versions, usage and report length, action name, class/ID, bounded payload shape, accepted response, readback limits, tests, and restoration result.

Stop conditions

Review checklist

[ ] Exact model, VID/PID, BIOS, EC, MCU and HID interface documented
[ ] One action per capture and a no-op comparison available
[ ] Prior state saved and restoration verified
[ ] Request and response envelope validation implemented
[ ] Payload bounds and enum/value validation implemented
[ ] Timeout, cancellation and malformed-response tests included
[ ] Fixture contains no serial, HID path, user path or raw PCAP
[ ] Capability remains hidden when evidence is absent
[ ] No raw-command IPC or production CLI option introduced