

Mk9-badge
dczia's defcon 34 badge
- Size
- 75 × 75 mm
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 92
- Nets
- 91
- Pads
- 346
- Tracks, vias
- 806, 84
- Pours
- 1
- Routed
- Yes
- KiCad
- KiCad 10.0 (file 20260206)
- Created
- 17 Jun 2026
- Updated
- 9 Jul 2026
Overview
Mk9-badge is an open-source printed circuit board by hamster, from the hamster/mk9-badge repository on GitHub. It is a 2-layer board of 75 × 75 mm with 92 parts on 91 nets, routed with 806 tracks and 84 vias.
It is built around the RP2040, W25Q128JVSIM and GSDA213, with the WS2812B, SK6812 and ABM8-272-T3 among its other parts. Its parts include 27 diodes, 20 capacitors, 13 resistors, 12 switches and 4 ICs. It belongs with the lEDs and displays boards and the RP2040 and NXP (LPC, Kinetis, i.MX RT) boards of this library.
Main components
7RP2040
LQFN-56(7x7)12bit 133MHz 30 LQFN-56(7x7) Microcontrollers (MCU/MPU/SOC) ROHSRaspberry PiMicrocontrollers (MCU/MPU/SOC)W25Q128JVSIM
SOIC-8-208mil-40℃~+85℃ 100,000 cycles 10uA 128Mbit 133MHz 2.7V~3.6V 20 Years 3ms SPI SOIC-8-208mil NOR FLASH ROHSWinbond ElecNOR FLASHGSDA213
LGA-12_2X2-40℃~+85℃ 1.62V~3.6V 14bit 700nA Accelerometer Motion event detection SPI、I2C X,Y,Z ±16g LGA-12_2X2 Accelerometers ROHSSuzhou Good-Ark ElecAccelerometersWS2812B
5mm X 5mm Surface Mount RGB LED with Intelligent ControlWorldsemiUncategorisedSK6812
SMD-4P,5.4x5mm-40℃~+85℃ 0.6mA 1.6mm 120° 160mcd~320mcd 1kHz 2000V 280mcd~515mcd 3.7V~5.5V 460nm~470nm 520nm~530nm 620nm~625nm 800Kbit/s 815mcd~1275mcd Built-in power-on reset circuit Semi-transparent lens SMD-4P,5.4x5mm RGB LEDs(Built-in IC) ROHSOPSCO OptoelectronicsRGB LEDs(Built-In IC)ABM8-272-T3
SMD3225-4P-40℃~+85℃ 10pF 12MHz 50Ω SMD crystal oscillator ±30ppm ±30ppm SMD3225-4P Crystals ROHSAbraconCrystalsSP0503BAHTG
SOT-143-55℃~+125℃ 10A@8/20us 14V 150W@8/20us 30pF、60pF 5.5V 6V 80nA ESD IEC 61000-4-2、IEC 61000-4-5、IEC 61000-4-4 Three channels Unidirectional SOT-143 ESD and Surge Protection (TVS/ESD) ROHSTECH PUBLICESD And Surge Protection (TVS/ESD)
README
README.md___ ____ _____ ______ _
| \/ | | | _ | | ___ \ | |
| . . | | __| |_| | | |_/ / __ _ __| | __ _ ___
| |\/| | |/ /\____ | | ___ \/ _` |/ _` |/ _` |/ _ \
| | | | < .___/ / | |_/ / (_| | (_| | (_| | __/
\_| |_/_|\_\\____/ \____/ \__,_|\__,_|\__, |\___|
__/ |
|___/
-------------------------------------------------
D C Z I A ---------- 2 0 2 6DCZia Presents: The MK9 Badge
It blinks. It types. You can wear it around your neck and then set it on your desk and actually use it*.
* Desk productivity not guaranteed. DCZia assumes no responsibility for keys accidentally sent during badge parties. Consult your keyboard layer documentation before operating heavy machinery.
About
The MK9 is a fully functional 3×3 mechanical macropad badge. Nine real mechanical switches, per-key RGB lighting, ambient underglow, an accelerometer that actually does something interesting, SAO support, and CircuitPython firmware out of the box — all in a package sized to hang around your neck at DEF CON and survive the week.
Specs
Keys
- 9× mechanical switches in a 3×3 grid — standard MX footprint, swap keycaps as you please
- Ships with translucent blue keycaps
- Full N-key rollover USB HID keyboard when plugged into a computer
Lighting
- 9× WS2812B per-key RGB LEDs — one under each switch
- 6× SK6812 side-firing LEDs — edge-mounted for ambient underglow out the sides
Brains & Sensors
- RP2040 microcontroller
- 3-axis accelerometer — tilt-reactive lighting, shake to change patterns
- 2× SAO connectors (standard 6-pin, I2C + 2 GPIO each) — expand with the badge add-on ecosystem
Power & I/O
- USB-C — power and data
- 3× AAA battery pack — run it untethered
- Power switch for battery mode
- Reset button + BOOTSEL button for easy firmware flashing
Firmware
- Ships with CircuitPython firmware
- QMK-compatible hardware — reflash and run it as a full QMK macropad
What It Does Out of the Box
On boot: a rainbow diagonal wipe sweeps across the keys and backlights. Any keypress skips it.
Once running:
- Background light patterns cycle across all 15 LEDs — rainbow wave, breathing pulse, or sparkle
- Pressing a key sends a colour ripple expanding outward from that key through all the LEDs
- Tilt the badge to shift the colour palette; shake it to switch patterns
- Plug into a computer and it shows up as a numpad (7–9 / 4–6 / 1–3 layout)
Repository
mk9-badge/
├── hardware/ — KiCad design files, BOM, fabrication outputs
└── software/ — CircuitPython firmware- Hardware → — schematics, PCB layout, drill files, BOM
- Software → — firmware architecture, pinout, library requirements, flashing instructions
Fabrication outputs:
Programming / Updating
The badge runs CircuitPython. To update the firmware:
- Hold BOOTSEL while plugging the badge into your computer — it mounts as
RPI-RP2. - Drag the CircuitPython
.uf2onto the drive. It reboots asCIRCUITPY. - Copy the
lib/folder contents toCIRCUITPY/lib/(see software/README.md for the library list). - Copy all
.pyfiles fromsoftware/to the root ofCIRCUITPY.
The badge restarts automatically. If it gets into a weird state, delete everything on CIRCUITPY and start fresh — it won't brick.
Want to run QMK instead? The hardware is fully compatible; QMK setup instructions will be posted separately.
Recommended IDEs: Visual Studio Code with the CircuitPython extension, or Thonny. A Commodore 64 with a serial adapter also works but is left as an exercise for the reader.
Open Source
DCZia is committed to open source hardware and software. All design files and firmware are publicly available.
- Live CAD (OnShape): View the design
Parts
92| Qty | Value | Footprint | References |
|---|---|---|---|
| 14 | 0.1uF | Capacitor_SMD:C_0603_1608Metric | C3, C5, C6, C8, C9, C10, C11, C12, C15, C16, C17, C18, C19, C20 |
| 11 | D_Schottky | Diode_SMD:D_SOD-123F | D2, D3, D4, D5, D6, D7, D8, D9, D10, D11, D12 |
| 9 | SW_Push | lib_fp:CHERRY_SMDLED_100H | SW4, SW5, SW6, SW7, SW8, SW9, SW10, SW11, SW12 |
| 9 | WS2812B | lib_fp:LED_WS2812B_PLCC4_5.0x5.0mm_P3.2mm_Update | D13, D14, D15, D16, D17, D18, D19, D20, D21 |
| 6 | SK6812 | lib_fp:LED_SK6812_4020 | D22, D23, D24, D25, D26, D27 |
| 4 | 1uF | Capacitor_SMD:C_0603_1608Metric | C4, C7, C13, C14 |
| 4 | 4.7k | Resistor_SMD:R_0603_1608Metric | R10, R11, R12, R13 |
| 4 | Fiducial | Fiducial:Fiducial_1mm_Mask2mm | FID1, FID2, FID3, FID4 |
| 2 | 10k | Resistor_SMD:R_0603_1608Metric | R6, R8 |
| 2 | 15pF | Capacitor_SMD:C_0603_1608Metric | C1, C2 |
| 2 | 1k | Resistor_SMD:R_0603_1608Metric | R1, R7 |
| 2 | 27R | Resistor_SMD:R_0603_1608Metric | R4, R5 |
| 2 | 5.1k | Resistor_SMD:R_0603_1608Metric | R2, R3 |
| 2 | Badgelife_sao_connector_v169bis | lib_fp:Badgelife-Shitty-v1.69bis | X1, X2 |
| 1 | 10R | Resistor_SMD:R_0603_1608Metric | R9 |
| 1 | ABM8-272-T3 | Crystal:Crystal_SMD_Abracon_ABM8G-4Pin_3.2x2.5mm | Y1 |
| 1 | BATT+ | TestPoint:TestPoint_Pad_2.5x2.5mm | TP5 |
| 1 | BATT- | TestPoint:TestPoint_Pad_2.5x2.5mm | TP6 |
| 1 | Boot Select | Button_Switch_SMD:SW_SPST_EVQP7C | SW1 |
| 1 | GSDA213 | Package_LGA:Kionix_LGA-12_2x2mm_P0.5mm_LayoutBorder2x4y | U1 |
| 1 | LED Power Select | Jumper:SolderJumper-3_P1.3mm_Bridged2Bar12_RoundedPad1.0x1.5mm | JP1 |
| 1 | LOGO | lib_fp:silk | G*** |
| 1 | LOGO | lib_fp:mask | G*** |
| 1 | LOGO | lib_fp:copper | G*** |
| 1 | LOGO | lib_fp:vaporwave-dczia-test | G*** |
| 1 | LOGO | lib_fp:hamster-copper | G*** |
| 1 | NCP115ASN330T2G | Package_TO_SOT_SMD:SOT-23-5 | U3 |
| 1 | RP2040 | Package_DFN_QFN:QFN-56-1EP_7x7mm_P0.4mm_EP3.2x3.2mm | U2 |
| 1 | Reset | Button_Switch_SMD:SW_SPST_EVQP7C | SW3 |
| 1 | SP0503BAHT | Package_TO_SOT_SMD:SOT-23-3 | D1 |
| 1 | SW_SPDT | lib_fp:SW_SPDT_CK-JS102011SAQN | SW2 |
| 1 | USB-C | Connector_USB:USB_C_Receptacle_HCTL_HC-TYPE-C-16P-01A | J1 |
| 1 | W25Q128JVSIM | Package_SO:SOIC-8_5.3x5.3mm_P1.27mm | U4 |
Similar boards
- 4 layers78 × 89 mm

- 4 layers48 × 84 mm

FanControlHW
mrspieb/HW-FanControl
Everything required to build the PCB and case of the ventilation fan controller
84 partsGPL-3.0 - 2 layers53.3 × 53.3 mm

RP2040 Test
PartialScience/Custom-RP2040-Dev-Board
First-PCB project: minimal RP2040 microcontroller dev board (W25Q128JV flash, 12 MHz crystal, NCP1117-3.3 LDO, micro-B USB). KiCad sources, BOM, and Inventor enclosure model.
34 partsMIT - 2 layers124.5 × 68.6 mm

Omnicontroller
rp958/omnicontroller
OmniController is an all-in-one controller designed with retrogaming solutions in mind.
53 partsCERN-OHL-S-2.0 - 2 layers209.6 × 66.7 mm

- 2 layers247.3 × 260.9 mm

ThumbsUp
ak66666/ThumbsUpV3Rp2040
ThumbsUp! v3, a split version of the 4x12 Thumbs Up keyboard with RP2040
156 parts - 2 layers250.9 × 280.9 mm

ThumbsUp
ak66666/ThumbsUpV3Rp2040MX
Split version of the Thumbs Up keyboard with RP2040 for MX switches.
172 parts - 4 layers81.2 × 50.7 mm

Questions
How big is the Mk9-badge PCB?
It measures 75 × 75 mm and has 2 copper layers, 1.6 mm thick.
What parts does the Mk9-badge use?
92 parts, built around the RP2040, W25Q128JVSIM, GSDA213 and WS2812B. 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 Mk9-badge KiCad files?
From the hamster/mk9-badge repository on GitHub, at the commit this page was made from: the board is hardware/mk9-badge.kicad_pcb and its schematic hardware/keys.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the Mk9-badge design in my own project?
Its repository states no licence, so its author keeps all rights: ask hamster before reusing the design.