Skip to the content
PCBKitNew board
4 layers91 × 68 mmStage0-raw autorun, the printed circuit board in 3D

Stage0-raw autorun

audiodestrukt/einhander

One-handed MIDI controller: parametric enclosure (build123d) + 4-layer RP2040 USB-MIDI PCB (tscircuit/KiCad)

Size
91 × 68 mm
Copper layers
4
Thickness
1.6 mm
Parts
42
Nets
31
Pads
195
Tracks, vias
516, 35
Pours
2
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
1 Jul 2026
Updated
1 Oct 2026

Overview

Stage0-raw autorun is an open-source printed circuit board by audiodestrukt, from the audiodestrukt/einhander repository on GitHub. It is a 4-layer board of 91 × 68 mm with 42 parts on 31 nets, routed with 516 tracks and 35 vias.

It is built around the RP2040, W25Q16JVSSIQ and AP2112K-3.3TRG1(MS), with the TYPE-C-31-M-12A, WS2812B-B-T-V6 and X322512MSB4SI among its other parts. Its parts include 14 capacitors, 8 switches, 3 ICs, 1 diode and 1 connector. It belongs with the RP2040 boards of this library.

Main components

6

README

README.md

einhander

A one-handed hardware controller for music performance and sequencing — MC-303-inspired, simplicity-first. Two rows of four key switches under the fingers, a thumbwheel + SHIFT on the side for the thumb, so the other hand stays free for sliders/faders.

This repo holds the code-driven design: a parametric enclosure (build123d) and a fabbable PCB (tscircuit → KiCad).

einhander enclosure — isometric render

What's here

text
cad/    parametric enclosure — build123d (machine_params.py = single source of truth),
        top/bottom shells + component stand-ins, assembly + dated render log
pcb/    RP2040 USB-MIDI controller board
          index.circuit.tsx        composes the board (flat, global nets)
          modules/                 mcu (RP2040+flash+xtal+decoupling), power (USB-C+LDO)
          lib/, imports/           shared params, custom Cherry-MX footprint, JLC parts
          scripts/                 route4.sh + the 4-layer routing toolchain
          index.circuit.kicad_pcb  routed 4-layer board
          fab/                     Gerbers + drill + CPL  (einhander-gerbers.zip → upload to JLCPCB)
pcb-rerun/  the same board re-routed unattended (2026-10-01) — 0 shorts, 2 open nets;
            found the DSN mirror bug behind pcb/'s hand patches (see pcb-rerun/README.md)

The board

  • RP2040, pure USB-MIDI controller (class-compliant, no drivers), wired USB-C
  • 8 MX key switches on direct GPIO; EC11 thumbwheel + SHIFT broken out to a header for a left-wall daughterboard; one WS2812 status LED; BOOTSEL/RESET
  • 4-layer: signals on outer layers, dedicated GND + 3V3 inner planes
  • DRC-clean, ~91 × 68 mm

Routed 4-layer PCB

Populated board (PCBA) with Cherry MX switches

