EDITION

Not an official SeedHammer project. The SeedHammer II is built and sold at seedhammer.com.

A FIRMWARE FORK FOR THE SEEDHAMMER II

Engrave anything. SeedHammer EDITION, a firmware fork for the SeedHammer II.

SeedHammer EDITION keeps every backup flow the stock machine verifies, then opens it up. Draw it, type it, tap it over NFC. The machine shows the exact strokes it will cut. You approve. Steel keeps the rest.

The real firmware, compiled to WebAssembly. Runs in your browser. Zero hardware.

§1

Try the whole machine before you touch one.

The emulator is the firmware: the machine's real GUI, compiled to 8.7 MB of WebAssembly and painted on the same 480 × 320 screen the device carries. Drag to navigate; it is a touch device.

The machine's engrave-preview screen showing a vector drawing planned onto a plate

The number keys tap in demo wallets. Press 1 for a 24-word seed, 3 for a 2-of-3 descriptor it cosigns, or 1 then 3 to see one wallet from both ends. The words are nonsense on purpose: nobody mistakes BACON, 24 times over, for their own backup.

When you want metal, Android Chrome writes the plate over Web NFC with nothing to install; on a desktop a small local service drives an ACS ACR122U reader. Studio installs as an app and works offline once the firmware is fetched.

The machine has no camera. qr-bridge lends it one: a USB barcode scanner on one side, an emulated NFC tag on the other. Scan a descriptor or a SeedQR off a screen, hold the machine's reader to the antenna as you would a sticker, and the firmware reads it as any tapped record: seed words, a descriptor, a codex32 share, a Nostr key, or a plain text plate. Three off-the-shelf parts, about $30 in all. No screen, no storage, no radio silicon; the payload lives in RAM and clears once the machine has read it. It needs this firmware: the stock reader gives up on a software tag long before one can answer.

[ OPEN STUDIO ]

§2

Anything you can draw or type.

A new NDEF record type, seedhammer.com:curves, carries vector drawings and rich text. The firmware re-fits incoming geometry to its own spline, plans its own timing, and rasterizes a preview on screen. Nothing engraves until you approve that image.

Plain text engraves too, typed on the machine's own three-layer keyboard or written from any phone NFC app. The firmware sets it at the largest of six sizes (6.0 down to 3.0 mm) whose grid holds the whole text: up to 1,144 characters on the square plate. That ceiling is bench-verified: a full 44 × 26 grid engraved at 3.0 mm read back by OCR with zero errors. The font covers all 95 printable ASCII characters. A Nostr key, npub or nsec, engraves as a NIP-19 key plate; for a secret key the device derives the public key and offers its plate second.

Steel plate engraved with a vector drawing
SVG drawing
Steel plate engraved with a formatted rich-text document
Rich text with tables
Small steel plate engraved with a titled 12-word seed
Seed, small plate 85 × 55
Steel plate engraved with a Nostr public key
Nostr key, NIP-19
Fig. 1: plate layouts rendered by the firmware's own planner, exactly as cut. Source: docs/images in the firmware repo, regenerated by CI on every change.

The small 85 × 55 mm plate rides a printable adapter jaw. Download the model as 3MF, ready to slice (125 KB) or STEP, the CAD solid (424 KB).

§3

Your hand draws the seed.

The machine does not generate seed phrases. You do, from dice, tiles or coins. What it adds is the one word you cannot draw: the last word carries a checksum, so only 8 of the 2048 words complete a 24-word phrase. Type your 23 drawn words and the machine computes the final one, taking the 3 bits it is free to choose from the RP2350's hardware random number generator.

253 bits · drawn by your hand 3 bits · the machine
Fig. 2: the split is the point. Your 23 words fix 253 of 256 bits; the machine supplies 3 and cannot influence the rest. A fully broken generator still leaves an attacker facing 253 bits. A device that generates all 24 words holds the whole wallet inside its RNG instead.

Once the seed plate is cut, the machine derives the wallet descriptor and shows it as a QR to scan into a watch-only wallet. The seed never leaves the machine and never gets typed into a computer.

A BIP39 passphrase is optional, carried on a plate of its own, and uncapped. Trezor stops at 50 characters. Ledger and Jade stop at 100, BitBox02 at 127, Keystone at 128. BIP39 sets no limit, so this machine sets none either.

