Rather than duplicating effort between the previous threads, we should try to keep everything here from now on.
I've developed a set of USB controllers for the IBM capacitive keyboards (Model F and Beamspring). These allow keyboards that otherwise have no way to hook them up to a modern PC to be used (Beamsprings), offer an alternative to Soarer's excellent converter (standard Model Fs), and also an alternative to the other intriguing capsense project around, the DPH controller. It allows the potential to go a bit further than just a converter if you're trying to do something a bit unusual—like build your own keyboard using old Model F bits, add extra keys that the original controller won't support, or get full make/break scancodes with NKRO on a terminal keyboard.
At any given time, the code as well as schematics/PCBs/precompiled binaries are available at http://downloads.cornall.co/ibm-capsense-usb
Features include:
- Open source! (GPLv3)
- Approx. 500Hz scan rate with fast debounce
- Full NKRO (without needing to add diodes—yay capacitive keys) over USB on all Windows/Linux/Mac OS X, while retaining boot-mode compatibility for BIOS etc.
- Auto-calibration of capsense thresholds
- Media/consumer keys mappable
- Layer support with 3 function keys; function keys support chording and recursive expansion
- Macro support
- Cross-platform (Windows/Linux/Mac OS X) graphical configuration utility to set layout/layers/configure scanning
- Expansion header on all boards to support LEDs, solenoid drivers (for some Beamsprings), buzzers (on Kishsavers) etc.
- Compact surface-mount design without needing to plug in external Teensys etc.
The Controllers
Beamspring-USB-Rev4
This supports the standard Beamspring boards, such as the 5251, 3278, 3727 etc., which have a 23x4 matrix. It will not work on a Beamspring Displaywriter despite the identical 30-pin connector, as these have a 12x8 matrix—see below for that controller.
This can be paired with the solenoid driver board (see below) for Extra Loud Click, if your Beamspring is fitted with a solenoid (the 3727 is the only one I'm aware of that isn't).
USB connects via an on-board mini-USB socket.
PCB at OSHPark: http://oshpark.com/shared_projects/bOXMsRYH
Beamspring-Displaywriter-USB-Rev1
This is to support the unusual Beamspring Displaywriter keyboards, which have a very different 12x8 matrix, with interleaved rows. They will not work with a Model F Displaywriter; as far as I'm aware these have built-in (non-removable) controllers.
USB connects via an on-board mini-USB socket.
PCB at OSHPark: http://oshpark.com/shared_projects/KcxYPs3y
Model-F-USB-Rev2
(photo shows Rev1 boards)
Rev2 PCB below (black lines show the actual board cutout):

