Table of Contents

liblpfk -- IBM LPFK driver library

Back in 2008, I picked up a few IBM 6094-020 Lighted Program Function Keyboards from someone on the classiccmp mailing list. These are an array of keys and lights which were used as a user interface for some kind of CAD product on the RS/6000 AIX platform.

Codeninja had already reverse-engineered the protocol – but it seems their LPFK used a non-standard protocol.

Michael Brutman later obtained a copy of the LPFK Model 6094-020 commands (used on the standard LPFK) and published these online. liblpfk implements this version of the LPFK protocol.

The API is pretty simple:

Several demos are included in the liblpfk source code:

Doxygen comments are present in the code, which means documentation may be generated simply by running doxygen over it.

Mercurial repository: http://hg.philpem.me.uk/liblpfk/

LPFK connections

The LPFK uses RS232 communications, and requires around 500mA of current with all the LEDs on.

I used an FTDI TTL232 cable and a MAX232 to drive the LPFK, with power taken directly from the PC's USB port.

I also reprogrammed the FT232's EEPROM so that it declared its need for 500mA of power to the host PC (this is done with FTDI's FT-PROG tool).

The mini-DIN pinout is as follows:

Pin Function
1 GND (signal return)
2 GND (DC return)
3 +5V
4 Reset (leave floating, +5V/GND levels)
5 TxD (connect to PC RxD)
6 RxD (connect to PC TxD)
7 No connect
8 No connect

This is the same as the pinout for the IBM Graphics Input Adapter MCA card, FRU 22F9758.

Pinouts and diagrams are in IBM document SA38-0533-04, "Adapters, Devices, and Cable Information for Micro Channel Bus Systems" on page 1-134 (PDF page 154).

See also

Daniel Drucker has written a Python library to control the LPFK.