firmware/unix
2021-03-12 10:00:47 -05:00
..
variant more globals, so sim_eval is more useful 2021-03-12 10:00:47 -05:00
work/MicroSD More 2020-06-13 15:24:16 -04:00
.gitignore More args and shortcuts 2020-01-10 12:39:16 -05:00
background.png bkg 2019-04-24 09:54:37 -04:00
headless.py dev squashed 2020-11-18 14:19:14 -05:00
led-green.png Better background and add MicroSD LED 2019-04-12 12:09:18 -04:00
led-red.png Better background and add MicroSD LED 2019-04-12 12:09:18 -04:00
led-sd.png Better background and add MicroSD LED 2019-04-12 12:09:18 -04:00
Makefile First pass w/ libNgU 2021-03-01 09:03:03 -05:00
program-icon.png sim icon 2019-04-15 10:21:58 -04:00
README.md xfp often needs mainnet 2020-11-06 09:31:15 -05:00
requirements.txt Making whole firmware public with single, signed commit. 2018-07-24 14:07:33 -04:00
sim_boot.py First pass w/ libNgU 2021-03-01 09:03:03 -05:00
simulator.py dev squashed 2020-11-18 14:19:14 -05:00

Coldcard Desktop Simulator

Usage

make && ./simulator.py

Other Startup Flags

The default is to boot up, skip the tedious PIN entry step, and start as a functional wallet (on testnet, always with the same seed). But there are other options:

  • -w => like a factory-fresh unit; no PIN, no secrets
  • -l => PIN is set (12-12) but no secret yet
  • -2 => enable a secondary wallet, with pin 33-33 and no secret
  • -q => boot and drop into REPL; does nothing else, no setup
  • -f -w => boot like a unit that hasn't left factory yet
  • -p => pretend we don't know the seed words (xprv import) and so menus are different
  • --ms => define a 2-of-4 multisig wallet, and start off in multisig wallet menu; cosigners are "Me", "Myself", "And I" and empty string. BIP45 path. - add --p2wsh or --wrap for the other two address types
  • -s => go to the MicroSD menu at startup
  • --mk2 => emulate mark2 hardware (older micro, etc), default is current-gen (mark3)
  • --mk1 => emulate mark1 hardware
  • -g => don't skip login sequence
  • --addr => go to the address explorer at startup
  • --xw => go to the wallet export submenu
  • --paper => go to the Paper Wallet menu at startup
  • --xfp F0012345 => pretend like the XFP of secret is F0012345: useful for debug of PSBT files
  • --mainnet => start on mainnet instead of testnet
  • --seed "art art ... food" => set the seed phrase to 24 words provided
  • --metal => use USB attached Coldcard for bootrom and SE features
  • --metal --sflash => copy SPI flash contents at boot time from real device (no writeback)
  • --nick Name => set the pre-login nickname for the Coldcard so it will be shown
  • --delay X => set the "login countdown" value to X minutes, also force login
  • --set key=val => preset the setting 'key' to be 'val'
  • --msg => jump to message signing from SD card menu item
  • --hsm => enable existing HSM policy
  • --users => preset a few users: "totp", "hotp" and "pw"
  • --user-mgmt => go to the User Management menu inside settings
  • --pin 123456-123456 => set PIN code to indicated value
  • --deriv => go to the Derive Entropy menu inside settings, also loads XPRV from BIP
  • --secret 01abababab... => directly set contents of SE secret, see SecretStash.encode()
  • --eject => pretend no (simulated) SD Card is inserted

See frozen-modules/sim-settings.py for the details of settings-related options.

Requirements

  • uses good olde xterm for console input and output
  • this directory has additional requirements.txt (a superset of other requirements of the project)
  • run "brew install sdl2" before/after doing python requirements
  • run "make setup" then "make"
  • then "./simulator.py"

MacOS building

  • Follow instructions on https://github.com/micropython/micropython

  • probably: brew install libffi if not already present

  • to get pkg-config libffi to output useful things, need this:

    setenv PKG_CONFIG_PATH /usr/local/opt/libffi/lib/pkgconfig

  • but that's in the Makefile now

Other OS

  • sorry we haven't gotten around to that yet, but certainly would be possible to build this on Linux or FreeBSD... but not Windows.