Skip to the content
PCBKitNew board
2 layers171 × 50.5 mmCtrl M, the printed circuit board in 3D

Replacement controller for the famous IBM Model M keyboard based on the STM32F072 microcontroller. Supported by QMK.

Size
171 × 50.5 mm
Copper layers
2
Thickness
1.6 mm
Parts
39
Nets
51
Pads
168
Tracks, vias
445, 52
Pours
1
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
24 Mar 2021
Updated
12 Feb 2026

Overview

Ctrl M is an open-source printed circuit board by nuess0r, from the nuess0r/ctrl-M repository on GitHub. It is a 2-layer board of 171 × 50.5 mm with 39 parts on 51 nets, routed with 445 tracks and 52 vias.

It is built around the STM32F072CBT6, USBLC6-2SC6 and XC6206P332PR. Its parts include 13 connectors, 8 capacitors, 4 resistors, 3 ICs and 1 switch. It belongs with the keyboards and input boards and the STM32 boards of this library.

Main components

3

README

README.md

Ctrl M Controller for Model M

ctrl-m

This is a replacement controller for the famous IBM Model M keyboard based on the STM32F072 microcontroller. Goal is to get it upstream in QMK.

Work in progress, prototypes are working in Model M from 1989, there is a bug for the version from 1986 and test for other variants are outstanding.

Hardware

Controller based on a STM32F072 chip and designed with KiCAD.

To make the controller as flexible as possible there are four possible LED and earth cable connectors. Also the PCB can be cut into a smaller variant that fits the later IBM/Lexmark variant.

The four LED connector variants are:

text
J8 is a 12 pin connector is mounted for J8 for both LED and keyboard
J8 is a 8 pin connector and J9 is a 4 pin connector
J8 is a 8 pin connector and J12 is a 4 pin connector
J8 is a 8 pin connector and J10 is a 4 pin header

https://github.com/nuess0r/ctrl-M

To fill the gab between the USB connector and the case and also to make it easier to press the bootloader button a small plastic part (button_lever.amf) was designed with FreeCAD that can be 3D printed.

Software

https://github.com/nuess0r/qmk_firmware/tree/ctrl_m/keyboards/ctrl_m

Assembly Instructions

https://brain4free.org/wiki/doku.php/elektronik:ctrl_m#assembly_instructions

Parts

39
QtyValueFootprintReferences
5100nCapacitor_SMD:C_0603_1608MetricC2, C4, C5, C6, C7
4Conn_01x01Connector_Blade:Blade_6.3mm_HorizontalJ3, J4, J5, J6
3120Resistor_SMD:R_0603_1608MetricR2, R3, R4
3Fiducial_0.75mm_Mask1.5mmFiducial:Fiducial_0.75mm_Mask1.5mmREF1, REF2, REF3
24.7uCapacitor_SMD:C_0805_2012MetricC1, C3
2Conn_01x04Connector_FPC_2.54mm:TE_5-520315-4_1x04_P2.54mm_VerticalJ9, J12
2MountingHoleMountingHole:MountingHole_4mm_PadH3, H4
2MountingHole_PadMountingHole:MountingHole_3.2mm_M3_PadH1, H2
110nCapacitor_SMD:C_0603_1608MetricC8
11kResistor_SMD:R_0603_1608MetricR1
1Conn_01x04Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_HorizontalJ10
1Conn_01x05Connector_PinHeader_2.54mm:PinHeader_1x05_P2.54mm_VerticalJ11
1Conn_01x08Connector_PinHeader_2.54mm:PinHeader_1x08_P2.54mm_VerticalJ13
1Conn_01x12Connector_FPC_2.54mm:TE_6-520315-2_1x12_P2.54mm_VerticalJ8
1Conn_01x16Connector_FPC_2.54mm:TE_6-520315-6_1x16_P2.54mm_VerticalJ7
1Conn_ARM_JTAG_SWD_10Connector_PinHeader_1.27mm:PinHeader_2x05_P1.27mm_VerticalJ2
1MountingHoleMountingHole:MountingHole_2.1mmH5
1STM32F072CBT6Package_QFP:LQFP-48_7x7mm_P0.5mmU3
1SW_PushButton_Switch_THT_narrow:SW_SPST_UK_B0205-G4.3-B-250SW1
1USBLC6-2SC6Package_TO_SOT_SMD:SOT-23-6U1
1USB_BConnector_USB:USB_B_OST_USB-B1HSxx_HorizontalJ1
1XC6206P332PRPackage_TO_SOT_SMD:SOT-89-3U2

The 37 most common of 39 parts.

Questions

How big is the Ctrl M PCB?

It measures 171 × 50.5 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Ctrl M use?

39 parts, built around the STM32F072CBT6, USBLC6-2SC6 and XC6206P332PR. 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 Ctrl M KiCad files?

From the nuess0r/ctrl-M repository on GitHub, at the commit this page was made from: the board is ctrl-m.kicad_pcb and its schematic ctrl-m.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Ctrl M design in my own project?

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

Similar boards

  • 4 layers192 × 48 mmCz19-badge, the printed circuit board in 3D

    Cz19-badge

    hackzone/cz19-badge

    Event badge for CampZone 2019

    341 parts6MIT
  • 2 layers80.2 × 106.3 mmEcsc21-badge, the printed circuit board in 3D

    Ecsc21-badge

    badgeteam/ecsc21-badge-public

    Hardware design files for the ENISA ECSC21 badge (software coming later)

    84 parts1MIT
  • 2 layers100 × 100 mmTouchtron, the printed circuit board in 3D

    Touchtron

    lynaghk/touchtron

    Rust touchpad / usb experiments

    120 parts21
  • 2 layers391.2 × 166.5 mmTakt11800, the printed circuit board in 3D

    Takt11800

    vuckale/takt11800

    Replacement PCB for Cherry G80 11800/Compaq MX 11800 keyboard using QMK firmware and VIA

    284 parts12CERN-OHL-S-2.0
  • 4 layers228.2 × 80.6 mmSnake pcb, the printed circuit board in 3D

    Snake pcb

    1000eyed/snake

    Repository for snake keyboard

    199 parts6
  • 4 layers100 × 50 mmChronolog, the printed circuit board in 3D

    Chronolog

    slemanz/chronolog

    STM32-based temperature data logger with RTC, NOR flash storage, LCD and Wi-Fi. Hardware and firmware.

    95 parts5
  • 2 layers216 × 100.5 mmMXLP V4N, the printed circuit board in 3D

    MXLP V4N

    DashDashUnderscoreDash/CMLV4N-PCB

    12u V4N style Cherry ML 40% keyboard

    122 parts2BSD-3-Clause
  • 2 layers50 × 18 mmMajestouch stm32, the printed circuit board in 3D

    Majestouch stm32

    mbtech-nl/majestouch-stm32

    Drop-in replacement controller for the full-size Filco Majestouch: STM32F072, QMK with NKRO over USB. KiCad 9 board, hand-solderable.

    20 parts2MIT