Skip to the content
PCBKitNew board
2 layers150 × 38 mmModelk, the printed circuit board in 3D

Modelk: BLE Wireless IBM Model M Replacement Controller

Size
150 × 38 mm
Copper layers
2
Thickness
1.6 mm
Parts
52
Nets
72
Pads
196
Tracks, vias
278, 0
Pours
169
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
26 Jun 2025
Updated
25 Oct 2025

Overview

Modelk is an open-source printed circuit board by 3top1a, from the 3top1a/modelk repository on GitHub. It is a 2-layer board of 150 × 38 mm with 52 parts on 72 nets, routed with 278 tracks and 0 vias.

It is built around the 74HC595. Its parts include 20 diodes, 8 connectors, 4 ICs, 3 resistors and 1 switch. It belongs with the keyboards and input and radio and wireless boards and the nRF52 and nRF5x boards of this library.

Main components

1

README

README.md

meta/splash.png Render may be of an outdated version, the images below are from a CI/CD render and are always up-to-date. Only compatible with nice!nano, other MCUs won't work

Modelk is a custom replacement controller designed to add wireless Bluetooth Low Energy functionality to classic IBM Model M keyboards. This drop-in controller lets you convert your vintage buckling spring keyboard to wireless without permanent modification, preserving the original controller.

Features

  • Fully wireless with BLE (Bluetooth Low Energy)
  • Battery powered with 3+ weeks of battery life1
  • USB C for drag-and-drop programming, charging and wired use
  • Compatible with IBM Model M 101/102 layouts (122-key compatibility uncertain as I do not own one yet)2
  • Open source ZMK firmware, with CI/CD builds
  • Works as a shield for the nice!nano, built on top of the Nordic nRF52840
  • All components are THT and easy to solder/repair/replace
  • Three high-frequency user-configurable pins for your solenoid/speaker desires

Hardware

PCB

The PCB is designed in KiCad 9. This repository has a CI/CD pipeline that automatically renders the schematic into a PDF/SVG and generates gerbers for JLCPCB and PCBWAY.

Components

See the automatically generated iBOM (you will need to download the .html file and open it in your browser for now).

For a full assembly, you will need:

  • 1x Modelk PCB
  • 2x 74HC595 shift register ICs, preferably with DIP-16 sockets (three for M122s)
  • 3x 150R resistors for the LEDs (if you have any)
  • 16x 1N4148 diodes (20 for M122s)
  • 1x 6x3mm reset switch (GME for reference)
  • 1x battery and its corresponding connector (on board is JST-PH 2mm and a 2.54mm pin header for power profiling)
  • PCB Faston mount (GME for reference)
  • Appropriate Trio-mate or Connfly connectors
  • 1x nice!nano with Mill Max low profile sockets

Your keyboard might contain 16+12 or 16+8+4 connectors, make sure you order the ones you need! The board supports both of them.

Equipment

You will need:

  • A Temperature-controlled soldering iron
  • Some Electronics-grade solder
  • Fume extraction or well-ventilated area
  • A multimeter for troubleshooting
  • Isopropyl alcohol for cleaning
  • Kapton tape for securing the battery

Assembly

Start with a blank PCB and solder the 16 pin connector.

First picture of assembly, Modelk PCB on the bottom with one connector soldered and the original controller on top

On the bottom you can see the board I am assembling (revision 0.10), and on the top you can see the original controller that came with my keyboard. Because I am using Connfly connectors and not the original TE Trio-mate, I need to rotate them 180° as they work differently.

[!IMPORTANT] If you are using Connfly connectors, make sure to rotate them 180°! This sounds counter-intuitive, but your board will not work otherwise!

Second picture of assembly, Modelk PCB on the bottom with all connectors soldered and the original controller on top

As my keyboard comes with 16+8+4 connectors, I will solder the appropriate connectors, also rotated just like the 16 pin one.

Third picture of assembly, with diodes soldered

Next up are the diodes, as I have a 101-key keyboard, I will only populate the 16 left-most diodes. Pay attention to the orientation of the diodes, the black strip has to be on top, as indicated on the silkscreen.

Fourth picture of assembly, with IC sockets soldered

