Skip to content
❄️ Firmware and simulator for Coldcard Hardware Wallet
Branch: master
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
docs Missing byte Sep 10, 2018
external Include a fix for code we don't call, but for other users of the libr… Nov 8, 2018
graphics Graphics doc Nov 22, 2018
shared rename menu Dec 11, 2018
testing Cleanup gitignores; put closed to used directory Nov 26, 2018
.gitmodules Updated gitmodules, semi-manually Jul 24, 2018
COPYING Making whole firmware public with single, signed commit. Jul 24, 2018
LICENSE Making whole firmware public with single, signed commit. Jul 24, 2018 Merge branch 'master' of Jul 26, 2018

Coldcard Wallet

Coldcard is a Cheap, Ultra-secure & Opensource Hardware Wallet for Bitcoin and other crypto-currencies. Get yours at

Follow @COLDCARDwallet on Twitter to keep up with the latest updates and security alerts.

coldcard logo

coldcard picture front coldcard picture back

Check-out and Setup

Do a checkout, recursively to get all the submodules:

git clone --recursive


  • cd firmware
  • git submodule update --init (if needed?)
  • brew install autogen
  • virtualenv -p python3 ENV
  • source ENV/bin/activate (or source ENV/bin/activate.csh based on shell preference)
  • pip install -r requirements.txt

Setup and Run the Desktop-based Coldcard simulator:

  • cd unix; make setup && make; ./

Building the firmware:

  • cd ../cli; pip install --editable .
  • cd ../stm32; make setup && make; make firmware-signed.dfu
  • The resulting file, firmware-signed.dfu can be loaded directly onto a Coldcard, using this command (already installed based on above)
  • ckcc upgrade firmware-signed.dfu

Which looks like this:

[ENV] [firmware/stm32 42] ckcc upgrade firmware-signed.dfu
675328 bytes (start @ 293) to send from 'firmware-signed.dfu'
Uploading  [##########--------------------------]   29%  0d 00:01:04


You'll probably need to install at least these packages:

brew install sdl2
brew cask install  gcc-arm-embedded


You'll probably need to install these (Ubuntu 16):

apt install libudev-dev python-sdl2 gcc-arm-none-eabi

Code Organization

Top-level dirs:


  • shared code between desktop test version and real-deal
  • expected to be largely in python, and higher-level


  • unix (MacOS) version for testing/rapid dev
  • this is a simulator for the product


  • test cases and associated data


  • embedded micro version, for actual product
  • final target is a binary file for loading onto hardware


  • code from other projects, ie. the dreaded submodules


  • 32k of factory-set code that you cannot change
  • however, you can inspect what code is on your coldcard and compare to this.
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.