I have an old Apple keyboard that I would like to use but it uses the ADB bus instead of the newer USB bus. Griffin used to produce a product called the iMate which was an ADB-to-USB converter but have since discontinued it.

So I've decided to build one. It shouldn't be that difficult right?

pinouts.ru has the bus specs.

The pinouts are pretty straight forward:

Pin   Name  Description
-----------------------------
2    PSW   Power Switch
3    +5V   Power +5V
4    GND   Ground


How would I go about building something like this? Would I need to get a FTDI chip to do the interface?

Are you expecting it to act as a normal keyboard, or just as something that works with special software?

If you are using an Arduino (say) with an FTDI cable, it will act like a device talking over a serial port. You can send interpreted keypresses, and any application listening will see them. (You would probably be best off to use 'screen'). However, an application will not be listening to the serial port for keyboard input under normal conditions, and you may find yourself disappointed.

If you want it to pretend to be a USB keyboard, you'll need a chip in there that has a USB registration code as a keyboard device. (I don't remember the proper term; probably some sort of HID -- Human Interface Device -- thing.) In which case, the question, "I’d like to learn how to make my own USB gadgets" has some relevance to you.

If you are using a standard AVR chip, you can use the V-USB firmware to make it talk like a USB device. See their examples of human input devices.

Alternatively, you could use an AT90USBKey and check out their USB Keyboard Demonstration [pdf]. Bumble-B sounds somewhat similar.

• yes I want it to act like a normal keyboard. Nov 13 '09 at 5:49

The Apple Desktop Bus is well documented on Apple's website (http://developer.apple.com/legacy/mac/library/technotes/hw/hw_01.html). It's a single wire communications bus - the other wires are for power and ground, and the computer polls the devices continuously for data after an initial setup period.

It would be relatively straightforward to do this with a variety of microcontrollers, and most USB capable microcontroller manufacturers have at least one application note on how to make a keyboard HID device (ie, USB keyboard).

Microchip's app note TB056 has a PS2 to USB keyboard adaptor. Replace all the PS2 code and circuit interface with ADB code and interface, and you should be able to accomplish exactly what you need without a great deal of effort.

http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1824&appnote=en011984 is the current page for that app note, but if the link stops working you can search for TB056 and find it.

If you want it to behave like a USB keyboard, you're going to have to have a microcontroller that translates between the ADB protocol and the USB protocol, and which implements the keyboard profile for the HID class.