LIVE
Loading market data…
Home / Guides / Self-custody

How to build and set up a SeedSigner

Parts list, flashing and verifying SeedSigner OS, generating a seed from camera entropy, SeedQR backups, and signing your first air-gapped transaction with Sparrow.

What SeedSigner is (and isn't)

SeedSigner is an open-source Bitcoin signing device you assemble yourself from a Raspberry Pi Zero, a small screen and a camera. It has no Wi-Fi, no Bluetooth and no USB data connection to your computer. Everything it sends or receives goes through QR codes. That's what "air-gapped" means here: there is no wire or radio between your keys and the internet.

It is also stateless. SeedSigner does not store your seed. When you unplug it, it forgets everything. Each time you use it, you load your seed by scanning a QR backup (a SeedQR) or typing the words in. If someone steals the device, there's nothing on it to steal.

Why people pick itOff-the-shelf parts that can't easily be tampered with in the supply chain, fully auditable code, and a total cost well under the price of most commercial hardware wallets.

Parts list

  • Raspberry Pi Zero. The v1.3 has no wireless chip at all, which makes it the purist's choice. The Zero W and Zero 2 W are also supported, and SeedSigner OS ships without wireless drivers. Get a board with GPIO header pins already soldered ("WH" models) unless you're comfortable soldering.
  • Waveshare 1.3" LCD HAT (240×240, with joystick and three buttons). It plugs straight onto the header pins.
  • Camera with an OV5647 sensor and the short ribbon cable made for the Pi Zero. The standard Pi camera cable is too wide.
  • MicroSD card. Any small, reputable card works.
  • Micro-USB power. A phone charger or power bank. Use the port labelled PWR.
  • Case (optional but recommended). The community "Orange Pill" enclosure is open-source and widely 3D-printed.

Download, verify and flash the OS

  1. Go to the official SeedSigner GitHub releases page and download the SeedSigner OS image that matches your board (Pi Zero vs. Zero 2 W have different images), plus the sha256 file and its .sig signature.
  2. Verify before you flash. Import the SeedSigner project's public PGP key, check the signature on the hash file, then confirm the image's SHA-256 hash matches. The release notes walk through the exact commands. Skipping this step means trusting whatever server you downloaded from.
  3. Flash the image to the microSD card with balenaEtcher or Raspberry Pi Imager (choose "Use custom").
  4. Insert the card, attach the screen and camera, and plug in power. You should see the SeedSigner logo within a minute.

Generate a seed from real entropy

A seed is only as random as the process that made it. SeedSigner gives you two good options under Tools → New seed:

  • Camera image. Point the camera at something visually noisy (gravel, a crumpled bag, your own hand) and take a photo. The image data is hashed into your seed. Never photograph anything that could be reproduced, like a printed page.
  • Dice rolls. Roll a real die and enter each result: 50 rolls for a 12-word seed, 99 for 24 words. Slower, but fully verifiable.

Choose 12 or 24 words. Both are secure; 24 simply has more margin.

Back it up: words and SeedQR

Write the words down by hand, in order, on paper. Many people later stamp them into steel for fire and flood resistance. Then make a SeedQR: under Backup, SeedSigner shows your seed as a QR grid, and you hand-transcribe it onto a printed SeedQR template with a fine pen. From then on you can load your seed by scanning that card instead of typing 24 words with a joystick.

Treat the SeedQR like the wordsAnyone who scans it has your bitcoin. Store it as securely as the word backup, and never photograph either one.

Optional: add a BIP-39 passphrase (sometimes called a 25th word). It creates a completely separate wallet. It protects against someone finding your seed backup, but if you forget the passphrase, the funds are gone. Back it up separately.

Pair a watch-only wallet

SeedSigner signs; it doesn't track balances. For that you need a "coordinator" on your computer or phone. Sparrow Wallet is the most common choice.

  1. On SeedSigner, load your seed, then choose Export Xpub → single-sig → native SegWit → Sparrow. It displays an animated QR.
  2. In Sparrow: File → New Wallet, name it, choose Airgapped Hardware Wallet → SeedSigner, and scan the QR with your webcam.
  3. Sparrow can now show balances and generate receive addresses, but it can't spend. Only SeedSigner can.

Before you receive anything, verify a receive address: show the address QR in Sparrow, scan it with SeedSigner, and confirm the device says it belongs to your seed.

Sign your first transaction

  1. In Sparrow, create a transaction, then click Finalize → Show QR. You'll see an animated QR of the unsigned transaction (a PSBT).
  2. On SeedSigner, choose Scan and point the camera at the screen.
  3. Review on the device, not the computer: the destination address, the amount and the fee. This is the whole point of a signing device.
  4. Approve. SeedSigner shows the signed transaction as a new QR.
  5. In Sparrow, click Scan QR, scan SeedSigner's screen, then Broadcast.

Check current network fees on our fee tracker before you send. When the mempool is quiet, an economy fee is usually fine.

Before you move real money

  • Send a small test amount first.
  • Do a recovery drill: power off, power on, load the seed from your SeedQR, and confirm Sparrow shows the same first address.
  • Spend the test amount once, so you know the whole loop works.
  • Store your backups in two separate secure locations.
  • Write down which coordinator, script type and derivation you used. Future you, or your heirs, will thank you.

Next step: if you're not running your own node yet, Sparrow is asking a public server about your addresses. Read why to run your own node.