Skip to content

fix(anchor): the chip-id halt names its cause and repeats it - #1043

Merged
cryptskii merged 2 commits into
mainfrom
fix/anchor-halt-names-its-cause
Sep 27, 2026
Merged

cryptskii merged 2 commits into
mainfrom
fix/anchor-halt-names-its-cause

Conversation

@cryptskii

Copy link
Copy Markdown
Collaborator

What

The anchor firmware halted at boot with [T1] chip id: FAIL (no real identity; halting) and nothing else: the libtropic error was discarded and the raw link probe's MISO bytes were thrown away. It printed once, before any host attached, so a phone saw only a board that accepted its USB connection and never answered (USB write short (-1/6)). Both rig anchors were in that state after the phones were swapped.

The halt now prints the library's error and the probe's MISO bytes, and repeats them every two seconds so a late host reads them. The halt itself is unchanged.

Verification

  • cargo build --release --bin dsm-anchor-pico --features bench-adopt-existing-chip (the profile the board ran; the board's previous 4 MiB flash was saved first).
  • Flashed with picotool load -x and read on a Mac, every two seconds: [T1] chip id: FAIL (no real identity; halting): ChipBusy; raw probe MISO [0, 0, 0, 0]. ChipBusy is libtropic's l1_read giving up with the status byte never READY and never ALARM; MISO all zero means the chip never drove the line. A powered, connected TROPIC01 answers its status byte in every mode, so this is power, seating or the MISO/CS wiring, not the chip's counter or slot state.

The firmware halted at boot with "[T1] chip id: FAIL" and nothing else: the
libtropic error was discarded and the raw link probe's MISO bytes were thrown
away. It printed once, before any host attached, so a phone saw only a board
that took its USB connection and never answered. Both rig anchors were in this
state after the phones were swapped, and nothing on the phone could say why.

The halt now prints the library's error and the probe's MISO bytes, and
repeats them every two seconds so a late host reads them. On the rig it read
`ChipBusy; raw probe MISO [0, 0, 0, 0]`: the chip never drove MISO, which a
powered, connected TROPIC01 does in every mode (a chip in alarm answers
AlarmMode). The halt itself is unchanged.

Built --release with bench-adopt-existing-chip (the profile the board ran),
flashed with picotool, and read on a Mac: the line above, every two seconds.
The previous commit ran rustfmt over the whole file, which reflowed three lines
the change does not touch. They go back as they were, so the change is only the
halt's diagnostic.
@cryptskii
cryptskii merged commit 7d692d3 into main Sep 27, 2026
24 checks passed
@cryptskii
cryptskii deleted the fix/anchor-halt-names-its-cause branch September 27, 2026 19:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant