This is an IBM Lighted Program Function Keyboard (LPFK) Model number 6094-020. It was used as an extra input device when doing computer aided design on the IBM RS/6000 series of machines. It connected to the machine by a special port or by the serial port. IBM also made an attachment kit so that you could connect it to the serial port of a generic PC.
The LPFK consists of 32 keys each with an LED indicator. The LED indicator can be turned on and off by program control. Each time a key is pressed a byte is sent to the host machine to tell it what key was pressed. The lights have to be set from the host machine - there is no automatic mode that turns the lights on and off when keys are pressed.
Internally the LPFK is driven by an Intel 8051 microcontroller. The circuitry and the lights pull too much power for a serial port so the LPFK is powered by an external AC to DC 'wall wart' that provides up to 500 milliamps at 5V. They could also be powered directly from the RS/6000 on the special port, or by a special cable from an IBM 6091 monitor.
Power and signals are provided over an 8 pin min-DIN connector. When viewing the pins on the plug the pin assignments are:
Note that on the circuit board the DC return and RS232 signal
are tied together.
On the other end of the cable is a DE-9 connector. A 6 pin connector
plug in the power source is on the back of the DE-9 connector:
IBM LPFK serial cable
IBM LPFK serial cable: power connector view
The pinouts for the DE-9 are:
Here is the pinout for the power input pins on the backside of the DE-9 and the pinout diagram on the power supply:
1 - no connection
2 - +5VDC
3 - Ground
4 - no connection
5 - shield ground
6 - shield ground
(The plug from the power supply is female.
Remember, the plug pinout is a mirror
image of the jack pinout to the left.)
Any modern USB power supply is capable of replacing the original power brick, as the output is only 500 milliamps.
Now for the fun part - here is how to make it talk when connected to a serial port.
Protocol: 9600 bps, Odd parity, 8 data bits, 1 stop bit. No handshaking (hardware or software) is required.
Commands: (All commands are shown in hex)
|0x01||Reset||Similar to the power on reset. Leaves the LPFK in the 'disabled' state with all indicators off.|
|0x06||Read Configuration||Upon getting this byte the LPFK responds with 0x03. Helpful for determining if the LPFK is active on a serial port.|
|0x08||Enable||Tells the LPFK that it may process and send keystroke data to the host machine.|
|0x09||Disable||Keyboard input is disabled. The LPFK will still respond to Reset and Read Configuration|
|0x94||Set Indicators||This command is followed by four more bytes which is a bitmap that represents the indicator lights on the keys. If the bit for a key is turned on, the light will be turned on. If the bit for a key is 0, the light will be turned off. Keys are numbered from 0 to 31.|
Responses from the LPFK:
|0x00 to 0x1f||Keystroke||The corresponding key on the LPFK was hit. These responses are only sent when the LPFK has been enabled using the Enable command.|
|0x80||Retransmit||The LPFK sends this if there was an error on the last Set Indicators command and it wants the host machine to retransmit it.|
|0x81||Ok||The LPFK sends this if the last Set Indicators command was received successfully.|
|The LPFK was designed to be used with templates that would define the keys depending upon which application was in use. If you want to make your own templates, save the image to the left, print it out, and cut out the key holes. (The image shown here is scaled down, but if you save the image you will get the full size version that is properly sized for the LPFK.)|
There are at least two other variations of the IBM LPFK besides the one documented here:
IBM 48G9995: A Japanese specific variant? This one is interesting because the power supply is integrated into the base of the unit and the underside has an access panel that shows sockets that may be populated with additional ICs.
Photo credit: aucfan.com
A black IBM LPFK pictured with the IBM Dials. Except for the color, it is probably functionally identical to the beige LPFK documented on this page.
Photo credit: RogueScientist007 (Reddit)
Thanks to a very special source where I work who had an ancient CD that had these command descriptions in it. I had been trying to make the LPFK talk on a serial port on and off for a year and was not making much progress. Recently I had stumbled on the Reset and Read Configuration commands, but it was slow and painful ..