This should work with all Model F keyboards (including the Kishsaver) which have separate controllers. Unfortunately this excludes the XT and a couple of other terminal boards, which have a controller-on-board which can't be removed (except maybe with a hacksaw).
Some Model F keyboards have less than 16 columns; columns can be set to `skip' using the GUI util.
These do unfortunately require soldering; IBM used a soldered-on ribbon cable for the Model F controllers, that first needs to be removed from the old controller, then attached to this one.
In the Rev2 board (unlike the Rev1 in the photo below, which has a flying lead), a USB micro (not mini!) is socket is used. This is to reduce board size a bit and these days USB micro sockets are much more common.
PCB at OSHPark: http://oshpark.com/shared_projects/eTR858GJ
Accessory boards
Beamspring-USB-Solenoid-Driver-Rev2
(photo shows prototype, not Rev2)

This is drive the solenoid fitted to most beamspring keyboads. It runs off the USB voltage supply to the main controller, and uses a current-limited switch-mode power supply to boost up to 9V. This is then used to fire the solenoid when a key is pressed for Extra Loud Click coupled with Small Blinking Light.
PCB at OSHPark: http://oshpark.com/shared_projects/qdZwUHLH
Model-F-3178-Adaptor-Rev1


An adaptor board for IBM 3178 keyboards, which were kind of an unusual Model F version of a 3278/3727 Beamspring. They unfortunately have a different pinout and require this adaptor.
PCB at OSHPark: http://oshpark.com/shared_projects/bD4fQlCX
GUI Util
This is a Qt application which runs on Linux, Windows and Mac OS X. Its main purpose is to allow you to set which key location corresponds to which scancode:
...but also allows tweaking expansion port settings, like whether to run in LED mode for Caps/Num/Scroll Lock indicators, or whether to fire a solenoid (and adjust timings of it etc.).
This also is handy for diagnostic output to show which keys are being sensed as up or down.
Building your own
Give it a go! Sourcecode/schematics/PCB layouts are here: http://downloads.cornall.co/ibm-capsense-usb . You can order pre-Gerbered PCBs from OSHPark by using the links above, or checking my profile on OSHPark here: http://oshpark.com/profiles/xwhatsit . There are people around (me included) who will help you if you run into issues. Surface-mount is easier than through-hole, it just looks scary!
Pricing/Availability
As mentioned above, these are open-source. If you have a soldering iron and flux, consider building your own! Don't be put off the surface mount soldering, several people (some with no previous surface-mount experience) have now built their own.
However if you're not into picking up resistors with tweezers, I can build one for you and pre-program and test it first. I have a toaster reflow oven that makes this straightforward for me, and at any given point I'm likely to have a large number of the components on hand. Just bear in mind I'm in New Zealand; if I'm out of PCBs, an order from OSHPark takes a few weeks to get to me, even before I mail the finished controller to you.
Here's my spreadsheet of bill-of-materials with pricing in NZ$:
- Code: Select all
══════════════════════════════════════════════════════════════════════════
Sheet 1: Beamspring-USB
Id Designator Package Quantity Designation Price Total
1 CON1 USB_MINI_B 1 USB-MINI-B $1.42 $1.42
2 U2 tsot-6 1 DAC101S101 $3.16 $3.16
3 U1 TQFP32 1 ATMEGA32U2 $7.00 $7.00
6 U6 so-14 1 LM339A $0.48 $0.48
7 C3,C4 SM0805 2 22pF $0.01 $0.02
8 C10,C9,C8,C11,C6,C7,C2,C12 SM0805 8 0.1uF $0.01 $0.08
9 R4 SM0805 1 4.7K $0.01 $0.01
10 R3,R17 SM0805 2 20K $0.01 $0.02
11 R1,R16,R2 SM0805 3 10K $0.01 $0.03
12 C1 SM0805 1 1uF $0.02 $0.02
13 R15 SM0805 1 47K $0.01 $0.01
14 C5 SM0805 1 4.7uF $0.02 $0.02
15 R6,R5 SM0805 2 22R $0.01 $0.03
16 RP2 RPACK_1206 1 100K 1% $0.08 $0.08
17 RP1 RPACK_1206 1 10K 5% $0.01 $0.01
18 X1 HC49US 1 16MHz $0.60 $0.60
19 U3,U5,U4 DHVQFN16 3 74AHC595 $0.60 $1.80
20 P1 805_396_30x2_SM 1 EDGE_30X2 $3.00 $3.00
21 P2 pin_array_3x2 1 CONN_3X2 $0.45 $0.45
Ground wire + crimp 1 $0.25 $0.25
PCB 1 $10.04 $10.04
Total $28.52
══════════════════════════════════════════════════════════════════════════
Sheet 2: Beamspring-Displaywriter-USB
Id Designator Package Quantity Designation Price Total
2 CON1 USB_MINI_B 1 USB-MINI-B $1.42 $1.42
3 U2 tsot-6 1 DAC101S101 $3.16 $3.16
4 U1 TQFP32 1 ATMEGA32U2 $7.00 $7.00
6 U3,U4 so-14 2 LM339A $0.48 $0.96
7 R3,R6 SM0805 2 20K $0.01 $0.02
8 C9,C10,C7,C12,C11,C8,C6,C4 SM0805 8 0.1uF $0.01 $0.08
9 R4,R7 SM0805 2 4.7K $0.01 $0.03
10 C5 SM0805 1 1uF $0.02 $0.02
11 C1,C2 SM0805 2 22pF $0.01 $0.02
12 R5,R9 SM0805 2 10K $0.01 $0.02
13 R1,R2 SM0805 2 22R $0.01 $0.03
14 C3 SM0805 1 4.7uF $0.02 $0.02
15 R8 SM0805 1 1K $0.01 $0.01
16 RP1,RP2 RPACK_1206 2 10K 5% $0.01 $0.02
17 RP3,RP4 RPACK_1206 2 100K 5% $0.08 $0.15
18 P2 pin_array_3x2 1 CONN_3X2 $0.45 $0.45
19 X1 HC49US 1 16MHz $0.60 $0.60
20 U5,U6 DHVQFN16 2 74AHC595 $0.60 $1.20
21 Ground wire + crimp 1 Chassis GND $0.25 $0.25
22 PDW1 805_396_30x2_pins 1 EDGE_30X2 $3.00 $3.00
PCB 1 $12.60 $12.60
Total $31.06
══════════════════════════════════════════════════════════════════════════
Sheet 3: Model-F-USB
Id Designator Package Quantity Designation Price Total
2 U2 tsot-6 1 DAC101S101 $3.16 $3.16
3 U1 TQFP32 1 ATMEGA32U2 $7.00 $7.00
5 U3,U4 so-14 2 LM339A $0.48 $0.96
6 R6,R3 SM0805 2 20K $0.01 $0.02
7 C9,C10,C7,C12,C11,C4,C8,C6 SM0805 8 0.1uF $0.01 $0.08
8 R4,R7 SM0805 2 4.7K $0.01 $0.03
9 C5 SM0805 1 1uF $0.02 $0.02
10 C1,C2 SM0805 2 22pF $0.01 $0.02
11 R8 SM0805 1 1K $0.01 $0.01
12 R5,R9 SM0805 2 10K $0.01 $0.02
13 C3 SM0805 1 4.7uF $0.02 $0.02
14 R2,R1 SM0805 2 22R $0.01 $0.03
15 RP3,RP4 RPACK_1206 2 100K 1% $0.08 $0.15
16 RP2,RP1 RPACK_1206 2 10K 5% $0.01 $0.02
17 P2 pin_array_3x2 1 CONN_3X2 $0.60 $0.60
right angle
19 X1 HC49US 1 16MHz $0.60 $0.60
20 U5,U6 DHVQFN16 2 74AHC595 $0.60 $1.20
21 P1 USB-Micro-B 1 USB $1.60 $1.60
PCB 1 $12.95 $12.95
Total $28.78
══════════════════════════════════════════════════════════════════════════
Sheet 4: Solenoid-Driver
Id Designator Package Quantity Designation Price Total
1 U1 SOT23_6 1 MIC2009A-1 $1.70 $1.70
2 U3 SOT23-5 1 MIC2250-2 $2.45 $2.45
3 U2 so-16 1 ULN2003 $0.96 $0.96
4 C5,C3 SM1210 2 22uF $0.36 $0.72
5 D2 SM1206POL 1 LED $0.17 $0.17
6 R2,R4,R6 SM0805 3 100K $0.01 $0.03
7 R5 SM0805 1 16K $0.01 $0.01
8 C1 SM0805 1 1uF $0.02 $0.02
9 R1,R3 SM0805 2 470R $0.01 $0.02
10 C4,C2 SM0805 2 0.1uF $0.01 $0.02
11 P1 pin_array_3x2 1 CONN_3X2 $0.45 $0.45
12 P3 PIN_ARRAY_2X1 1 CONN_2 $0.10 $0.10
13 D1 DO-41 1 1N5819 $0.30 $0.30
14 C6 c_elec_6.3x7.7 1 220uF $0.70 $0.70
15 L1 INDUCTOR_12.8x12.8 1 22uH $1.80 $1.80
6-pin ribbon cable 1 $4.22 $4.22
+ connectors
PCB 1 $3.13 $3.13
Total $16.79
The pricing for the three controllers is close enough that I will set US$50 for each controller for me to build and test each one. I think this is a fair margin over my raw costs for an hour or so soldering, assembling, testing and packaging (and heatshrinking USB cables for the Model Fs). I certainly won't get rich charging that
The solenoid driver I will set at US$25 for me to build/assemble/test, and the 3178 adaptor board is US$10.
Shipping in the past has been NZ$13.45 (updated! NZ post put their prices up) to pretty much anywhere with untracked airmail. It has usually taken about 2 weeks to arrive. For tracked airmail, NZ Post puts the price up to approx. NZ$45 which is reasonably steep, but may be worth it if you've had packages go missing in your part of the world before. I've rationalised these at USD$11.50 and USD$40.50 respectively.
Current orders
Round 1/June 1st batch closed, fully shipped
Final tally:
- 24x Model-F-USB-Rev2
- 9x Beamspring-USB-Rev4
- 6x Beamspring-Displaywriter-USB-Rev1
- 8x Solenoid-Driver-Rev2
- 4x 3178-Adaptor-Rev1
Round 2/August 15th batch closed, all shipped
Final tally:
- 18x Model-F-USB-Rev2
- 11x Beamspring-USB-Rev4
- 2x Beamspring-Displaywriter-Rev1
- 13x Solenoid-Driver-Rev3
- 1x 3178-Adaptor-Rev1
Round 3/October 18th batch open, accepting orders
[/list]
