Converting Amiga keyboards to USB

  • June 14, 2021

Wouldn’t it be cool to use a big-box Amiga keyboard, such as one for the A3000 or even a CDTV keyboard, with a modern computer using USB? Maybe even use it with a next-generation Amiga, like a Pegasos II running AmigaOS 4.1 FE? Well, that’s exactly what I did, and it works great. In fact, I’ve currently plugged in a CDTV keyboard into my headless Synergy server’s USB port, along with a mouse, to share a single mouse and keyboard across multiple machines; namely, an Amiga 1000 and a couple of Pegasos II systems running AmigaOS 4.1 FE and MorphOS.

The project uses a Teensy microcontroller (specifically a Teensy 2.0, though any Teensy with an ATmega32U4 or similar MCU with native USB support will work) to interface with Amiga keyboards and present them as standard USB HID devices to modern computers.

Yaduinos PCB render

One of the most desirable Amiga keyboards, the black Amiga CDTV keyboard working with a Pegasos II running AmigaOS 4.1 FE.

Tested Hardware

I’ve successfully tested this conversion with:

  • Amiga 3000 keyboard (Model: KKQ-E94YC)
  • Amiga CDTV keyboard (Model: KKQ-E96YC)

While I haven’t personally tested it with an Amiga 2000 keyboard, the project should work with it as well, since it shares the same connector pinout as the Amiga 3000.

Connection Guide
Yaduinos PCB render

Amiga 2000/3000 keyboard male connector pinout.

The wiring is straightforward, requiring just four connections.

I’d suggest using a DIN 5 to PS/2 adapter to connect the keyboard to the Teensy. Cut off the PS/2 connector, check continuity between the exposed wires and the female DIN 5 end to figure out which wire is which, then connect as follows:

  1. Ground + shield wire → Teensy Ground
  2. 5V → Teensy 5V
  3. Clock → Teensy pin F6
  4. Data → Teensy pin F7
Technical Details
Yaduinos PCB render

Since I didn’t have a signal analyzer at the time of this project and this isn’t particularly high speed, I used an oscilloscope to peek at the signal.

The project works by interpreting the Amiga keyboard’s protocol, which uses active-low signaling - meaning the signals are at 5V for a logical 0 and 0V for a logical 1. Each keystroke transmission consists of:

  • An initial handshake pulse from the Teensy
  • A byte containing:
    • 7 bits for the key code
    • 1 bit for key press/release status
Source Code

The complete source code and documentation for this project are available on GitHub. The project is open source and released under the MIT license, allowing anyone to use, modify, and distribute the code freely.

comments powered by Disqus

Related Posts

~/blog/2019-12-23-headless-synergy-se...
2019-12-23
#synergy #headless #setup #linux #macos #windows #amiga

Headless Synergy setup using an OrangePiZero

If you’re like me and have a collection of retro machines that only support the Synergy client, not the server, and you don’t want to run a Synergy server on a bulky machine (or simply don’t have one nearby), then a headless Synergy server on a tiny SBC like the OrangePiZero or a Raspberry Pi is the perfect solution. It’s a slick setup that lets you share a single mouse and keyboard across all your machines with ease.

Read more