Project Kiiboard – The Beginning

Step 1: Stumble upon mechanical keyboards. Fall in love with them. Find out that Raspberry Pi 2 is released. Get an idea. Build a computer inside a keyboard.

Step 2: Google around the Internet, someone has done something quite similar. “Idea is validated”, as we say at my workplace.

Step 3: ???

Step 4: Profit! Not really. But that’s how the story begins.

So, I got an idea to build a computer inside a mechanical keyboard. After doing some research about mechanical keyboards and the new power of the Raspberry Pi 2 Model B, I decided that it would be a nice project for me to build. Okay then.

First phase: Gathering components

Raspberry Pi

The Raspberry Pi 2 was the easiest part to get. We already had ordered a couple of them with my friend Tomi. Next step: The keyboard.


I have been interested about mechanical keyboards (you know, those oldschool clicky ones) since I was a kid – heck, we used those regularly back in the day. The clicking noise has burned into my memory, and I just loved the tactile feel of those buttons. Nowadays my everyday keyboard is the integrated one on a Macbook Pro. It’s not bad for a laptop keyboard, so I really haven’t had any excuse to buy a mechanical one to carry around with my Mac.

That’s related to how the idea was born. I needed to have an excuse to buy one of those marvellous keyboards, and to find some use for the new Pi. Combine those two things together, and, well… you know.

What keyboard should I pick then? I have two main attributes I look for: The keyboard should be relatively compact, and it should have a familiar layout. I decided to go with a tenkeyless keyboard since I use the tenkeys rarely, and I want to have a small keyboard. I also wanted they keyboard to have a Finnish/Swedish layout. So after a bit of googling, I found a Filco Majestouch-2 Tenkeyless keyboard with Finnish layout and brown switches (Brown switches do not make so much noise, but still have the same feel as the old clicky ones).

Next step was to find out if there was enough space inside the keyboard to fit the Pi. I don’t naturally have that keyboard, so I asked Reddit. Reddit has an active community of mechanical keyboard enthusiasts, so I got my response quickly, with images! You can always trust the Hive Mind of Reddit. It seemed that there is only 8mm clearance inside the keyboard, which would be a too tight fit, I thought. It could be done by stripping off almost all of the connectors, but I would rather not sacrifice the ethernet port. So, let’s find another keyboard instead!

I came across the wonderful company WASD Keyboards, which also sold a similar keyboard, WASD V2 88-Key. It looked like it would have more space available. I contacted the customer care, told them about my project and asked some measurements. They responded very fast, told me that there is enough space for some AA-batteries at least, and that there should be enough space for the RasPi. The guy was even interested about hearing more about my project! Only problem was that there is a cable channel which can cause some trouble fitting the Pi, but I figured it can be removed and filled, if the Pi doesn’t fit. We’ll figure something out. I had found my keyboard!


Because I will be buying a great keyboard, I want to be able to use it as a regular keyboard too. I decided to implement a mode changing switch, for the keyboard to have two modes:

  • Mode 1 – “KB-mode” will make the keyboard work as a regular keyboard, so that the Pi will not be connected in any way.
  • Mode 2 – “Pi-mode” will input power the Pi with the keyboard’s usb cord, while the keyboard itself will be connected to the usb port of the Pi.

These modes will give me the total freedom to choose how to use the keyboard. Here are the basic schematics I whipped up how to connect the whole mess:


Luckily I got my old friend Ville, an electrical engineer, to check these out. We both think that it should work, if the Pi’s usb ports are “dead” when powered off. I have to test this out. [EDIT: They are not. This wiring does not work. Tested.]

About ports

I decided that two usb ports in the back of the keyboard is enough, because I plan to hardwire a small WiFi dongle inside the keyboard and use one of the four usb connectors for that. I will wire the dongle directly on the board to save space. Second usb port will be used to connect the keyboard in Pi-mode.

I would like to keep the ethernet port, if at all possible, because there’s not WiFi in every place. Gives me more opportunities to hack, too. I may have to rip out or move some components for the Pi to fit in the keyboard.

To be continued…

So, I still have to actually buy the keyboard and see what I need to do with the Pi for it to fit, but I have finally found all the parts I need. Now it’s just making the thing :) Stay tuned for more.

Useful links:

Project Kiiboard – Parts ordered

Yesterday I ordered the keyboard, and today I shopped for some other parts at Partco. It’s a great shop by the way.

The things I got:

  • HDMI connectors
  • Some wires
  • A power switch
  • LEDs, bezels and resistors
  • An audio jack
  • Female USB sockets
  • A male micro usb connector
  • Desolder wick

