# Troubleshooting: errors and symptoms


**Draft, not yet verified on hardware.**

What each message and fault on the SeedHammer II means on stock firmware v1.4.3, and how to clear it.

<p class="alert alert-warning">Seed words are typed on the machine only. Seed words and codex32 shares never pass through a phone, a computer or a chat assistant, and that includes asking for help. A descriptor is not a secret, but it reveals every address of the wallet.</p>

## First checks {#first-checks}

- Read the firmware line at the bottom right of the start screen, "Backup Wallet". The fixes below apply to "Firmware: v1.4.3".
- A v2.x beta is older than v1.4.3: upgrade first, see [Firmware upgrade](/doc/manual/firmware-upgrade#version).
- Note the exact text on the screen before you tap anything. NFC status messages show for about one second.

![Start screen with the firmware line at the bottom right](/static/img/troubleshooting-01.webp)
<!-- capture: II screen, "Backup Wallet", version text "Firmware: v1.4.3\nHardware: v1.5", no NFC status (screen-map 4.2 row 1) -->

## Power and start-up {#power}

The machine starts only on a USB PD offer of 20 V to 28 V at 3 A or more; buy a supply that offers 20 V or 28 V at
5 A, see [Choose the power supply](/doc/manual/power-and-first-start#power).

| What you see | Cause | What to do |
| --- | --- | --- |
| Black screen, or only the backlight | No PD offer of 20 V to 28 V at 3 A or more, so the machine is in upgrade mode (a computer sees a USB drive) | Connect a supply that offers 20 V or 28 V at 5 A, with the cable from the box |
| Dark screen right after a firmware upgrade | Normal on a computer port without 20 V PD | Connect the power supply |
| Restarts over and over at power-up | The charger's protection trips (Apple 140 W, unverified) | Try another charger |
| Stops mid-job and the start screen returns | The charger reset itself and the machine restarted | Restart the job, see [Retry and restart](#retry) |
| "Engraving failed." with "Error: engraver: not enough power available" (as the job switches the head on) or "Error: stepper: power loss or short circuit" (during the job) | The fault signal of the engraving head's driver: the supply, or a short circuit, for example in the head's wiring | Follow the steps below |

For either power error:

- Hold the hammer button to retry once.
- If it fails again, unplug the power.
- Push the engraving head cable and the 2-wire cable firmly into their plugs.
- Connect a supply that offers 20 V or 28 V at 5 A.
- Power up and start the job again. A seed has to be typed again.

Full detail per row: [Power supply and first start](/doc/manual/power-and-first-start#troubleshooting).

## Sending a descriptor over NFC {#nfc}

| What you see | Cause | What to do |
| --- | --- | --- |
| Nothing happens on the machine | NFC is on only while the start screen, "Backup Wallet", is shown | Go back to it, lay the phone's antenna area flat over the panel right of the display, remove a thick case, and on Android switch NFC on. See [Send a descriptor with NFC Tools](/doc/manual/nfc-tools-transfer) |
| The phone says the write worked, the machine shows nothing | The machine reads Text and URI records only; a Data, MIME or Smart Poster record, or UTF-16 text, is skipped while the phone reports success | Use one **Text** record |
| NFC Tools reports an error at the end of the write | Harmless when the machine shows "Engrave Descriptor" | See [NFC Tools reports an error](/doc/manual/nfc-tools-transfer#troubleshooting) |
| The machine shows a different wallet from the one you sent | An older record still in the NFC Tools list (unverified) | Keep exactly one Text record |
| A Coldcard gives "Scan error", "Unknown format" or nothing | The Mk4 antenna is weak | Remove the sleeve and hold the Coldcard to the right of the display. Which export to send: [Coldcard](/doc/manual/descriptor-coldcard) |
| A tag, a card or a desktop NFC writer does not work | The machine reads only some tag types; desktop writers unverified | See [NFC tags, cards and desktop writers](/doc/manual/capability-sheet#tags) |

"Unknown format" flashes on the start screen when the text matches none of the formats the machine reads.

| Cause | Fix |
| --- | --- |
| A line break or space before or after a one-line descriptor or key | Delete it in NFC Tools. Do not retype any characters |
| A **URL / URI** record: it arrives with `https://` in front | Use a **Text** record |
| `?bh=` or `?gl=` near the end (Sparrow 2.5 and later, after a confirmed payment or a gap-limit change) | Delete everything from `?` to the end, see [Prepare the text](/doc/manual/nfc-tools-transfer#prepare) |
| Coldcard-format text without a `Name:` line, with Windows line ends (CRLF), with indented lines, or with two different `Derivation:` lines | Keep the `Name:` line and plain line ends; for mixed paths send a plain descriptor, where each key carries its own path |
| Coldcard-format text with `Format: P2SH-P2WSH` (a wrapped BlueWallet vault, a P2SH-P2WSH Coldcard export) | Send a plain descriptor string |
| Receive and change descriptors on two lines | Send one line: the multipath `/<0;1>/*` descriptor, or the first line alone |
| A BSMS record (first line `BSMS 1.0`) | If its second line is a full descriptor, send only that line. A second line ending in `/**` is a template the machine cannot read: export a plain descriptor |
| A script the machine does not engrave: unsorted `multi`, miniscript (Liana wallets, for example), taproot multisig, taproot script paths | None on v1.4.3, see [Scripts](/doc/manual/capability-sheet#scripts) |
| A bare key with a `ypub`, `Ypub`, `Zpub`, `upub` or `vpub` prefix | Send a descriptor with key origin |
| Seed words with a failed BIP39 checksum, which includes most Electrum seeds | Type seed words on the machine, see [Entering a seed](#seed) |

![Unknown format status line on the start screen](/static/img/troubleshooting-02.webp)
<!-- capture: II screen, "Backup Wallet", NFC payload lab/fixtures/2of3-multipath.txt with one "\n" appended (the file itself has no trailing newline and parses), frame with status "Unknown format" (screen-map 4.2 row 25 pulls the same frame with payload "hello world") -->

| What you see | Cause | What to do |
| --- | --- | --- |
| "Scan error" flashes on the start screen | The transfer broke off, or the text was 8192 bytes or longer, which only unusual sources send (a phone cannot send that much) | Write again. After one oversized payload every later scan fails until you leave the start screen (unverified): tap the checkmark (bottom right), tap the back arrow (top right) on "Input Seed", and write again |
| "Content too large" | Never shown on v1.4.3: the text exists in the firmware, but nothing triggers it | Note the firmware line and report it |
| "Too Large" with "The descriptor cannot fit any plate size." | None of the three layouts fits the 85 x 85 mm plate; removing spaces, the checksum or JSON keys changes nothing | Tap the checkmark to return to "Engrave Descriptor", then see [What fits on a plate](/doc/manual/multisig-and-fit#fit) |
| "TEXT + QR" is not offered | The "Engrave" screen lists only the layouts that fit; a multisig with key origins gets "TEXT ONLY" and "QR ONLY" | See [What fits on a plate](/doc/manual/multisig-and-fit#fit) |
| The machine freezes after the checkmark on a descriptor | An out-of-memory fault on v2.0.4-beta, fixed in the release of 2026-01-31 | Upgrade a v2.x beta |
| "Engrave Descriptor" shows "Legacy (P2PKH)" for a segwit wallet | A bare `xpub` | Send a full descriptor with key origin, see [Bare keys](/doc/manual/capability-sheet#formats) |
| No "Title" line, or the title is not on the plate | A title comes only from a JSON `label` or a Coldcard-format `Name:` line, and it is shown, not engraved | See [Titles](/doc/manual/titles-and-plate-layout#titles) |

![Scan error status line on the start screen](/static/img/troubleshooting-03.webp)
<!-- capture: II screen, "Backup Wallet", NFC reader returning a non-EOF error, frame with status "Scan error" (screen-map 4.2 row 26) -->

![Too Large error screen](/static/img/troubleshooting-04.webp)
<!-- capture: II screen, "Too Large" / "The descriptor cannot fit any plate size.", after the checkmark on "Engrave Descriptor" with a descriptor that fails all three layouts (screen-map 4.2 row 30) -->

## Entering a seed {#seed}

| What you see | Cause | What to do |
| --- | --- | --- |
| "Invalid Seed": "The seed phrase is invalid. Check the words and try again." | At least one word is wrong or out of order: the phrase fails the BIP39 checksum | Tap the checkmark (bottom right) to return to "Engrave Seed", tap the word, tap the pencil (middle right) and type it again; see [Check the words](/doc/manual/seed-entry#check) |
| "Invalid Seed" after the last word of an LND aezeed phrase (message unverified) | aezeed is a different scheme; its 24 words come from the BIP39 word list, so every word can be typed | None: the machine engraves BIP39 seeds only |
| "Invalid Seed": "Electrum seeds are not supported." | An Electrum seed, a different format from BIP39 | None: the machine engraves BIP39 seeds only |
| Letters go dim and a word cannot be typed | After each key the keyboard dims every letter that cannot continue a BIP39 word | Check the word: only BIP39 words can be entered |
| The machine freezes after the first key on "Input Words", or after the first key after the pencil | X as the first letter of a word stops the v1.4.3 firmware (freeze or restart unverified); no BIP39 word starts with X | Unplug the power and start again. The words are gone: the firmware keeps nothing after power-off |
| The fingerprint on the seed plate does not match your wallet | The machine engraves the fingerprint for an empty passphrase; v1.4.3 has no passphrase screen | None: a wallet with a passphrase shows a different fingerprint |
| The back arrow on "Engrave Seed" opens "DISCARD SEED?" | Going back discards the words typed so far | Tap the back arrow to cancel, or hold the trash button for one second to discard |

About 1 in 16 12-word Electrum seeds also pass the BIP39 checksum; the machine takes such a seed as BIP39 and engraves
it without any message.

![Invalid Seed screen for a failed checksum](/static/img/troubleshooting-05.webp)
<!-- capture: II screen, "Invalid Seed" / "The seed phrase is invalid.\n\nCheck the words and try again.", 12 words "abandon" x 11 then "zoo", after the checkmark on "Engrave Seed" (screen-map 4.2 row 10) -->

![Invalid Seed screen for an Electrum seed](/static/img/troubleshooting-06.webp)
<!-- capture: II screen, "Invalid Seed" / "Electrum seeds are not supported.", 12 words from lab/check/testdata/electrum-seed.txt typed on "Input Words", after the checkmark on "Engrave Seed" (screen-map 4.2 row 11) -->

## Engraving {#engraving}

| Error text after "Error: " | Cause | What to do |
| --- | --- | --- |
| "stepper: homing timed out" | An axis did not reach its stop when the job started, for example because of a loose pulley: the motor turns, the axis does not | Retry once, then tighten the [pulleys](/doc/manual/engraving-quality#pulleys) |
| "stepper: x-axis blocked" or "stepper: y-axis blocked" | The motor driver on that axis reported a stall (trigger unverified) | Remove anything in the head's path and retry. If it fails again, unplug the power and move the head by hand along both axes |
| "mjolnir2: buffer underrun", or "buffer overrun" (unverified) | Harmless (unverified) | Retry, see [Retry and restart](#retry) |
| "engraver: not enough power available" or "stepper: power loss or short circuit" | The fault signal of the engraving head's driver, see [Power](#power) | Retry, then reseat the cables and change the supply |
| "engraver unavailable" | No engraver was set up at power-up (hardware cause unverified) | Start with the [power supply](/doc/manual/power-and-first-start#troubleshooting) |

![Engraving failed with a homing error](/static/img/troubleshooting-07.webp)
<!-- capture: II screen, "Engrave Plate" failed state, body "Engraving failed.\nHold button to retry.\n\nError: stepper: homing timed out", test engraver returning that error after the hold (screen-map 4.2 row 22) -->

Homing also runs at power-up; a failure there shows no message, and the error appears when a job starts (unverified).

| What you see | Cause | What to do |
| --- | --- | --- |
| The hammer button does nothing | It needs a one-second hold; releasing early cancels | Hold it until the ring fills |
| The head moves but stops striking part way, often on the right side or in the QR | A loose head cable, a sticking needle or a weak supply | See [Needle and cables](/doc/manual/engraving-quality#needle) |
| Wobbly or wavy text | A loose set screw on the Y-axis holder, or a slack belt | See [Belts and Y-axis holder](/doc/manual/engraving-quality#belts) |
| The last words on the plate fade | Play in the X axis, a loose set screw in the brass nut, or a loose plate clamp | See [Brass nuts](/doc/manual/engraving-quality#brass-nut) |
| The head passes over the orange frame at power-up | It drives to its homing corner, then to the plate origin; passing over the frame on the way is normal (unverified) | None |
| The head scrapes the orange frame | A loose pulley | See [Pulleys](/doc/manual/engraving-quality#pulleys) |
| Progress stays at 0% and nothing moves | An out-of-memory fault in early beta firmware with 24-word seeds, fixed in the release of 2026-01-31; v1.4.3 shows progress as a countdown ("M:SS") | Upgrade a v2.x beta |
| The back arrow does nothing on "Engrave Plate" after a codex32 share | A share sent over NFC goes straight to "Engrave Plate", with no way back (unverified) | Finish the engraving or unplug the machine. See [Shares](/doc/manual/capability-sheet#shares) |
| You want to test a job without engraving a plate | v1.4.3 has no dry-run mode | See [Test a job without engraving a plate](/doc/manual/engraving-quality#dry-run) |

### Retry, resume and restart {#retry}

| Situation | What to do | Result |
| --- | --- | --- |
| "Engraving paused." with "Hold button to resume.", after a tap on the left arrow | Hold the hammer button | The job continues where it stopped |
| Leaving a paused job | Tap the back arrow | The stop point is dropped; the next start engraves the whole plate from the beginning |
| "Engraving failed." with "Hold button to retry." | Hold the hammer button | The head homes and the job continues from the stop point (unverified) |
| A restart after a power loss or after leaving a paused job, with a partly engraved plate | Start the job again; after a power loss a seed has to be typed again. The same plate or a blank plate (unverified) | Whether the restarted job lands on the first strikes (unverified) |

## Screen and touch {#screen}

| What you see | Cause | What to do |
| --- | --- | --- |
| The screen is garbled or looks like a screen saver, for example after a firmware upgrade | The flat cable between the board and the display is loose | Reseat it, steps below |
| An animation covers the screen and the first touch does nothing | The screen saver starts after three minutes without input; the first touch only wakes the screen | Touch again to act |

To reseat the display cable:

- Unplug the power.
- Open the two black locks of the display connector.
- Push the cable fully in.
- Press the locks closed.

![Display connector with its two black locks open](/static/img/troubleshooting-08.webp)
<!-- capture: photo, SH II controller board, display flat-cable connector with both black locks open and the cable half out -->

## If it does not work {#troubleshooting}

When you ask for help, give these details:

- The firmware and hardware lines from the start screen.
- The exact text on the machine.
- The power supply, with its voltage and port.
- For NFC: the phone, the app and its version.
- In place of the descriptor, the "Type" and "Script" lines from "Engrave Descriptor".

<!--
bench-checks:
  - [ ] Exact on-screen strings on v1.4.3, photographed: "Unknown format", "Scan error", "Too Large" / "The descriptor cannot fit any plate size.", "Invalid Seed" with "Electrum seeds are not supported.", "Engraving failed." with "Error: stepper: homing timed out"
  - [ ] "Content too large": confirm it never appears (send an 8 KB+ payload from a tag or test rig, expect "Scan error")
  - [ ] Buffer error: firmware source has "mjolnir2: buffer underrun"; confirm the text owners report as "buffer overrun" and that a retry continues the job; the maker calls it harmless and has not reproduced it (harvest), body now lists "buffer overrun" and "Harmless" as unverified
  - [ ] Which section D symptoms still occur on v1.4.3 (0% stall, descriptor freeze, head stops striking, homing timeout, wobbly text, fading words)
  - [ ] Oversized payload, then a valid descriptor on the same start screen: stays on "Scan error" until "Input Seed" and back
  - [ ] Firmware upgrade from a computer port: screen dark or backlight only; does the USB drive disappear or come back
  - [ ] 20 V / 3 A (60 W) supply: does the unit boot; does a job fail with "engraver: not enough power available"; what triggers "stepper: power loss or short circuit" (supply, or a short in the head wiring)
  - [ ] Chargers (SYNTHESIS G bench check 2, F row 10): Apple 140 W, the 140 W 28 V port of a non-Apple GaN charger, a 100 W 20 V supply and a 65 W charger, each with the included cable and a non-EPR cable: boots, loops at start-up, completes a job; record the voltage each one negotiates
  - [ ] Mid-job reset: does the charger reset during a long job; single-port versus multi-port charger
  - [ ] Engraving head cable or 2-wire cable loose: which error, if any; does the retry, cable reseat and supply change sequence clear "stepper: power loss or short circuit"
  - [ ] Power-up homing failure (pulley loosened on a test unit): no message at power-up, "stepper: homing timed out" at job start
  - [ ] "stepper: homing timed out" went away after a change of supply in one owner report (removed from the body): does a weak supply cause it
  - [ ] "engraver unavailable": which hardware fault leaves no engraver set up at power-up
  - [ ] Head passes over the orange frame on its way from the homing corner to the plate origin at power-up (owner report, body marks "normal" unverified)
  - [ ] Garbled screen after a firmware upgrade cleared by reseating the display flat cable (owner report)
  - [ ] Charger loop at power-up with the Apple 140 W (owner report, body marks it unverified; covered by the chargers row above)
  - [ ] #retry, owner of the retry and re-run statements (harmonized 2026-10-10; pages power, seed-entry, plates, engraving-quality link here): "Engraving failed." then hold to retry: does it re-home and continue from the stop point, or start the plate again (source reading gui/engraver.go runEngraving: continues); stop, pause, resume; Back from paused then start: whole plate from the beginning
  - [ ] #retry re-run (REVIEW section 5 item 8): pull the power mid-job, then start the same job on the same plate; also after Back from a paused job: do the strikes land on the first pass, deeper and wider, or offset? Decides "same plate" versus "blank plate" on five pages
  - [ ] "stepper: x-axis blocked" / "y-axis blocked": what triggers it on hardware (obstruction in the head's path, an open plate lock)
  - [ ] Type X as the first letter on "Input Words" (once, off camera): freeze or restart
  - [ ] LND aezeed phrase typed in: every word can be typed; which "Invalid Seed" body after the last word
  - [ ] 12-word Electrum seed that passes the BIP39 checksum: engraved as BIP39 with no message
  - [ ] Electrum seed over NFC: "Unknown format"; BIP39 phrase with a bad checksum over NFC: "Unknown format"
  - [ ] Sparrow 2.5 descriptor with `?bh=`: "Unknown format"; same with everything from `?` deleted: parses (the page no longer offers a Coldcard-format export as the multisig workaround: it engraves no child path, see multisig-and-fit#differences)
  - [ ] lab/fixtures/2of3-multipath.txt verbatim: "Engrave Descriptor"; with one "\n" appended: "Unknown format" (capture 02)
  - [ ] BSMS record: line 2 alone when it is a full descriptor parses; the `/**` template form (lab/check/testdata/bsms.txt) gives "Unknown format"
  - [ ] Coldcard-format text with `Format: P2SH-P2WSH` (BlueWallet wrapped vault): "Unknown format"; receive and change descriptors on two lines: "Unknown format", first line alone parses
  - [ ] Phone error at the end of a write while the machine opens "Engrave Descriptor": frequency per phone, 20 writes of the demo 2-of-3
  - [ ] Two Text records in NFC Tools: which one the machine takes
  - [ ] Title from Specter JSON and Coldcard `Name:`: shown on "Engrave Descriptor", absent from the plate
  - [ ] Demo 2-of-3 (lab/fixtures/2of3-specter.json): "Engrave" offers "TEXT ONLY" and "QR ONLY" only
  - [ ] Bare `xpub` shows "Legacy (P2PKH)", bare `zpub` "Segwit (P2WPKH)", `ypub` "Unknown format"
  - [ ] NTAG213/215/216 and ICODE SLIX2 tag with a single-sig descriptor: parses; DESFire, NTAG 424, MIFARE Classic: nothing (owner: capability-sheet#tags)
  - [ ] Desktop NFC writer: "Scan error" and a beep every second; does the machine's tag ID change every second (the page no longer states the reported cause; owner capability-sheet#tags says not confirmed)
  - [ ] codex32 share over NFC (screen-map bench check 7, SYNTHESIS F row 19): goes straight to "Engrave Plate"; back arrow does not leave; a share that cannot be planned returns to the start screen with no message (owner: capability-sheet#shares)
  - [ ] Screen saver after 3 minutes; first touch swallowed
  - [ ] Dry test with the 2-pin engraving solenoid plug unplugged on v1.4.3 (SYNTHESIS G bench check 15): job runs without striking, or ends in an error (owner: engraving-quality#unplug)
  - [ ] Photograph the display connector locks and the pulley set screws
sources: research/BRIEF.md, research/device-screen-map.md (sections 1.1 to 1.7, 2, 3, 5, 6), research/nfc-tools-transfer.md (sections 0, 2, 3, 4, 5, 6, 7, 9), research/desktop-wallets.md (1.3 annotation trap), research/hardware-signers.md (key finding 3, Format: P2SH-P2WSH), research/mobile-wallets.md (BlueWallet vault formats), lab/check (shcheck facts and check over lab/check/testdata and lab/fixtures, firmware ea4b65b; README.md "What is approximate", RESULTS.md, testdata/bsms.txt), lab/TESTWALLET.md (fixtures carry no trailing newline), firmware v1.4.3 source cmd/controller/engraver.go (home, handleDiag, powerOn), cmd/controller/platform_sh2.go (Init go home(), homingEngraver), driver/mjolnir2/mjolnir2.go (buffer underrun), gui/engraver.go (runEngraving resume), gui/gui.go:2180-2186 and :1760, :1794 (Back drops the pause point), harvest Q03 Q04 Q14 Q20 Q30 Q38 Q39 Q41, also Q02 Q08 Q40 Q44, harvest/HARVEST.md (pulley set screws, needle and cords, belt tension, brass nut: lines 187, 190, 322, 326, 613, 681), SYNTHESIS section D rows, section F rows 7 10 11 12 14 17 19, section G bench checks 2 and 15, lnd aezeed README https://github.com/lightningnetwork/lnd/blob/master/aezeed/README.md (24 words from the BIP39 word list, opened 2026-10-10), manuals/REVIEW-wave1.md sections 2 to 4 (harmonized, see manuals/HARMONIZE-wave1.md)
-->
