Skip to content
❄️ Firmware and simulator for Coldcard Hardware Wallet
Branch: master
Clone or download
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
cli
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
misc/obsolete-code
releases
shared rename menu Dec 11, 2018
stm32
testing Cleanup gitignores; put closed to used directory Nov 26, 2018
unix
.gitignore
.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
README.md Merge branch 'master' of github.com:Coldcard/firmware Jul 26, 2018
requirements.txt

README.md

Coldcard Wallet

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

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 https://github.com/Coldcard/firmware.git

Then:

  • 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; ./simulator.py

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

MacOS

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

brew install sdl2
brew cask install  gcc-arm-embedded

Linux

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

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

unix

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

testing

  • test cases and associated data

stm32

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

external

  • code from other projects, ie. the dreaded submodules

stm32/bootloader

  • 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.