Now we wait. I am planning to attach the connectors to a 3D printed part. I started to design it today with Tinkercad, an easy to use 3D design tool, which works in the browser. It’s a great tool, and it was easy to learn with the included tutorials. Here’s a preview of the part I am making, I will have to finalise it when I can get some measurements of the keyboard.



I may have to abandon the Ethernet port (and it’s not included in this part), since they keyboard will be tight. Let’s measure it when it arrives.

I also found that there’s a hackerspace here in Turku. The hackerspace has open doors tomorrow, and I am thinking about going there. I hope the people are cool there :)

That’s it for today.

Project Kiiboard – Some parts arrived!



Today I had the parts waiting for me in the post. That was fast! Thanks Partco. Now I can finally get some real measurements. Still waiting for the keyboard, though.

I was at the Hacklab yesterday, seems like a pretty cool place to hang around in. There was two different rooms to hack in, finally some space for projects :)


Project Kiiboard – A huge update!

Phew! It has been a while, and lots have happened. First of all, I got the RasPi2, and slimmed it down. I decided that I will sacrifice the ethernet port – I am going to have WiFi and ethernet is not that common anymore, and if I need it, I can use an usb adapter for that.

Then I slimmed down the Pi. I removed the ethernet port, usb ports, audio jack and a port labeled “display”. I got the profile under 8mm thick, nice. I also opened the WiFi dongle and soldered it to the Pi. Stripping parts was a very tedious task, but with the help of a desoldering pump (and patience), I got all of the unnecessary parts removed.


To my amazement, the Pi booted nicely and the usb worked. After that I set up Raspbian which I installed on the Pi.

On monday, after long wait, the keyboard arrived! It is such a beauty. And the sound… Ah. I’m so glad I ordered the keyboard with blue Cherry MX switches.




Finally I got the actual measurements, and was able to finish the 3D model for the backplate. You can see it here. A friend from the IRC-channel of Hacklab Turku promised to do a test print for me this week! Cool!


On tuesday, I went to the Hacklab in order to cut a hole in the keyboard for the new backplate. My good friend Aimo went with me and helped me saw the part with a Dremel. It went really well, just needed to be careful. Mmm, that smell of molten plastic… Oh and by the way, I sawed about 5mm off the Pi too! It’s a bit nerve wrecking to have space problems inside the keyboard :)


I did a test fit, and everything seems perfect. Tight fit, but that’s enough for me.


Now we just have to wait for the backplate!


Project Kiiboard – 3D printed backplate

Just a quick update to show you guys that the test print was a success! Only couple of slight modifications, and the part can be printed with better settings and in the real colour, black. This was my first 3D printed design, and it feels awesome to hold something that you just designed on the computer. Huge thanks to Jonni, who let me print with his printer!



Project Kiiboard – Making progress

I got the final print of the backplate yesterday! It was a lot better than the last one, not that there was anything wrong with the test print. I am impressed!


The part fit perfectly, as the last one.



After fitting the part, I glued the connectors in place.



I think it looks quite good.

Next day, I glued some screws on the keyboard, for me to mount the Pi on. Then I glued the backplate on. It was quite stressful, but I managed to get it right. After that I needed to solder the HDMI cable, shorten some wires etc. All went well, no problems there.


Pi boots, everything works. Nice. Sorry about that huge lump of hot glue, needed to keep the wires in place for a while or else I got some static on the screen. Something is causing interference / noise on the HDMI cable, but it works fine if I keep pressure on it. Closing the keyboard will fix the problem :)

I also soldered the keyboard connectors on, but there was a problem, the wiring didn’t work properly (keyboard mode didn’t work, but RPi & keyboard works). Pi doesn’t seem to completely disconnect the USB when powered off. No problem, I have to order an IC which works as an USB switch: FSUSB30MUX.

Here’s the wiring diagram for that part:


Thanks to Ville and Juuso for helping me out with this!

I had a very productive couple of days, and only a small setback. Well, there’s still stuff to do, and the Pi works :) Stay tuned for more!

Project Kiiboard – It’s done!

I finally got both the USB switch IC and MSOP10 breakout boards, so I went to our Hacklab to finalise the build. The switch IC is tiny, so I needed a microscope to solder it. Everything went well, even though I was a bit nervous when soldering it.



After that I only needed to connect the wires according to my plans, test that all works, and reassemble. And voilà, it was finally complete!



Overall I’m very proud and happy that I completed this project. Super special thanks to Tomi, Juuso, Jonni and Ville for helping me out with this project, it wouldn’t exist without you! <3

If you have any questions, hit me up in twitter: @b10nik

Ninja edit: Here’s a quick demo video: