Hackaday Prize judge, hacker extraordinaire, and generally awesome dude [Sprite_TM] spends a lot of time at his computer, and that means a lot of time typing on his keyboard. He recently picked up a board with the latest fad in the world of keyboards, a board with individually addressable LEDs. He took this board to work and a colleague jokingly said, ‘You’ve had this keyboard for 24 hours now, and it has a bunch of LEDs and some arrow keys. I’m disappointed you haven’t got Snake running on it yet.” Thus began the quest to put the one game found on all Nokia phones on a keyboard.
The keyboard in question is a Coolermaster Quickfire Rapid-I, a board that’s marketed as having an ARM Cortex CPU. Pulling apart the board, [Sprite] found a bunch of MX Browns, some LEDs, and a 72MHz ARM Cortex-M3 with 127k of Flash and 32k of RAM. That’s an incredible amount of processing power for a keyboard, and after finding the SWD port, [Sprite] attempted to dump the Flash. The security bit was set. There was another way, however.
Coolermaster is actively working on the firmware, killing bugs, adding lighting modes, and putting all these updates on their website. The firmware updater is distributed as an executable with US and EU versions; the EU version has another key. Figuring the only difference between these versions would be the firmware itself, [Sprite] got his hands on both versions, did a binary diff, and found only one 16k block of data at the end of the file was different. There’s the firmware. It was XOR encrypted, but that’s obvious if you know what to look for.
The firmware wasn’t complete, though; there were jumps to places outside the code [Sprite] had and a large block looked corrupted. There’s another thing you can do with an executable file: run it. With USBPcap running in the background while executing the firmware updater, [Sprite] could read exactly what was happening when the keyboard was updating. With a small executable that gets around the weirdness of the updater, [Sprite] had a backup copy of the keyboard’s firmware. Even if he bricked the keyboard, he could always bring it back to a stock state. It was time to program Snake.
The first part of writing new firmware was finding a place that had some Flash and RAM to store the new code. This wasn’t hard; there was 64k of Flash free and 28K of unused RAM. The calls to the Snake routine were modified from the variables the original firmware had. If, for example, the original keyboard had a call to change the PWM, [Sprite] could change that to the Snake routine.
Snake is fun, but with a huge, powerful ARM in a device that people will just plug into their keyboard, there’s a lot more you can do with a hacked keyboard. Keyloggers and a BadUSB are extremely possible, especially with firmware that can be updated from a computer. To counter that, [Sprite] added the requirement for a physical condition in order to enter Flash mode. Now, the firmware will only update for about 10 seconds after pressing the fn+f key combination.
There’s more to playing Snake on a keyboard; Sprite has also written a new lighting mode, a fluid simulation thingy that will surely annoy anyone who can’t touch type. You can see the videos of that below.
22 thoughts on “[Sprite_TM]’s Keyboard Plays Snake”
I was awaiting the presentation from the event in munich. Isn’t that uploaded?
No. That was lost. Unfortunately, I was the only one doing video/content from the Munich party. I was overextended, and honestly doing the web content from the Munich party is one of the biggest embarrassments of my life. Really, really amateur stuff going on.
I know for a fact we lost views and therefore ad revenue because of our inability to properly plan this, so the people who are in charge of this have been made aware.
I do have the last half of Sprite’s talk, so if anyone out there has the first half, I’ll be more than happy to put something together.
If you are reading this:
If nobody else is having a copy of that video, could you somehow record your presentation again? It was so much fun to see it and very informative.
I would buy you a beer the next time we meet! ;)
Well, I could, but it’d never be as good as in Munchen; the feedback I got from the audience during the talk was awesome. I fear you may need to make do with the article Brian linked to.
You are right, it was just the right situation and everything.
Well I still hope somebody filmed it.
Sorry for more nagging about the layout.
But: There is no direct link to older entries on the front page anymore. You need two clicks to reach entries of only a two days ago, and there is a very limited number of stories on the front page. This could also contribute to lost views.
Agreed. Please put a link to older entries on the front page.
The whole damn thing is screwy. I’m glad they gave it a shot and it looks nice (sort of), but I miss the old site. I mean, who actually thinks putting the photo above the headline is a good idea? Lemme guess, your new “UX” guy?
I have to agree, the old site was better IMO. It could be that I don’t adapt to change as well as some people but I miss having everything right there, in chronological order where if I miss a day I can just continue through until I get caught up.
OMG, this is terrible. I don’t get the stupid crap people waste their time on. Who would actually ever play this for more than 2 minutes, once a year?
oh hi! welcome to hackaday! you seem to be lost…
am i being trolled here? k, i’ll try again.
oh hi JD! welcome to hackaday! this website features projects found on the web that generally fit into the category of “hacking” (or sometimes just building) things. one commonly accepted definition for “hacking” is “using things in a way in which they weren’t intended to be used.” many people enjoy engaging in such activities not merely for the end result, but for the experience of taking something apart and figuring out how it works. a deep understanding of a thing is usually required before one is able to take control over it and make it do something new. gaining such mastery can elicit a sense of accomplishment, pride, even awe at the cleverness of the thing being hacked. perhaps you have felt similar feelings in life — what do you enjoy learning about? what do you strive to deeply understand? if you wanted to make your keyboard play snake, would you know how? if not, where would you start looking for information? how much do you imagine you’d learn about electronics, signals, and mathematics in the process?
i hope reflecting on such questions will help you realize a bit of empathy for the person who engaged in this project. and next time you see someone spend time on something that you don’t understand, i suggest you ask about it with a less judgmental tone. it just might elicit a positive conversation from which all parties can learn something.
thanks for your participation here, and again, welcome to hackaday! i hope you enjoy spending your time here!
I would like to see the last half of the video though.
Great hack. Exactly what you have to do with this keyboard.
I don’t like the “gamer-stuff” but this one actually looks pretty good and with the arm cpu there are many possibilities to do other stuff.
Nice work Jeroen, as always. :) Let’s do some boardgames again soon, OK?
By the way, for the next update, you could try and put two games of Snake in there. Samuel L. Jackson would buy it instantly without reading the script. ;)
Would it be possible to do something like the water drop effect on a Razer Chroma keyboard? This is coming from someone with little experience in this subject.
Really nice hack, too bad there’s no first part in the videos. I have exactly the same keyboard. BTW the light in one of the keys is already shot after only a couple of months of not really too active usage. Granted, I tend to keep it with all lights on.
Keeping the lights on shouldn’t matter, they’re not light bulbs, LEDs don’t burn out. I’d guess it’s a mechanical problem. Dunno how the LEDs and keys are all connected together, but on something with that many connections I’d guess a connection has gone. Might be able to fix it if you opened it up. Then again you might end up with 150 pieces of expensive keyboard, depends how good you are at fixing stuff. It’s probably just a solder joint needs redoing.
Please be kind and respectful to help make the comments section excellent. (Comment Policy)