IBM 6110344 Keyboard: Controller Replacement
The IBM 6110344 keyboard is moderately PC-compatible with a cable swap or a suitable adaptor. However, some things aren't terribly convenient:
- When the keyboard is reset, it sends its ID; this confuses Windows' keyboard driver terribly.
- By default, keys don't send key-up codes. This means the keyboard can't be used through a USB adaptor.
- The keyboard uses Scancode Set 3, not Set 2.
As it happens, the 6110344 (and presumably other 122-key Model F keyboards like the 6110668) uses the same controller circuit as the 84-key Model F, which is completely PC-compatible. So, one technique to improve compatibility, at least on the first two points, would be to use a custom firmware (based on the one in the 84-key F) in the 122-key F.
Note that this procedure will not work with an 83-key XT model F keyboard; it has a different controller circuit and key matrix.
You will need
- A soldering iron.
- Desolder braid.
- Nutdrivers — 9/32in for the keyboard case, 1/4in for the controller PCB.
- An EPROM programmer that can write a D8748 (or a D8749, if you're feeling adventurous).
- A blank D8748 (or D8749), and perhaps a spare for luck.
- A 40-pin DIP socket.
- Firmware images of the microcontrollers for both keyboard types: the 84-key F (part 1503099) and the 122-key F (part 1385001). I got these by desoldering the controllers from real IBM keyboards as described below, and reading the contents using an EPROM programmer.
The new firmware
The new firmware is generated by a Java program: KeyboardHost (391k ZIP).
KeyboardHost can generate two firmware types: a 1k image for a D8748, or a 2k image for a D8749. Here's a comparison of the firmwares:
|1k firmware||2k firmware|
|Has been tested on real hardware.||Has been tested only under emulation (my EPROM programmer cannot burn 8749s, so I haven't been able to test it on real hardware.)|
|Supports only one scancode set.||Supports all three scancode sets.|
|Keys return 1-byte scancodes.||Keys can return 1-byte scancodes or 2-byte E0 xx scancodes.|
|No keyboard ID.||Supports keyboard ID.|
See the README.TXT file supplied with KeyboardHost for full details of how to generate the new firmware, and how to customize the scancodes it returns.
Once you have the new firmware, write it to a D8748 or D8749 microcontroller, as appropriate. I used a Willem programmer with external power supply, which could (just about) manage to write an 8748, but couldn't stretch to an 8749.
Removing the old controller
Open the outer case. There are three screws at the back, holding the plastic front on, and four inside holding the mechanism to the metal baseplate. Once these have been released, separate the mechanism from the baseplate (as you would open a book) to reveal the controller. It is attached to the baseplate by two wires, one for the cable to the PC and one for the DIP switches. Unplug both.
Undo the two screws on the controller PCB and flip it over so you can get at both sides.
The chip you need to remove is the large one (marked 1385001 in this picture). This is where you need the desolder braid.
The microcontroller won't come out unless the solder has been removed from all 40 pins. When you hold the board up to the light, it should be possible to see light through all 40 of the holes. Once you've done that, insert a screwdriver under each end of the microcontroller and gently lever it out. If you can see one or more pins resisting or bending, then check that those pins are completely desoldered. It may well take several goes with the desolder braid to shift them.
Once the microcontroller is out, clean up any leftover solder, then put the 40-pin socket in its place. The notch goes at the opposite end from the square silver IC — the end closest to the cable connector. Make sure the socket lies flat on the circuit board, with its 40 pins all in their correct holes. Once it's in place, solder it in, taking care not to short any pins together. Shorted pins can usually be unshorted by running the hot soldering iron between them.
When the socket is in place, I'd suggest that you plug the original microcontroller back into it, reassemble the keyboard (at least to the point where you reconnect the cables), and check that it still works as it did before.
Fitting the new controller
Open up the keyboard again, and replace the original microcontroller with your programmed 8748 / 8749. Don't bother reconnecting the DIP switches, because they now have no effect. Again, the notch goes at the end opposite the silver IC.
It's a good idea to cover the window on the microcontroller, to stop stray ultraviolet light getting in and corrupting the firmware.
The new firmware will support the LED panel from an 84-key Model F, if you happen to have one spare. How you fit this to the case is up to you.
Then reassemble the keyboard, plug it into a PC, and (hopefully) everything works.
If all went well, the keyboard should now work on Windows without any need for a custom driver. Keys will return key-up and key-down codes, and repeat as normal.
John Elliott 27 June 2011.