Experimental project to explore ESP32-P4 as a C-based, air-gapped Bitcoin signer
  • C 99.2%
  • CMake 0.6%
  • Makefile 0.1%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
odudex 883a3dbdee feat: add option to reveal encryption keys while typing
refactor: share input helper for encryption keys and passphrase

clang-format
2026-02-14 16:33:25 -03:00
.github/workflows add github CI 2025-08-08 22:27:42 +02:00
components test: K_QUIRC_DEBUG default to disabled 2026-02-12 15:21:35 -03:00
main feat: add option to reveal encryption keys while typing 2026-02-14 16:33:25 -03:00
.gitignore add justfile (#3) 2025-12-22 09:11:26 -03:00
.gitmodules sign UR PSBTs 2025-10-23 14:46:47 -03:00
.justfile docs: Roadmap on README 2025-12-22 09:58:45 -03:00
CMakeLists.txt refactor: remove deprecated references 2026-01-02 07:14:00 -03:00
dependencies.lock refactor: remove unused Waveshare reference component folder 2026-01-31 15:32:58 -03:00
format-main.sh add format script 2025-11-27 14:05:21 -03:00
LICENSE refactor: remove deprecated references 2026-01-02 07:14:00 -03:00
partitions.csv initial commit 2025-07-11 15:28:39 -03:00
README.md docs: update roadmap 2026-02-12 14:02:34 -03:00
sdkconfig.defaults chore: update esp-idf to 5.5.2 2026-01-22 16:17:00 -03:00

KERN

Kern is an experimental project that explores the capabilities of the ESP32-P4 as a platform to perform air-gapped Bitcoin signatures and cryptography.

Hardware

Early development uses the Waveshare ESP32-P4-WiFi6-Touch-LCD-4B.

ESP32-P4 does not contain radio (WiFi, BLE), but this board has a radio in a secondary chip (ESP32-C6 mini). Later the project will migrate to use radio-less, simpler and cheaper boards with ESP32-P4 only.

An OV5647 camera module is also required.

Prerequisites

Build

Cloning the Repository

This project uses git submodules. You have two options:

When cloning the project for the first time, make sure to clone it recursively to include all submodules:

git clone --recursive https://github.com/odudex/Kern.git

Option 2: Initialize submodules after cloning

If you've already cloned the repository without the --recursive flag, you can initialize and update the submodules with:

git submodule update --init --recursive

Building the Project

Build the project from the root directory with:

idf.py build

or flash the project to the device with:

idf.py flash

and if you are debugging you may want to run monitor too:

idf.py monitor

Optional: Using just

If you have just installed, you can use the provided .justfile:

just build   # Build the project
just flash   # Flash to device
just clean   # Clean build artifacts

Build Options

Enable/disable Auto-focus

To enable camera auto-focus, enable camera focus motor on menuconfig:

CONFIG_CAM_MOTOR_DW9714=y
CONFIG_CAMERA_OV5647_ENABLE_MOTOR_BY_GPIO0=y

References

Kern is strongly inspired by Krux, sharing similar but simplified UI elements and flow.

Blockstream Jade was a strong inspiration for the decision to use C language for efficient use of the hardware. Additionally, Kern's core library, libwally, is shared with Jade.

The simplicity and UI polish of SeedSigner and the security focus of the pioneering Specter-DIY were also strong inspirations.

Roadmap

  • ✅ Basic UI

  • ✅ Camera video pipeline

  • ✅ Static QR codes

    • ✅ Scan
    • ✅ Display
  • Animated QR Codes

    • Scan, parse and export
      • ✅ UR
      • ✅ pMofN
      • ✅ BBQr
  • New Mnemonic

    • ✅ From dice rolls
    • ✅ From words
    • ✅ From camera
  • Load Mnemonic

    • ✅ From manual input (typing words)
    • From QR codes
      • ✅ Plain
      • ✅ SeedQR
      • ✅ Compact SeedQR
    • ❌ Encrypted
  • Back up

    • ✅ Words
    • ✅ QR codes
    • ❌ Binary Grids
    • ❌ Encrypted
  • ✅ Passphrases

  • Networks

    • ✅ Mainnet
    • ✅ Testnet
  • ✅ Account

  • Policy types

    • ✅ Single-sig
    • ✅ Multisig
    • ❌ Miniscript
  • Descriptors

    • ✅ Loading
    • ✅ Exporting
    • ❌ saving
    • ❌ Encrypting/Decrypting
  • Script type

    • ✅ Native Segwit
    • ❌ Nested Segwit
    • ❌ Taproot
  • ❌ OTP based secure boot

  • ❌ KEF encryption

License

MIT