Skip to content
❄️ Firmware and simulator for Coldcard Hardware Wallet
Branch: master
Clone or download
peter-conalgo Merge pull request #13 from xavierfiechter/master
Updated install instruction for MacOS
Latest commit 2f26d14 Mar 19, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
cli Making whole firmware public with single, signed commit. Jul 24, 2018
external Include a fix for code we don't call, but for other users of the libr… Nov 8, 2018
LICENSE Making whole firmware public with single, signed commit. Jul 24, 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 (Python > 3.5 is required)
  • 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 tap PX4/px4
brew search px4
brew cask install gcc-arm-embedded
brew install px4/px4/gcc-arm-none-eabi-80 (latest gcc-arm-none-eabi-XX, currently 80)


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.