Crypto in your pocket.
Jolt is a hardware wallet built on Espressif's IoT Development Framework for the ESP32 chip. For more information about ESP32, see the ESP32 Website.
If you'd like to develop, build, and/or run Jolt please follow the guide that best matches your native platform.
Disclaimer: Just a friendly reminder to please note this project is still under continouus and heavy development, which means things may break or change from time to time. But that doesn't mean we want it to break! So we ask if you do encounter any issues, to please file them and one of us will try to respond as quickly as possible. Additionally, not all security features are currently enabled, such as hardware encryption or secure boot; without these features, private keys could be extracted with physical access to the device.
Checkout our extensive FAQs for more information - FAQs
To see the latest on what we've done, what we're planning, and where we're headed click here.
- App loading only works when set to release mode or stack protection is disabled.
For all commands, we need to source some environment variables and generate the build files so we can take further action.
source export.sh # On initial setup this may error, that's fine
mkdir -p build/ && cd build && cmake .. -G Ninja
GNU Make may be used instead of Ninja. If a build system is not specified,
Ninja
will be used.
Many of these options change either how the default sdkconfig
is generated,
or how the make
/ninja
filed is generated. To be safe, delete both the
build/
directory and the sdkconfig.*
files in the project root.
# Go into the build directory
cd build/
# Install system dependencies
ninja system_dependencies
# Install toolchain (and system dependencies)
ninja toolchain
# Re-initialize some env vars
cd .. && source export.sh
idf.py build
This will also build the compressed build/jolt_os.bin.gz
file
idf.py compress
This will build JoltOS with additional testing functionality and override the default GUI with a unit-testing menu
# From the project directory
rm -rf build/ # Make sure the previously generated make/ninja file is gone
idf.py tests
The tests
target generates a slightly different build file, so clear
the build/
directory before running.
JoltOS supports different hardware configurations. These hardware differences
get applied over the defaults via the TARGET_BOARD
-specific sdkconfig.defaults
files in the sdkconfigs/
directory. Delete your generated sdkconfig
file
and generate a hardware-specific configuration via:
TARGET_BOARD=my_hardware_name idf.py defconfig
The TARGET_BOARD
environment variable is only used for sdkconfig
generation.
[deprecated]
Install the prerequisites specified in the ESP-IDF docs. The rest of the ESP-iDF steps are handled below.
Setup the build environement by running the following command.
make install
Finally, run the command below. This must be done in every new bash instance.
source export.sh
Note: final sdkconfig.defaults
overrides can be applied via a file
sdkconfigs/sdkconfig.personal
. Useful things like device port can be set in
this file.
make flash monitor -j
The following flashes the on-device debug menu along with some developer commands.
make test-menu - j
The following command will flash JoltOS unit tests and a unit-test menu accessible via the UART console.
make tests -j
JoltOS supports other esp32-based hardware; These generally only differ in supported
functionality and pinout. To set the target board, set the env var TARGET_BOARD
prior to generating sdkconfig
. For example:
TARGET_BOARD=dstike make menuconfig
To load the sdkconfigs/sdkconfig.defaults.dstike
to override some of the definitions in
sdkconfigs/sdkconfig.defaults
.
If you would like to get in touch, please write to us at: [email protected]