Image courtesy of fruktstund (at least I hope that is ok..)
Wiki page with instructions http://deskthority.net/wiki/HID_Liberation_Device_-_Instructions
Solder yourself instruction http://deskthority.net/wiki/HID_Liberation_Device_-_DIY_Instructions
Please contribute there if you have information to share =)What is this all about?
Ever wanted your Filco tenkeyless to have a programmable controller? Thought it sounded a bit insane to build a Phantom only for this reason? What if you could just simply replace the stock controller daughter board in your keyboard with a programmable one? Why not I say.
With this replacement daughter board you will basically have a Teensy that plugs conveniently into your Filco tenkeyless. There are a number of different keyboard project with code running on the Teensy that should be easily adopted to work with this controller.The ATmega32u4 chip
This is the same chip as on the Teensy2.0. It is a 16MHz 8-bit AVR from Atmel.
It has 32kB of flash to hold the bootloader, firmware code and key matrix information. The flash memory is read only during normal operation, so it can only be altered when loading code onto it through the bootloader. Both the stock bootloader from Atmel and the open source bootloader from LUFA take 4kB of the flash memory. The very basic code for the Phantom with one single layer key matrix takes almost 9kB. This leaves more than 18kB for custom layers and macros or whatever.
There is 2.5kB of SRAM memory, this is used to run the program and store variables during runtime. It is like normal RAM memory erased when the power is cut.
There is also 1kB of EEPROM memory available, this can be used to store data when the power is off. So any recorded macro or on the fly remappings should be stored here.Flashing the firmware
Almost all code for AVRs you will find is written in c and compiled to hex
files. It is these hex files that are flashed to the chip. The flashing is done through a program running on your computer, talking to the chip via the bootloader. I haven't tried this in Windows but there are applications to do this that should be easily maneuvered. I will look into this and make sure there are no problems. In Linux I've got everything under control.
The TeensyLoader that the Teensys use will unfortunately not be available since that is PJRC proprietary. This is only a slight drawback. It may be more user friendly, and their bootloader is much smaller, but all in all this doesn't make a big difference.Compatibility
I have based this design on my "gen2" Filco tenkeyless. I believe there are no differences compared to the "gen1" keyboard except the higher quality PCB. Electrically everything is the same. I cannot guarantee that it will work for everyone though since there may be differences I don't know about. If your keyboard turns out to be incompatible this would of course be handled somehow. Passing it on to someone else for example, or in the worst case returning it for a refund.
The Filco main PCB that I have reverse engineered is a "gen2" marked "CST-F87/88/89/91-MB V1.1" 2010-11-09, and the controller is marked "Tenkeyless PCBA Rev 2.1-ESD" 2010-08-24.
There are pictures of the stock controller in this thread http://geekhack.org/index.php?topic=6557