Interactive 3D model of the populated board: pcb/renders/einhander-pcba.glb (open in any glTF viewer — Blender, VS Code glTF, or https://gltf-viewer.donmccurdy.com).

Fabricating it

Upload pcb/fab/einhander-gerbers.zip to JLCPCB (select 4 layers). For assembly, add pcb/fab/einhander-bom.csv (27 SMD parts, LCSC-mapped) + pcb/fab/einhander-cpl.csv (placement). MX switches, the EC11 thumbwheel, headers, and BOOT/RESET tactiles are hand-soldered (listed separately in einhander-handsolder.csv, kept out of the assembly BOM).

PCBWay uses the same einhander-gerbers.zip + einhander-cpl.csv, with einhander-bom-pcbway.csv (sources by manufacturer part number instead of LCSC). make_fab.sh emits both BOM formats. Regenerate the whole bundle with bash pcb/scripts/make_fab.sh pcb/index.circuit.kicad_pcb einhander.

Regenerating

bash
# enclosure
cd cad && python3 machine.py            # STLs + renders

# PCB (needs bun/tscircuit, KiCad 9, Freerouting v2.2.4 + JDK 25)
cd pcb && npm install
bash scripts/route4.sh                  # export → route (4-layer) → inject → DRC

Status

Enclosure prototype ✅ · Routed 4-layer PCB ✅ (fab-ready) · thumb-cluster daughterboard, RP2040 firmware (TinyUSB MIDI), and an enclosure↔board fit re-sync are next.


Designed with Claude Code.

Parts

42
QtyValueFootprintReferences
10100nFtscircuit:capacitor_0402C1, C2, C3, C4, C5, C6, C7, C10, C14, C15
8tscircuit:chipSW1, SW2, SW3, SW4, SW5, SW6, SW7, SW8
4tscircuit:hole_circle_holeDiameter2.4mm, , ,
215pFtscircuit:capacitor_0402C12, C13
21uFtscircuit:capacitor_0805C_IN, C_OUT
25.1kΩtscircuit:resistor_res0402R_CC1, R_CC2
1100nFtscircuit:capacitor_0805C_LED
110kΩtscircuit:resistor_res0402R_RUN
110uFtscircuit:capacitor_0805C11
11kΩtscircuit:resistor_res0402R_BOOT
11uFtscircuit:capacitor_0402C9
1AP2112K_3_3TRG1tscircuit:AP2112K_3_3TRG1U3
1J_THUMBtscircuit:pin_header_pinrow5J_THUMB
1RP2040tscircuit:RP2040U1
1SW_BOOTtscircuit:push_button_pushbuttonSW_BOOT
1SW_RSTtscircuit:push_button_pushbuttonSW_RST
1TYPE_C_31_M_12tscircuit:TYPE_C_31_M_12J1
1W25Q16JVSSIQtscircuit:W25Q16JVSSIQU2
1WS2812B_B_Ttscircuit:WS2812B_B_TD1
1X322512MSB4SItscircuit:X322512MSB4SIY1

Questions

How big is the Stage0-raw autorun PCB?

It measures 91 × 68 mm and has 4 copper layers, 1.6 mm thick.

What parts does the Stage0-raw autorun use?

42 parts, built around the RP2040, W25Q16JVSSIQ, AP2112K-3.3TRG1(MS) and TYPE-C-31-M-12A. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the Stage0-raw autorun KiCad files?

From the audiodestrukt/einhander repository on GitHub, at the commit this page was made from: the board is pcb-rerun/results/stage0-raw-autorun.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.

Can I use the Stage0-raw autorun design in my own project?

Its repository states no licence, so its author keeps all rights: ask audiodestrukt before reusing the design.

Similar boards

  • 4 layers56 × 88 mmLipo rp2040-display, the printed circuit board in 3D

    Lipo rp2040-display

    tscircuit/rp2040-lipo-charger

    Rechargeable RP2040 controller with USB-C, 1S LiPo charging, battery monitoring, and an OLED interface

    73 parts
  • 2 layers353.1 × 124.9 mmSkeleton68rev2, the printed circuit board in 3D

    Skeleton68rev2

    skeletonkbd/Frost68

    252 parts5
  • 2 layers54 × 25 mmRP2040 Template, the printed circuit board in 3D

    RP2040 Template

    elral/PCB_RP2040_Template

    This KiCad template contains a base RP2040 schematic and PCB layout. To use this template go to File > New Project From Template..., switch to the User Templates tab, then click the folder icon and navigate to this…

    34 parts2
  • 4 layers50 × 20 mmPicoarc, the printed circuit board in 3D

    Picoarc

    naorunaoru/picoarc

    Use your HDMI ARC capable soundbar with your computer

    72 parts1
  • 2 layers31 × 18 mmRP2040Micro, the printed circuit board in 3D

    RP2040Micro

    elral/PCB_RP2040Micro

    This Repo is deprecated. No further develpment will take place.

    39 parts
  • 2 layers92 × 122 mmCalc, the printed circuit board in 3D

    Calc

    JeffreyWangDev/Sum-Intro-Number-thing

    115 partsMIT
  • 4 layers67 × 83 mmApple peeler pcb, the printed circuit board in 3D

    Apple peeler pcb

    SIGPLAN-AV/apple-peeler

    HDMI MITM device aimed at supplying crafted EDID to make Apple sources behave

    138 parts
  • 2 layers96 × 99.9 mmHorizons Badges, the printed circuit board in 3D

    Horizons Badges

    Taran-the-Idiot/Horizons-Badges

    E-ink badges for Horizons Crux! Made in Kicad. They use 2.66" E-ink screens with an RP2040 mcu. And they are made in the shape of a mantaray :D

    58 partsMIT