Then the IC sockets, orientation again indicated on the silkscreen (don't forget to populate them!)

Fifth picture of assembly, with resistors, the reset switch, grounding Faston mount and battery connector soldered

I will skip a bit here, and solder (from left to right) the Faston grounding mount, reset switch, battery connector and resistors. Just be careful soldering the Faston mount, it will get hot.

[!CAUTION] Quadruple check the orientation of the battery connector! The nice!nano doesn't have reverse polarity protection and you will destroy it otherwise.

All that is left is to solder the low profile sockets, solder pins to the nice!nano (see official guide), and populate the ICs.

Final picture with finished board on the bottom, a previous iteration in the middle and original controller on top

Here you can see the finished board (without ICs, I forgot and spent 10 minutes debugging SPI because of it), a previous iteration (revision 0.3.1) and the original controller.

Modelk controller inside a Model M keyboard

Now you just need to put it into the keyboard, secure the battery with kapton tape, and mount the original grounding wire.

Software

For now, see the modelk-zmk repository for the ZMK firmware. Might get merged into this repository.

Installation:

  • Download firmware from the modelk-zmk CI/CD builds (or click here for the latest firmware)
  • Connect your nice!nano via USB
  • Double-tap the reset button to enter bootloader mode (the little blue light should stay on)
  • Your computer will detect a USB drive
  • Drag and drop the firmware file (.uf2) onto this drive
  • The nice!nano will disconect itself once the process is complete
  • Enjoy a working wireless Model M!

By default, right alt switches to a function layer, where escape toggles USB/BT and F1-F3 toggles BT profiles, F4 clears the current BT profile, F6-F8 controls multimedia, Print Screen unlocks ZMK Studio and Pause reboots into bootloader for updating firmware. You can, of course, completely redesign the layout.

Credits

Huge kudos go to John Hawthorn for his Model H controller that inspired this project. This repo started as a fork, but now doesn't share any files.

Footnotes

  1. currently ~3 weeks on a 400mAh battery with revision 0.3.1, will be better on newer boards ↩

  2. Tested on: 1386716 ↩

Parts

52
QtyValueFootprintReferences
20D_SmallLibrary:DO-35 smallerD1, D2, D3, D4, D5, D10, D11, D12, D13, D14, D15, D16, D17, D18, D19, D20 +4
4G***kibuzzard-684FF45Fkibuzzard-684FF45F, kibuzzard-684FF45F, kibuzzard-684FF45F, kibuzzard-684FF45F
3150Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR1, R2, R3
374HC595Library:DIP-16-74HC595U2, U3, U4
3G***kibuzzard-684FF466kibuzzard-684FF466, kibuzzard-684FF466, kibuzzard-684FF466
2FrontLibrary:Hole 3.5mmH3, H4
2StandMountingHole:MountingHole_4mm_Pad_ViaH1, H2
1Conn_01x04Library:ffc-leds4J5
1Conn_01x08Library:ffc-rows8J6
1Conn_01x12Library:ffc-rows12J4
1Conn_01x20Library:ffc-cols20J2
1Dupont for power profilingLibrary:BatteryHeaderJ8
1Faston PCB mountLibrary:faston-mountJ7
1G***kibuzzard-684FF5A3kibuzzard-684FF5A3
1JST-PH connectorConnector_JST:JST_PH_B3B-PH-K_1x03_P2.00mm_VerticalJ1
1LOGOLibrary:LOGO-QRG***
1LOGOLibrary:frG***
1SW_resetButton_Switch_THT:SW_PUSH_1P1T_6x3.5mm_H4.3_APEM_MJTP1243SW1
1User exposedConnector_PinHeader_2.54mm:PinHeader_1x05_P2.54mm_VerticalJ3
1nice_nanoLibrary:nice_nanoU1

The 50 most common of 52 parts.

Questions

How big is the Modelk PCB?

It measures 150 × 38 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Modelk use?

52 parts, built around the 74HC595. 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 Modelk KiCad files?

From the 3top1a/modelk repository on GitHub, at the commit this page was made from: the board is pcb/modelk.kicad_pcb and its schematic pcb/modelk.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Modelk design in my own project?

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

Similar boards

  • 2 layers45.7 × 31.8 mmLEDx16 board, the printed circuit board in 3D

    LEDx16 board

    tardate/LittleArduinoProjects

    a collection of "Little Electronic & Arduino Projects", most involving electronics or an Arduino in one way or another!

    36 parts803MIT
  • 2 layers228.6 × 100 mmMongus48, the printed circuit board in 3D

    Mongus48

    ChrisChrisLoLo/beyblock20

    The magnetic, modular, 20-key macropad that can join together to form an ortholinear board

    124 parts335GPL-3.0
  • 2 layers245.1 × 160 mm8-Bit CPU 32k, the printed circuit board in 3D

    8-Bit CPU 32k

    slu4coder/Minimal-64x4-Home-Computer

    My DIY TTL home computer with VGA and PS/2 and 4x the processing power of a Commodore C64 or Apple II.

    139 parts326
  • 2 layers100 × 95.1 mmProtoboard-6x4-breakout, the printed circuit board in 3D

    Protoboard-6x4-breakout

    electroniceel/protoboard

    Advanced protoboard layout with 1.27mm pitch for smd parts

    4,745 parts311CC-BY-4.0
  • 4 layers140 × 100 mmDc usv, the printed circuit board in 3D

    Dc usv

    TobleMiner/DC-UPS

    A small DC UPS, designed to keep small appliances like consumer network equipment running during power outages

    351 parts223CERN-OHL-P-2.0
  • 2 layers100.5 × 218.3 mmTraktorino, the printed circuit board in 3D

    Traktorino

    silveirago/traktorino

    The open-source DIY MIDI Controller for DJs.

    96 parts220
  • 2 layers287.8 × 126.7 mmNoName, the printed circuit board in 3D

    NoName

    AlaaSaadAbdo/battoota

    Keyboards

    267 parts188
  • 2 layers100 × 100 mmTommyPROM32-595, the printed circuit board in 3D

    TommyPROM32-595

    TomNisbet/TommyPROM

    Simple Arduino-based EEPROM programmer

    36 parts187