SeedSigner

Run Legacy on a fully air-gapped device you build yourself.

SeedSigner is an open-source Bitcoin signing device built from a Raspberry Pi Zero, a small screen and a camera. It has no WiFi, no Bluetooth and no storage of its own. Legacy provides a build of the SeedSigner firmware with Legacy Encryption added, so you can encrypt and decrypt a seed phrase without it ever touching a computer or the internet.

Payloads are interchangeable with the browser version: encrypt on the device and decrypt in a browser, or the reverse.

This firmware is an independent build of SeedSigner 0.8.6 maintained by the Legacy project. It is not made, reviewed or endorsed by the SeedSigner project.

1

Get the hardware

  • Raspberry Pi Zero v1.3, not the "W" or "2 W". Those have WiFi and Bluetooth; the point of this device is that it has no wireless hardware at all.
  • Waveshare 1.3" 240×240 LCD HAT (the screen with a joystick and three buttons).
  • OV5647 camera module, the version with the narrow Pi Zero ribbon cable.
  • MicroSD card, 4 GB or larger, plus a card reader for your computer.
  • A micro-USB power supply or power bank.

The pins on the Pi Zero must be soldered (or buy a "pre-soldered header" Pi Zero). The SeedSigner project's shopping list covers assembly and cases.

2

Download the firmware

From the latest release on GitHub, download these three files into one folder:

  • seedsigner_os.legacy-encryption.pi0.img.gz (the firmware)
  • seedsigner_os.legacy-encryption.pi0.img.gz.sha256 (its checksum)
  • seedsigner_os.legacy-encryption.pi0.img.gz.asc (its signature, for the optional check below)

Only download firmware from that page. Do not use a copy someone emails or messages you.

3

Check the download

This confirms the file arrived complete and unaltered. Open a terminal in the folder with the files and run the line for your system:

Mac (Terminal):

shasum -a 256 -c seedsigner_os.legacy-encryption.pi0.img.gz.sha256

Linux:

sha256sum -c seedsigner_os.legacy-encryption.pi0.img.gz.sha256

Both should print OK.

Windows (PowerShell):

Get-FileHash seedsigner_os.legacy-encryption.pi0.img.gz -Algorithm SHA256

Open the .sha256 file in Notepad; its long code must match the hash shown, character for character.

If the check fails, delete the files and download them again. Never flash a file that fails.

Optional: verify the signature (proves the file came from Legacy)

The checksum proves the file is intact; the signature proves who published it. With GnuPG installed, also download legacy-signing-key.asc from the same release, then:

gpg --import legacy-signing-key.asc
gpg --verify seedsigner_os.legacy-encryption.pi0.img.gz.asc seedsigner_os.legacy-encryption.pi0.img.gz

Look for Good signature from "Eric A Summers ..., and check that the key fingerprint shown is:

F367 D8D8 7785 04D9 DDAF  AD9F B7E4 66E3 2305 FE1B

A warning that the key "is not certified with a trusted signature" is normal. A BAD signature, or a different fingerprint, means stop: do not flash it.

4

Write it to the microSD card

Use a free flashing app. Both of these write the .img.gz file directly (no need to unzip it), check the write afterwards, and only offer removable drives, so you can't overwrite your computer's disk by mistake.

balenaEtcher (Mac, Windows, Linux):

  1. Insert the microSD card.
  2. Click Flash from file and choose seedsigner_os.legacy-encryption.pi0.img.gz.
  3. Click Select target and choose the microSD card. Check the size matches your card.
  4. Click Flash! and wait for it to finish and validate.

Raspberry Pi Imager (Mac, Windows, Linux):

  1. Insert the microSD card.
  2. Device: any Raspberry Pi Zero. Operating System: scroll to the bottom, Use custom, and choose the .img.gz file.
  3. Storage: choose the microSD card.
  4. When asked about OS customisation, choose No. Customisation adds WiFi and account settings that do not belong on this device.
  5. Confirm, and wait for it to write and verify.

Your computer may say it can't read the card afterwards, or show a small drive named SEEDSIGNROS. Both are normal. Eject the card.

5

First boot

  1. Put the card in the Pi Zero and connect power to the port labelled PWR.
  2. After about a minute the SeedSigner menu appears.
  3. Go to Tools → Legacy Encryption.

The device runs entirely from memory. Once the menu is showing you may remove the card, and turning the power off erases everything it held.

6

Test it before trusting it

Before encrypting a real seed phrase, do a full round trip with a throwaway one (for example the 12 words button on the online demo, written on scrap paper):

  1. Encrypt Seed Phrase: enter the test words, then each key twice. Encrypting takes 15–30 seconds; that delay is deliberate.
  2. Photograph the encrypted QR code.
  3. Decrypt Seed Phrase: scan the photo, enter the benefactor key, then the beneficiary key, and confirm you get the same words back.
  4. Also decrypt it in Legacy-offline.html on an offline computer, so you know both paths work.

Scanning trouble? See the QR scanning tips in the FAQ.

7

If you are a beneficiary

Build and flash the device as above, then choose Tools → Legacy Encryption → Decrypt Seed Phrase, scan the encrypted QR, and enter the benefactor key followed by the beneficiary key. The seed words appear on the screen and can be exported as a SeedQR or loaded straight into SeedSigner. Take your time: nothing here is urgent, and the encrypted QR is useless without both keys.