Skip to content

odudex/Kern

Repository files navigation

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:

Option 1: Clone with submodules (Recommended)

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

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 camera
  • Load Mnemonic

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

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

  • Networks

    • ✅ Mainnet
    • ✅ Testnet
  • 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

About

Experimental project to explore ESP32-P4 as a pure C-based Bitcoin air-gapped signer

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •  

Languages