Embedded systems · Firmware · Hardware bring-up
Having fun building my own hardware and firmware.
Bare-metal C and Rust on microcontrollers, mostly on the RP2040 and RP2350. Interested in custom PIO peripherals, low-power designs, reverse engineering, and PCB design.
Selected work
pokeemerald-rp2350
A Game Boy Advance game ported from ARMv4T to Cortex-M33 and running natively on a $6 microcontroller. Not an emulator. GBA’s video hardware is reimplemented in software and ouput at 60 fps to HDMI.
pico-remote-probe
A network-attached SWD debug probe on a single Pico 2 for remote flashing and debugging. The probe runs a GDB stub
so a bare gdb-multiarch can flash and debug a
target over the network with no host-side tooling. Plus a host-free
RTT viewer and an OpenOCD bridge for RISC-V cores.
pico-10base-t-rs
10BASE-T Ethernet bit-banged out of PIO and DMA. No MAC or PHY, just a transceiver and magnetics. Bridged to a TCP/IP stack to make the Pico 2 W into a working wireless router.
pico-llm
Transformer language model inference on bare metal with only 520 KB of RAM. Weights stream off an micro SD card through double-buffered DMA on one core while the other core runs quantised matrix multiplication. Tested with a custom 9M-parameter model and ported Qwen3-0.6B. Write-up in progress.
Siri Remote (gen 3) protocol
Reverse engineering the Apple Siri Remote gen 3 bluetooth protocol: GATT layout, button and clickpad encoding, and the Opus voice stream. The audio path has not been documented publicly before. Write-up in progress.
Minnow E-reader
A tiny e-reader powered by a CR2032 coin-cell. Built to magnetically attach to the back of your phone and keep you focused on a single book. Instantly turns on and ready to read unlike my experience with Linux based e-readers. Battery life is measured in years.
HBCam
A handheld monochrome camera in the spirit of the Game Boy Camera, from KiCad schematic through assembly to firmware: PIO frame capture, live viewfinder, dithering and palettes, gallery, and USB mass storage.