ROM Adapter for running ‘B’ firmware on a Keithley 2001 with a pre Rev-K digital PCB

If you have one of these, you will have discovered that the last revision of firmware than can run on these is A08, because the single PLCC-44 socket can only hold at most a 4 mbit EPROM.

Later PCBs have two EPROM sockets allowing them to run newer (larger) firmware images.

Strictly speaking however, there’s nothing stopping us from running ‘B’ firmware on these older units, if only there was some way we could get a little more ROM space.

The EPROM found on pre rev-K PCBs

There’s no PLCC-44 EPROM we can put in that socket which can hold more than 4 mbits, however…

My Keithley 2001 ROM adapter

I have built an adapter which makes this possible. It’s pretty simple. It’s got a PLCC-44 plug and a PDIP-42 socket to allow, for example, an M27C322 (32 mbit) to be used in place of the original ROM. I used a 42-pin EPROM because they’re common, dirt cheap and easy to program with cheap hardware.

It is secured in place using a hex spacer mounted on an existing screw hole on the digital PCB.

ROM adapter installed

After having built this I discovered that my choice of PLCC plug (Winslow W9303) is made (and only available) in the UK – so this project is probably a fat lot of good to anyone else, but the none-the-less the point is proven here, it is possible to get to the latest firmware on these oldest units.

One little wire mod

Sadly we do have to make a little change to the PCB to facilitate this new adapter:

An extra address line from the CPU has to be connected through to pin 1 (unused) of the EPROM socket. The other end of this wire is visible in the previous image (it is connected to the 5th pin from the top left corner of the CPU). Because this pin is NC on the stock EPROM it can be left in place if you wish to return to the original Axx firmware.

Calibration data troubles

After having booted my 2001 with (more or less) the latest firmware (B16) I discover that the calibration data hasn’t loaded, and on top of that it’s gone and wiped the calibration memory on boot-up. FFS. went to the trouble of devising an ISP arrangement to deal with calibration EEPROM tasks. I moved mine to a socket.

It turns out that the format of the calibration memory is different between the original firmware (A08) and what I’ve upgraded it to (B16). Referring back to the great oracle of Keithley 2001 related information (xdevs.comone of the images he’s got up there (link) appears to be in the same format as what I’ve upgraded to, so I edited the binary to put my serial number into it, flashed that into mine, and I’m back in business, albeit with someone else’s calibration coefficients. Eh. I don’t care, my cals were a decade out of date (long overdue to be re-done) anyway so no big loss.

Once the calibration EEPROM is changed to ‘B’ format it’s no problem to change between all ‘B’ versions. I do not know how to convert them unfortunately, that would be a separate project.

It works

A very early Keithley 2001 booting the latest firmware


If building one exactly like mine – the 27C322 is large enough for 4 B-Revision ROMs. Jumper settings will determine which to boot.


The only tricky part to source is the PLCC-44 plug – which is a Winslow W9303. Unfortunately these are only available in the UK and there is no alternative. Sorry about that!

  • 1x Winslow W9303 PLCC-44 plug
  • 1x 0.1 uF ceramic capacitor
  • 1x M27C322, M27C160 or M27C800 EPROM
  • PDIP-42 socket
  • 2x right angle jumpers
  • M3 15mm hex spacer + screws + washers

If using an M27C160 it’s only possible to fit two firmware versions in, which would be toggled by the A19 jumper.  The A20 jumper should be set to ‘L’.

In the case of the M27C800 – only one firmware image will fit. The A19 jumper must be set to ‘L’, and the A20 jumper must be set to ‘H’.

Building one

Posted in Test equipment

Leave a Reply

Your email address will not be published. Required fields are marked *