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 chipThis 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 firmwareAlmost 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.

CompatibilityI 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.

I think I will be sourcing the components, do the soldering, setting them up with the LUFA bootloader, and some basic firmware all by myself..

Good to know about the "gen 1" controller.

To get a bit technical: The only pesky thing is the number of I/O lines on the stock controller chip. The matrix is 8 rows by 18 columns plus LEDs, pushing it the ATmega32u4 only has 26 I/O pins. I get around this by using a BCD decoder to drive the rows using only 3 controller pins. This requires that those pins are all connected to either rows or columns. This makes the daughter board a little bit vulnerable to design changes by Filco to the mother board. Another solution would be to use the bigger chip from the Teensy++, but the easily soldered version of that won't fit the board.

Will we need to solder this chip in ourselves? Or is the chip inside a Filco board detachable? I've never opened my Filco up before, but this sounds interesting! Would love to see some more pictures later if you get the time

The Filco controller daughterboard connects to the Filco using standard GPIO pins, with the pins soldered to the daughterboard and plugged into pin sockets on the PCB. It's located between the cursor arrows and the 6-pack keys.

Yes sorry, I read the whole thread. I'm not that knowledgeable when it comes to electronics. That bit where he said he was going to get a bit technical.. well.. it went right over my head ha. Guess that means it'll it won't just plug and play

It's not magic, there's still no traces under the switches for LEDs and there's no controller lines left to control LEDs. It will be able to control the Scroll Lock and Caps Lock LEDs if my eyes aren't playing tricks on me.

It's not magic, there's still no traces under the switches for LEDs and there's no controller lines left to control LEDs. It will be able to control the Scroll Lock and Caps Lock LEDs if my eyes aren't playing tricks on me.

I have 0 knowledge about PCBs, circuits or electric related things, but thanks for the clarification.

OT: Does the Filco PCB have holes for LEDs where the caps lock and scroll lock are? I can't remember. You could remove the LEDs from their current locations and run wires to connect them under the switch housing, but it would be better if the PCB had holes there, so you could wire it under the PCB.

I would have made it happen no matter what. Most of all I was interested in getting an idea of how many PCBs to order, 10, 20, or 100, or whatever. I will probably add some margin to have some extra if there are any latecomers. These are cheap enough for me to put some of my own money on the line.

OT: Does the Filco PCB have holes for LEDs where the caps lock and scroll lock are? I can't remember. You could remove the LEDs from their current locations and run wires to connect them under the switch housing, but it would be better if the PCB had holes there, so you could wire it under the PCB.

No, there are only the regular locations above the navigation cluster.

I'm adding a deadline for this, CET midnight 2012-09-09. I will probably wont at least 80% or so to have paid before ordering everything...

You know, it's been so long since I had my Filco apart that I don't recall what it looks like... I'm ASSuming that the controller for a std. ANSI 104-key board is completely different and therefore I have no use for this controller?

lol this controller idea made half of the phantom builds obsolete (excludes people that bought phantom for winkeyless or cherry modifiers). I bought phandom hardware for the idea of programing native colmak/dvorak into the keyboard.

I'm a little confused on how this works. How is the reprogramming done? [Yes, I've searched and haven't found much.] Is a firmware rebuild and reload required? I'm a software developer and don't mind tweaking and rebuilding firmware... just like to know what's involved before I commit.

Definitely interested in at least one unit if the programming/load process isn't too difficult.

lol this controller idea made half of the phantom builds obsolete (excludes people that bought phantom for winkeyless or cherry modifiers). I bought phandom hardware for the idea of programing native colmak/dvorak into the keyboard.

Will this controller have muli layer functions?

True, which also means this might cause more people to sell me their Phantoms, YAY!

If the controller replaces the original one, all it sees is the activating keys, and if the software remains similar to the Phantom controller, then the functionality ought to remain the same. Why wouldn't it have multilayer functions?

If the controller replaces the original one, all it sees is the activating keys, and if the software remains similar to the Phantom controller, then the functionality ought to remain the same. Why wouldn't it have multilayer functions?

Because I'm not a software or hardware engineer, and don't know how these things work haha. I just based it on: Filco and it's controller does not support multilayer functions, and since this is reverse engineered from a filco controller, it probably won't have mutilayer ability. Wasn't sure, so that's why I asked.

I'm a little confused on how this works. How is the reprogramming done? [Yes, I've searched and haven't found much.] Is a firmware rebuild and reload required? I'm a software developer and don't mind tweaking and rebuilding firmware... just like to know what's involved before I commit.

Definitely interested in at least one unit if the programming/load process isn't too difficult.

Current Phantom firmware requires source modification and recompiling to change the key map. Someone hacked in layers, and everything else is up in the air so far. The firmware would need to be changed to suit the different matrix on this controller. Also there are quite a few other firmwares that could be used as a starting point.