Skip to the content
2 layers75 × 75 mmMk9-badge, the printed circuit board in 3D

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

7

README

README.md
text
___  ____     _____  ______           _            
|  \/  | |   |  _  | | ___ \         | |           
| .  . | | __| |_| | | |_/ / __ _  __| | __ _  ___ 
| |\/| | |/ /\____ | | ___ \/ _` |/ _` |/ _` |/ _ \
| |  | |   < .___/ / | |_/ / (_| | (_| | (_| |  __/
\_|  |_/_|\_\\____/  \____/ \__,_|\__,_|\__, |\___|
                                         __/ |     
                                        |___/      
-------------------------------------------------
D C Z I A  ----------  2 0 2 6

DCZia 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

text
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:

  1. Hold BOOTSEL while plugging the badge into your computer — it mounts as RPI-RP2.
  2. Drag the CircuitPython .uf2 onto the drive. It reboots as CIRCUITPY.
  3. Copy the lib/ folder contents to CIRCUITPY/lib/ (see software/README.md for the library list).
  4. Copy all .py files from software/ to the root of CIRCUITPY.

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.

Parts

92
QtyValueFootprintReferences
140.1uFCapacitor_SMD:C_0603_1608MetricC3, C5, C6, C8, C9, C10, C11, C12, C15, C16, C17, C18, C19, C20
11D_SchottkyDiode_SMD:D_SOD-123FD2, D3, D4, D5, D6, D7, D8, D9, D10, D11, D12
9SW_Pushlib_fp:CHERRY_SMDLED_100HSW4, SW5, SW6, SW7, SW8, SW9, SW10, SW11, SW12
9WS2812Blib_fp:LED_WS2812B_PLCC4_5.0x5.0mm_P3.2mm_UpdateD13, D14, D15, D16, D17, D18, D19, D20, D21
6SK6812lib_fp:LED_SK6812_4020D22, D23, D24, D25, D26, D27
41uFCapacitor_SMD:C_0603_1608MetricC4, C7, C13, C14
44.7kResistor_SMD:R_0603_1608MetricR10, R11, R12, R13
4FiducialFiducial:Fiducial_1mm_Mask2mmFID1, FID2, FID3, FID4
210kResistor_SMD:R_0603_1608MetricR6, R8
215pFCapacitor_SMD:C_0603_1608MetricC1, C2
21kResistor_SMD:R_0603_1608MetricR1, R7
227RResistor_SMD:R_0603_1608MetricR4, R5
25.1kResistor_SMD:R_0603_1608MetricR2, R3
2Badgelife_sao_connector_v169bislib_fp:Badgelife-Shitty-v1.69bisX1, X2
110RResistor_SMD:R_0603_1608MetricR9
1ABM8-272-T3Crystal:Crystal_SMD_Abracon_ABM8G-4Pin_3.2x2.5mmY1
1BATT+TestPoint:TestPoint_Pad_2.5x2.5mmTP5
1BATT-TestPoint:TestPoint_Pad_2.5x2.5mmTP6
1Boot SelectButton_Switch_SMD:SW_SPST_EVQP7CSW1
1GSDA213Package_LGA:Kionix_LGA-12_2x2mm_P0.5mm_LayoutBorder2x4yU1
1LED Power SelectJumper:SolderJumper-3_P1.3mm_Bridged2Bar12_RoundedPad1.0x1.5mmJP1
1LOGOlib_fp:silkG***
1LOGOlib_fp:maskG***
1LOGOlib_fp:copperG***
1LOGOlib_fp:vaporwave-dczia-testG***
1LOGOlib_fp:hamster-copperG***
1NCP115ASN330T2GPackage_TO_SOT_SMD:SOT-23-5U3
1RP2040Package_DFN_QFN:QFN-56-1EP_7x7mm_P0.4mm_EP3.2x3.2mmU2
1ResetButton_Switch_SMD:SW_SPST_EVQP7CSW3
1SP0503BAHTPackage_TO_SOT_SMD:SOT-23-3D1
1SW_SPDTlib_fp:SW_SPDT_CK-JS102011SAQNSW2
1USB-CConnector_USB:USB_C_Receptacle_HCTL_HC-TYPE-C-16P-01AJ1
1W25Q128JVSIMPackage_SO:SOIC-8_5.3x5.3mm_P1.27mmU4

Similar boards

  • 4 layers78 × 89 mmZbook, the printed circuit board in 3D

    Zbook

    VinnieT1/zbook

    170 parts
  • 4 layers48 × 84 mmFanControlHW, the printed circuit board in 3D

    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 mmRP2040 Test, the printed circuit board in 3D

    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 mmOmnicontroller, the printed circuit board in 3D

    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 mmLittolRP2040, the printed circuit board in 3D

    LittolRP2040

    baconspoon85/littol

    3 row 30% katakana with exploded spacebar

    81 parts4
  • 2 layers247.3 × 260.9 mmThumbsUp, the printed circuit board in 3D

    ThumbsUp

    ak66666/ThumbsUpV3Rp2040

    ThumbsUp! v3, a split version of the 4x12 Thumbs Up keyboard with RP2040

    156 parts
  • 2 layers250.9 × 280.9 mmThumbsUp, the printed circuit board in 3D

    ThumbsUp

    ak66666/ThumbsUpV3Rp2040MX

    Split version of the Thumbs Up keyboard with RP2040 for MX switches.

    172 parts
  • 4 layers81.2 × 50.7 mmPowerboard, the printed circuit board in 3D

    Powerboard

    jacobmealey/capstone

    UMaine ECE Capstone

    72 parts

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.