Skip to content

Recognize BBQr Binary 7z blob as paper-backup #673

Closed
dmonakhov wants to merge 1 commit into
Coldcard:masterfrom
dmonakhov:bbq-paperark
Closed

Recognize BBQr Binary 7z blob as paper-backup #673
dmonakhov wants to merge 1 commit into
Coldcard:masterfrom
dmonakhov:bbq-paperark

Conversation

@dmonakhov

Copy link
Copy Markdown
Contributor

Coldcard Q is a perfect airgap secret storage device, thanks to SeedVault, Secure notes/Passwords features.
It is much safer than standard phone password storage apps, which makes it perfect
for storing important but rarely accessed secrets like

  • Inheritance instructions
  • Disaster recovery codes for accounts recovery (email, cloud account, etc)

The only disadvantage of airgap secret storage is that user themselfs is responsible for backup maintenance.
Standard practice of engraving master seed on a steel plate no longer works because CC state is more
complicate than just master seed, so full backup is required.

Currently the only native backup medium available for Coldcard is microSD cards.
Even high quality SLC card has lifeexpectancy up to 10years, which may be not enouth.
That is why I created bbqr-paperark, which allow to use paper as an archive medium.
Paper gives use at 30+ years of storage guarantee and allow to implement the 3-2-1 backup strategy with two medium types, SDCard + paper backup.

It is not a good idea to bloat Coldcard code base to support paper backup creation on device, but adding 7 lines of code to support backup recovery via QR code is great compromise for user experience.

  • Backup creation is usually performed by experiance user so external tool is OK.
  • Backup restore is stressful situation and may be performed by non tech person, so it should be supported naively by ColdCard.

Pairs with a standalone offline CLI that produces printable BBQr sheets from .7z backups; the device only needs this import-side recognition[1]

Example

Please find an example backup https://github.com/dmonakhov/bbqr-paperark/blob/main/example

  • backup.7z - a real Coldcard (Testnet) backup
  • backup.paperark.pdf - the printable BBQr sheet produced by encode
  • backup.paperark.bbqr.txt - the ground-truth sidecar (one BBQr part per line)

Its 12-word backup password is:

pitch sheriff father soap satoshi hazard coil inch cook lumber funny rifle

References:

Adds 24 lines (10 in decoders.py + 14 in ux_q1.py). No bootloader or
crypto change; reuses existing PSRAM/SFFile USB-restore path.

A full .7z backup is a master-seed artifact, so the restore target is
chosen from device state (master when blank, temporary otherwise) via
not pa.is_secret_blank() - same rule as restore_backup_dev() - rather
than the menu-level tmp flag, which is always True on a running device
and would dead-end at "Cannot use master seed as temporary".

Pairs with a standalone offline CLI that produces printable BBQr sheets
from .7z backups; the device only needs this import-side recognition.
@doc-hex

doc-hex commented Jun 24, 2026

Copy link
Copy Markdown
Contributor

Great minds think alike! Coinkite is exactly where you are in terms of backups and data survival.

  1. We have undisclosed code to support paper backups to QR codes (but Coldcard itself makes the PDF).
  2. Same for backup import from BBQr... exactly your plan. Should be able to interoperate with your printouts.
  3. New hardware project: arca for inheritance, and disasters.

@doc-hex

doc-hex commented Jun 24, 2026

Copy link
Copy Markdown
Contributor

Next release (or maybe the next after that) will have the new stuff, so I'm going to close the PR, but we can keep discussing here.

@doc-hex doc-hex closed this Jun 24, 2026
@dmonakhov

Copy link
Copy Markdown
Contributor Author

Awesome, Nice to hear this is exactly what I am straggling to find, would be happy to review and test as soon as arca becomes available, I have strong expertise in Linux kernel block and fs (mostly EXT4) layers. so hope to be useful reviewer.

One of questions I have related to CC-Q firmware branches , hardware is amazing for cold secure storage device. I want to add specific features which are relevant to secure storage, but not relevant to core bitcoin signer use-case. For example:

IMHO it is not a good idea to add such features to core bitcoin signer branch because it bloat code base and increase attack surface, Edge branch also not a good candicate. So I am wondering may be having a dedicated branch called secure storage for this. What do you think?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants