Skip to the content
PCBKitNew board
4 layers51.1 × 94 mmDas4-controller, the printed circuit board in 3D

Open-source RP2350B replacement controller board for the Das Keyboard 4 Professional (KiCad 10)

Size
51.1 × 94 mm
Copper layers
4
Thickness
1.6 mm
Parts
83
Nets
73
Pads
335
Tracks, vias
921, 457
Pours
11
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
24 Sep 2026
Updated
29 Sep 2026

Overview

Das4-controller is an open-source printed circuit board by brandonrc, from the brandonrc/das4-controller repository on GitHub, published under the MIT licence. It is a 4-layer board of 51.1 × 94 mm with 83 parts on 73 nets, routed with 921 tracks and 457 vias.

It is built around the RP2350B, W25Q128JVSIQ and CH334R, with the ME6211C33M5G-N and EC12E24204A2 among its other parts. Its parts include 37 capacitors, 10 resistors, 7 switches, 4 ICs and 4 connectors. It belongs with the keyboards and input boards and the RP2350 boards of this library.

Main components

5

README

README.md

das4-controller

An open-source replacement controller board for the Das Keyboard 4 Professional: same outline, same holes, same connectors, but with an RP2350B you can flash with your own firmware (pico-sdk today, KMK/CircuitPython, QMK once it supports the RP2350B). It keeps the two USB-A ports (as a USB 2.0 hub), the volume knob, the NUM/CAPS/SCROLL LEDs (now RGB, any colour) and the five buttons. Every button gets its own GPIO, so you can make them do whatever you like.

Status: ready to order after a final 1:1 fit print. Routed, DRC clean (0 unconnected, 0 real violations), with independent circuit and layout reviews, a check against Raspberry Pi's RP2350 design guide, and a firmware build for this pinout. See docs/plan.md.

3D render

TopBottom
topbottom

Docs

Layout

text
hardware/
  circuit/das4.py                          the circuit (SKiDL)
  das4-controller.net                      netlist generated from it
  das4-controller.kicad_pro / .kicad_pcb   KiCad 10 project (board generated from the netlist)
  lib/jlc.*                                JLCPCB part symbols, footprints and 3D models (easyeda2kicad)
  lib/das4.pretty                          our own footprints (J4 flex solder pads)
  scripts/gen_board.py                     outline, measured positions, placement, silkscreen
  scripts/critical.py                      hand-drawn critical nets + keep-outs (RP2350 regulator, USB pair, crystal...)
  scripts/route.py, route_best.py          autorouting (Freerouting) + cleanup + GND stitching, best of 6 runs
  scripts/pretest.py, check_layout.py      pre-route DRC of the hand layout; post-route checks
  scripts/jlc_fab.py                       JLCPCB gerber zip, BOM and CPL
  scripts/jlc.py                           search JLCPCB's parts library (no login)
  scripts/bom.py                           docs/bom.md with live stock
docs/                                      notes, plan, reviews, renders, fit-check print
firmware/bringup/                          pico-sdk + TinyUSB bring-up firmware for this pinout

Building

The tools come from the KiBot/KiCad container ghcr.io/inti-cmnb/kicad10_auto_full, which is also what CI runs.

sh
# one-time: create the container
distrobox create --name pcb --image ghcr.io/inti-cmnb/kicad10_auto_full:1.9.1-1_k10.0.5_d13.2_b4.2.4LTS

distrobox enter pcb -- make pretest       # quick DRC of just the hand layout (run before routing)
distrobox enter pcb -- make board route   # circuit -> netlist -> placed board -> autorouted (~25 min)
distrobox enter pcb -- make check         # post-route checks DRC can't do
distrobox enter pcb -- make docs drc fab  # renders, fit-check PDF, DRC, JLCPCB files (don't rebuild the board)
distrobox enter pcb -- make bom      # refresh docs/bom.md with live JLCPCB stock

Or use Docker directly: docker run --rm -v $PWD:/w -w /w ghcr.io/inti-cmnb/kicad10_auto_full:1.9.1-1_k10.0.5_d13.2_b4.2.4LTS make.

Open hardware/das4-controller.kicad_pro in KiCad 10 to look around.

Note: the board file is generated: make board rebuilds it (unrouted) from the circuit and gen_board.py, and make route routes it. Edit those, not the .kicad_pcb, or your changes get overwritten.

Ordering (JLCPCB)

sh
distrobox enter pcb -- make fab     # -> build/jlcpcb/: gerber zip, bom.csv, cpl.csv
  1. On jlcpcb.com upload the gerber zip. Pick 4 layers, 1.6 mm, and the JLC04161H-7628 stackup with impedance control.
  2. Enable PCB Assembly (top side), upload bom.csv and cpl.csv, and check the placement preview: rotations, and L1's white dot on the +1V1 pad next to C165 (details in docs/design.md).
  3. Order the "You solder" parts in docs/bom.md from LCSC (they can ship together).

make fab names the zip ...-UNROUTED-quote-only if the board has no traces yet.

License

MIT, see LICENSE. Not affiliated with Das Keyboard / Metadot.

Parts

83
QtyValueFootprintReferences
22100nC_0402_1005MetricC10, C12, C105, C110, C115, C124, C129, C132, C141, C150, C151, C159, C160, C168, C169, C176 +6
10TestPointTestPoint_Pad_D1.5mmTP1, TP2, TP3, TP4, TP5, TP6, TP7, TP8, TP9, TP10
510uC_0603_1608MetricC3, C4, C5, C8, C190
41kR_0402_1005MetricR10, R231, R302, R303
44.7uC_0402_1005MetricC161, C164, C165, C166
322uC_0805_2012MetricC1, C9, C11
3MountingHole_2.7mm_M2.5MountingHole_2.7mm_M2.5H1, H2, H3
212MHzCRYSTAL-SMD_4P-L3.2-W2.5-BLY1, Y2
215pC_0402_1005MetricC230, C231
222R_0402_1005MetricR266, R267
25.1kR_0402_1005MetricR1, R2
110kR_0402_1005MetricR301
11uC_0402_1005MetricC6
12N7002SOT-23-3_L2.9-W1.3-P1.90-LS2.4-BRQ1
13.3uHIND-SMD_L2.0-W1.6_AOTA-B201610S3R3-101-TL1
133R_0402_1005MetricR161
1BOOTSELSW-SMD_4P-L5.1-W5.1-P3.70-LS6.5-TL_H1.5SW6
1Button 1SW-SMD_4P-L6.0-W6.0-P4.50-LS9.0_H5.0SW1
1Button 2SW-SMD_4P-L6.0-W6.0-P4.50-LS9.0_H5.0SW2
1Button 3SW-SMD_4P-L6.0-W6.0-P4.50-LS9.0_H5.0SW3
1Button 4SW-SMD_4P-L6.0-W6.0-P4.50-LS9.0_H5.0SW4
1Button 5SW-SMD_4P-L6.0-W6.0-P4.50-LS9.0_H5.0SW5
1CAPS (RGB)LED-TH_4P-BD5.8-P1.27_WS2812D-F5-12MA-C1D2
1CH334RQSOP-16_L4.9-W3.9-P0.64-LS6.0-BLU2
1EC12E24204A2SW-TH_EC12E24204A2ENC1
1Key matrix flexFPC_Solder_1x26_P1.00mmJ4
1ME6211C33M5G-NSOT-23-5_L3.0-W1.7-P0.95-LS2.8-BLU4
1NUM (RGB)LED-TH_4P-BD5.8-P1.27_WS2812D-F5-12MA-C1D1
1RESETSW-SMD_4P-L5.1-W5.1-P3.70-LS6.5-TL_H1.5SW7
1RP2350BQFN-80_L10.0-W10.0-P0.40-TL-EP3.4U1
1SCROLL (RGB)LED-TH_4P-BD5.8-P1.27_WS2812D-F5-12MA-C1D3
1USB-A 1USB-A-TH_AF-WJDGJ2
1USB-A 2USB-A-TH_AF-WJDGJ3
1USB-CUSB-C_SMD-TYPE-C-31-M-12_1J1
1W25Q128JVSSOIC-8_L5.3-W5.3-P1.27-LS8.0-BLU3

Questions

How big is the Das4-controller PCB?

It measures 51.1 × 94 mm and has 4 copper layers, 1.6 mm thick.

What parts does the Das4-controller use?

83 parts, built around the RP2350B, W25Q128JVSIQ, CH334R and ME6211C33M5G-N. 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 Das4-controller KiCad files?

From the brandonrc/das4-controller repository on GitHub, at the commit this page was made from: the board is hardware/das4-controller.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.

Can I use the Das4-controller design in my own project?

Its repository publishes it under the MIT licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).

Similar boards

  • 2 layersSmartEggTimer, the printed circuit board in 3D

    SmartEggTimer

    meierh/Embedded_System_Hands_On_I

    All files related to the group project can be found in the Project folder. It contains the following parts of our project:

    66 parts
  • 4 layers100 × 100 mmCarradio peripheral rev05, the printed circuit board in 3D

    Carradio peripheral rev05

    gschuurman/android_vendor_gschuurman_vehicle_interfaces

    vehicle interfaces for android automotive for a custom headunit

    211 parts
  • 4 layers51 × 21 mmNyx, the printed circuit board in 3D

    Nyx

    rh1tech/frank

    RP2350 Based Hardware Emulation Platform

    54 parts66GPL-3.0
  • 4 layers53.3 × 85.1 mmHUB75-FPGA Card, the printed circuit board in 3D

    HUB75-FPGA Card

    will-hut/Prototypical

    A USB FPGA-based Hub75 LED matrix driver

    132 parts2
  • 4 layers32 × 74 mmFrankless, the printed circuit board in 3D

    Frankless

    arlaneenalra/pi-pico-boards

    A place to keep various pi-pico-board experiments

    124 parts
  • 2 layers149.1 × 134.5 mmDecentNumPad, the printed circuit board in 3D

    DecentNumPad

    bleroy/3d-junkyard

    Random 3D models

    187 parts69
  • 4 layers79.5 × 64.5 mmRP2350 Duel, the printed circuit board in 3D

    RP2350 Duel

    OpenStickCommunity/Hardware

    A collection of hardware designs by members of the OpenStickCommunity

    45 parts338