Skip to content

ADB to USB converter

the converter

So a little backstory. I got an Apple m0116 (a variant of the m0116) my first mechanical keyboard. And yhea I was thinking I could just convert this through a regular PS2 to USB converter but no. Apple keyboards talk ADB through a mini-din 4 connector not AT through a mini-din 6.

But I knew there was a way to make a converter because Chyrosran22 shown it this video
So let's start searching!

Gathering information

The first thing I found was the TMK project.
This is the backbone for all my converters and it is amazing.
It even has an online editor where you can make a custom firmware without cloning anything.
In this link you will find the diagrams for the hardware.
And by following these instructions you can easily flash the firmware to the microcontroller.

From all this searching I found a few key things:
First the Apple keyboards used to talk ADB (Apple Desktop Bus) not the IBM AT protocol, and it is better in, so many ways like Daisy-chaining, one port for keyboard and mouse and hot swapping.
Second the Apple keyboards use the mini-din 4 connector.
mini-din 4 connector
Not the similar and more popular mini-din 6 connector.
mini-din 6 connector

credits to kbdbabel

Some useful sites that helped me in this process were:

Making the converter

Getting the firmware

I will simplify the process as much as I can.

First I went to the ADB to USB converter site and changed the keys until I got the layout that I currently have.
Because my keyboard is in Portuguese layout, but it's non-standard, so I had to make a matrix to find out which key should I change and to where.
I'll leave the link here.
Now I downloaded the file

Making the hardware

So I first followed the tutorial and got the teensy 2.0 because the Arduino pro-micro was not recommended.

I spent so much time trying to make that thing work you have no idea.

No matter what I did it did not program with the code and I couldn't do anything.
The most useful thing of that teensy was the box it came in...
And now that I see I think I got the last one, because they got discontinued in 2022
Eventually I quitted and just got an Arduino.

My friends it was so much better.

The guys ate TMK do not recommend the Arduino, but they have such a good support that I had an amazing success using it. Althou I do not agree on some details.

I only needed to be careful with the wiring and follow the datasheet because if you remember the diagrams said that the data pin connects to PD0 and in the Arduino PD0 is D3.

I'll leave the diagrams in here as well (credits)

Keyboard       Conveter  
               ,------.  
VCC---------+--|VCC   |
            |  |      |
            R  |      |
            |  |      |
DATA--------+--|PD0   |
               |      |
GND------------|GND   |
               `------'  

R: 1K Ohm resistor  

To flash the firmware I needed to short the RST and GND two times in short succession, and then I have 8 seconds to flash the firmware.
Flashing the firmware is simply running the line:

sudo avrdude -p atmega32u4 -P /dev/ttyACM0 -c avr109 -U flash:w:my_unimap.hex  

Replace my_unimap.hex with the name of the hex file you got in the previous step. The name of the port can be another one.
This kind of commands have more support on the Linux side of life.

From my experience with pro micro converters I got a lot of success using the ones that say that go from 3 to 15 V, have the 16MHz crystal and have the USB-C port.

And after all that I got this:

converter POC

This was the POC that I used for a long time. Some wires on a bread board.
After a few months I stole some prototype circuit boards from my SO, spend one afternoon drawing the best circuit:

circuit drawings

And the next afternoon making it:

front

back

top

bottom

This device works "well". I had a lot of problems with bad USB cables because they are all old. And I discovered while typing this that the ADB port on the right side of the keyboard works better than the one on the left side.
For some reason if I use the ABD port on the left side the keyboard starts having some weird behaviors like not responding, not registering some keys or registering too many keys (it even turned down my computer once). I used to solve it by disconnecting and reconnecting the converter.
On the right side it behaves as it should. No weird things.

Next steps

Now I want to use my SOs 3d printer to make a nice case for this converter. I already started modeling it but making life has other plans.

So until then this is all we got.

the final image





















All images

image image image image image image image image image image image image image image image image image image image image image image image image end