§4

Multisig, in steel, no computer in the middle.

MULTISIG WALLET in the input menu assembles an M-of-N wallet on the device. Name it, pick the quorum, then add each cosigner: typed words, a seed tapped over NFC, or a bare account key from a cosigner whose seed never touches this machine. The descriptor leaves as an animated QR on the machine's screen, for Sparrow or any UR-capable coordinator to scan, and both ends compare the wallet's first receive address before anything cuts.

Machine screen showing the wallet's first receive address for cross-checking against the coordinator Cosigner share plate carrying its descriptor fragment as text wrapped around a QR code
Fig. 3: left, the mandatory first-address cross-check before steel is cut. Right, a cosigner's share plate, plate 1 of 3 from a 2-of-3 split. Both rendered by the firmware.

An existing multisig can be split instead: SPLIT cuts one share plate per cosigner, each fragment wrapped around a QR under a header naming its plate number and cosigner fingerprint. Any signing quorum of plates rebuilds the wallet in Sparrow as one animated code. The partition covers every n-1-of-n and n-of-n quorum plus 2-of-4 and 3-of-5; the rest fall back to full descriptor copies, where any single plate recovers the wallet.

§5

Sign your own firmware.

Fork builds are unsigned, and a stock machine boots only SeedHammer-signed images. That refusal is the ownership step. sh2key runs the whole ceremony: it mints a signing key, fuses it into a spare RP2350 boot-key slot, signs your build in-process and flashes it. Official firmware stays bootable beside yours.

Exactly three commands can burn fuses. The manual names each one, and every irreversible write sits behind a readback-verified gate and typed consent. The flash list only offers images the board's own keys accept, so a rejected image cannot be written by accident.

The signing key backs up like everything else here: as 24 BIP39 words on the machine's own steel, restoring to a byte-identical PEM. A mis-read word is found by fingerprint search.

3commands can burn fuses, each named in the manual
24words on steel rebuild the key, byte-identical
1command runs the provision ceremony end to end

§6

Built like an instrument.

Round glyphs used to engrave egg-shaped: the O planned 2.89% asymmetric. An interpolating spline fitter cut that to 0.22%; rotating each loop's seam to where curvature hides it took bench circles to 0.000%. Constant-velocity cruising holds the needle through arcs: a planned 70 mm circle runs 27.6 s against the hardware's 27.5 s floor.

Capacity went the same way. A 973-character 5-of-7 descriptor engraved at 3.0 mm and transcribed back from a photo with zero character errors. The square plate's ceiling holds too: a full 44 × 26 grid, 1,144 characters of the repeating charset, engraved and read back clean by OCR. And the QR fallback ladder reaches about 1,500 characters in the QR's compact charset where stock firmware fails outright past its one fixed layout.

Measured results
MeasurementResult
Roundness error, planned toolpath2.89% → 0.22% → 0.000%
5-of-7 descriptor, engraved and transcribed back973 chars, 0 errors
Full-grid text plate at 3.0 mm, OCR readback1,144 chars, 0 errors
QR-backed descriptor capacity~1,500 chars
Firmware-rendered manual screenshots, drift-gated41
Reproducible builds via the nix flakebit for bit

Two model audits have gone through this fork, Claude Fable 5 first and then Kimi K3 over the same ground. Neither turned up a substantial security defect. Fable implemented on what the two of them concluded, and tests hold the hardening in place.

The random number generator went on the bench as well, sampled overnight and measured against a statistical battery. It contributes 3 bits of a 256-bit seed, 7 of a 128-bit one, and only when you ask it to.

Of course: don't trust, verify. Always recover a backup from the steel yourself before you rely on it.

§7

Ordering information.

Where each part comes from
ItemWhereTerms
The SeedHammer II machineseedhammer.comsold by SeedHammer, the original maker
This firmwareGangleri42/seedhammerfree · public domain · sign it yourself
Studiostudio.seedhammer.spacefree · any browser · works offline
Small-plate jawhardware/small-plate-jaw3MF ready to slice · STEP solid
qr-bridgeGangleri42/qr-bridgefree · public domain · ~$30 in off-the-shelf parts