This firmware can be used to convert an ITT Courier 110169 keyboard to USB. It makes use of the tmk_core keyboard firmware library and was written with the Teensy 2.0 development board in mind, because with it you only need to make minor modifications to the PCB. The project only contains instructions on how to perform the necessary modifications and get everything up and running. For information on how I reverse engineered that thing look here.
The first thing you have to do is to desolder the original 8048 microcontroller. Then you have to connect the Teensy to hole 9 - 32 on the PCB:
+-------\/-------+
[] 1 40 []
[] 2 39 []
[] 3 38 []
[] 4 37 []
[] 5 36 []
[] 6 35 [] +-----+
[] 7 34 [] +-------------| |-------------+
[] 8 33 [] | | USB | |
[] 9 32 [] <--------- |[] GND | | VCC []|
[] 10 8048 31 [] |[] PB0 +-----+ PF0 []|
[] 11 Socket 30 [] |[] PB1 == || PF1 []|
[] 12 29 [] |[] PB2 || PF4 []|
[] 13 28 [] |[] PB3 [] E6 [] PF5 []|
[] 14 27 [] |[] PB7 +-------+ PF6 []|
[] 15 26 [] |[] PD0 | | PF7 []|
[] 16 25 [] |[] PD1 | | PB6 []|
[] 17 24 [] |[] PD2 +-------+ PB5 []|
[] 18 23 [] |[] PD3 +-+ /–\ || PB4 []|
[] 19 22 [] |[] PC6 +-+ \-/ || PD7 []|
[] 20 21 [] <--------- |[] PC7 [ ] [ ] [ ] [ ] [ ] PD6 []|
+----------------+ | PD5 VCC GND RST PD4 |
+---------------------------------+
After that take a look at the bottom side of the PCB, where the microcontroller sits. Here you have to do a few things:
- Sever the connection between pin 10 and 26
- Bridge pins 7 and 8
- Connect pins 26 and 32
- Connect pins 27 and 35
It should look somewhat like this:
Before: After:
+-----\/-----+ +-----\/-----+
40 [] [] 1 40 [] [] 1
39 [] [] 2 39 [] [] 2
38 [] [] 3 38 [] [] 3
37 [] [] 4 37 [] [] 4
36 [] [] 5 36 [] [] 5
35 [] [] 6 35 +[] [] 6
34 [] [] 7 34 / [] +[] 7
33 [] +[] 8 33 | [] +[] 8
32 [] +[] 9 32 | []+ +[] 9
31 [] --+[] 10 31 | [] \ --+[] 10
30 [] / [] 11 30 | [] | / [] 11
29 [] / [] 12 29 | [] | [] 12
28 [] / [] 13 28 \ [] | [] 13
27 [] / [] 14 27 +[] / / [] 14
26 []+-- [] 15 26 []+-- [] 15
25 []+ [] 16 25 []+ [] 16
24 [] [] 17 24 [] [] 17
23 [] [] 18 23 [] [] 18
22 [] [] 19 22 [] [] 19
21 [] [] 20 21 [] [] 20
+------------+ +------------+
Now you have to connect the Teensy to an USB cable. Theoretically you could directly connect a cable to the Teensy, but a cleaner way would be to repurpose the connector the original cable used and build a custom USB cable. For that you have to connect the Data - and Data + pins of the Teensy USB connector to pin 3 and 4 of the connector on the PCB:
| | | | | |
+-|--|--|--|--|--|-+
| |
+------------------+
+5v Data- GND
+5v Data+ GND
If you want to, you can remove some components, that aren't needed anymore. You can safely remove the 6.0Mhz crystal (Y1), the two DM7417N Buffers (IC6 & IC7), the SN74LS74AN Flip-Flop (IC2) and the LM3905N timer (IC8).
Clone the repository with the following command:
git clone --recurse-submodules https://github.com/potamides/itt-courier-110169-to-usb
To build the firmware and program the controller run this command:
make teensy [KEYMAP=yourname]
You can select a keymap name with the optional KEYMAP=
parameter ('plain' is
the default name). See
tmk_core/doc/build.md
for more information.
You can change the keymap by editing the code of keymap_plain.c
directly, or
by copying it to your own keymap file like keymap_yourname.c
and editing it
from there. How to define a keymap should be pretty straightforward. You can
find key symbols in
tmk_core/doc/keycode.txt.
Look at
tmk_core/doc/keymap.md
for more details.