ShieldSigner / build & use0.0.19-dev

TASK 05

Try the LVGL signing workflow

Check the working screens and camera, then practice the wallet QR handoff with a disposable seed.

You need
  • Working display/buttons/camera
  • Sparrow on your computer
  • A new test seed
You’ll have

A watch-only wallet and a practiced offline signing workflow.

Current bench firmware: LVGL + Rust camera, tested on the standard 240×240 display/button board. Read the exact image, memory measurements and acceptance limits →

Boot, LVGL usability and camera scanning are user-confirmed on the bench setup. Public-fixture signing/export checks passed; a full session with the user's own wallet is still pending. Smartcards are outside this LVGL acceptance scope.

Confirm the current firmware before creating a seed

  • Use the firmware guide to identify your image and tested hardware profile. A working Home screen alone is not a completed wallet workflow.
  • The current app keeps the original Python wallet logic while LVGL renders the interface. Menu presentation may differ from older Pillow screenshots.
  • Check camera scanning with a harmless public QR first; then use a disposable seed and record where any wallet handoff fails.

Create and back up a test seed

  • On the device: Tools → New seed (camera entropy or dice entropy). Choose the length and complete the prompts.
  • Record and verify the words offline. The ordinary SeedSigner flow holds the loaded seed in memory, so you need its backup again after power-off.
  • Use a disposable seed and an unfunded wallet for your first run. The website never asks you to enter a seed or PIN.

Export public wallet information

  • Open the loaded seed’s options and export an xpub for Single Sig and the script type you intend to use. Choose Sparrow as the QR format.
  • In Sparrow: create a new wallet, choose the air-gapped hardware wallet route, and scan the signer’s public export.
  • Keep network, derivation path and script type consistent. This is a watch-only wallet; never type the seed into Sparrow just to make scanning work.

Verify a receive address

  • Display a receive address in Sparrow and use the signer’s address-verification/scan flow to confirm it belongs to your loaded seed and wallet settings.
  • Compare the complete address and network. For multisig, import the correct wallet descriptor; a single cosigner seed alone does not define the wallet.
  • Record this as a separate acceptance check; public-fixture signing does not establish address verification with your own wallet.

Practice the transaction handoff

  • Sparrow builds an unsigned transaction (PSBT) and displays it as an animated QR. Scan that QR with the signer.
  • On the signer, review destination addresses, amounts, change and fee before approving.
  • Display the signed QR, scan it back into Sparrow, then review there. Sparrow—not the offline signer—broadcasts when you explicitly choose to do so.
SparrowBuild unsigned PSBT
ShieldSignerReview & sign offline
SparrowReview & broadcast

Finish the session

  • Exit the loaded seed/session and power off when done. Retain a verified backup; an xpub or fingerprint cannot recover a lost seed.
  • A SeedQR encodes the secret, unlike a public wallet-export QR. Keep a printed SeedQR private just like the words.
  • For card storage or card signing, follow the separate smartcard task.
Continue the buildUse smartcards →
Sources & deeper reference

Checked 12 October 2026. Menu names can vary with firmware.

Current LVGL status and memory measurements ↗SeedSigner official docs ↗Fork quick starts ↗Practice multisig recovery ↗Edit this workflow on GitHub ↗