His friends call him [Jeroen], but everyone else on the Internet knows this god of hacks and mods as [Sprite_TM]. He’s done everything from hacking hard drive controllers to making the best computer ever made even better. As one of the preeminent hardware hackers around, we’re proud to have [Sprite] as a judge in The Hackaday Prize, and happy to interview him on his thoughts on connected devices, the cloud-based Internet of Things, and his process of opening up black box devices for some sometimes subtle modifications.
You’re well known for your highly technical electronic hacks on your
blog SpritesMods. What about the professional side of your life, what kind
of projects keep you busy there?
I’m a software developer for a big broadcasting equipment manufacturer. Every now and then a hardware project comes along and I try to grab those too.
I know you were involved with the Observe, Hack, Make Festival in
2013. Can you tell us your experience at this event and any others you’ve
attended in Europe (CCC, etc.)?
All the CCCs plus the summer festivals (OHM2013, Hacking At Random etc) are all pretty fun. The atmosphere is laid back and all kinds of spontaneous workshops, get-togethers etc seem to crop up. It’s awesome to get to see people you usually only meet on IRC and make new friends because you happen to share an interest in the same bit of hardware.
Also, the talks tend to be pretty good and diverse. You get deep stuff like hacking SIM-cards and cracking random hardware interspersed with talks about food hacking, political talks and random stuff like talks about guerilla knitting and fun things like Hackers Jeopardy.
Your talk at OHM2013 was about Hard Drive Hacking and your write-up makes that adventure look easy. Do you have a gut instinct for these things or is it always a grind to reverse engineer a system like this?
It depends. The steps are usually quite similar: get a feel for the system, be it a hard disk or a router or something, figure out how it works by poking around or disassembling binaries, make the changes you need, make sure the changes stay after a reboot. The steps themselves can be a grind: I’ve sweated way longer over the disassemblies of the hard disk firmware than I originally thought I would. That’s mostly because making sense of whatever runs in a system can be pretty easy or a big challenge: for example a Linux system with lots of business logic written in shell script will be a breeze compared to the dense and big ARM binaries that are on UI-less devices like hard disks.
Do you have any advice for other hackers who are trying to figure out
what’s going on inside of a “black box” system?
Well, I can name some obvious steps like looking for JTAG or a serial port here, but I’m going to go more meta. Try to read up on how other people hack stuff. For example: if you read up on how the previous-generation consoles have been cracked, you can learn a lot about glitching, faulty encryption, et cetera. The same thing goes for articles detailing how router flaws are found: it teaches you how to reverse engineer in a Linux context, which can be different from something like an OS-less hard disk. Also, look up the recordings of talks given at hacker and security conferences that discuss breaking the security of embedded devices: if any, it has helped me a fair bit with getting to know all the tools of the trade.
How did you first get into programming?
According to current standards, in the bad way. I started out programming on my dads Macintosh Plus, using Microsoft Basic. Later, I got myself an old XT so I could develop in QBasic. After a few iterations of upgrading my PC, I switched over to Visual Basic; one of the very first projects on my site was actually one of the last things I wrote in it. When I went to university, I became sensible and installed Linux, only to then move to PHP as my language of choice… After a while, I finally saw the light and now I do most of my non-web stuff in C or C++.
My embedded programming took a similar route: next to the messing with a parallel port that was common at the time, I also had a 80C52-BASIC board I could program. I then moved on to assembly: at first for the PIC (16C84) and for my GameBoy. I even managed to combine some things by writing a BASIC-compiler that could output Z80 code for the GameBoy, in Visual Basic. Later on, when Atmel released one of their first AVRs, I moved to that: in contrast to the cramped architecture of the PIC16 series, the AVR architecture coded like a dream. I now code mostly in C for the AVR and ARM platforms if I need something small or hard-realtime, and I use whatever Linux can run on for other embedded things.
What made you decide to become a software developer?
I don’t think I ever made the conscious choice to get into electronics or computers. I just always liked them and over the years, I became good enough at it to try and develop a career in them. I happened to come across a mostly-software job at a company I liked first when I went looking for work, so now I’m officially a software developer.
The Hackaday Prize calls for the next evolution of connected devices.
Is there anything particular that you’d like to see as part of that
One of the things I hoped for but is coming really close nowadays is the cheap-as-chips tiny Linux systems. With a HLK-RM04 (which is flashable to run OpenWRT), the VoCore and other small boards, this seems to actually happen. The nice thing about this is that it makes it very easy to connect whatever to a standard WiFi-network: just plug in one of those modules, connect a WiFi-antenna to it and hook it up to whatever you’re controlling. On the software side, write a small daemon that can talk a standardized protocol like JSON-over-HTTP or SNMP or whatever to make the functionality accessible and all of a sudden you have an Internet-connected device, all without using proprietary stuff like Z-wave or home-brew protocols you’d get with using e.g. NRF24L01s.
One of the thing I don’t really like is the cloud-based solutions some companies offer. Things like If-This-Then-That and the Electric Imp may seem pretty great, but won’t work when your Internet is out. Also, when the company for whatever reason shuts down the servers, you have bits of hardware and code you wrote that now are completely useless. I’d like it more when open standards are used, combined with open-source tools to control it all. An infrastructure like that could work like xmpp does: there are existing servers where you can get an account, but if you want to manage everything yourself you can install the software on your home server.
Speaking of connected, you once hacked a router to unlock its crippled features. What are your thoughts on the practice of
crippling devices for sale at a lower price?
Ideologically, I don’t know. Economically, it makes sense to strip features in software to differentiate the markets, but on the other hand it kind of irks me that in practice the hardware can do more than the software allows.
In practice, however, most the software-crippled things can be upgraded to their more-capable version by flipping a bit or performing a software upgrade. As a hacker, it means more features for less money, and I can’t really complain about that.
Why should companies use Open Design rather than following closed
practices like the “crippling” mentioned above?
Especially with technical devices, it tends to create a lot of goodwill in the community of tech-heads and geeks/hackers. We know that if something is open, we can expect some cool things from the community, and we also know that if we’re missing a feature, worst case we can solder it on ourselves. Less technical: we also know that if somehow your company goes tits-up or decides to cease support for the thing we bought, we can always count on our fellow hackers for bugfixes and new features.
The fun part is: if you can get the techs to like your project, you suddenly will make more sales than only those people. Usually, we are the ones that will advise our non-technical peers on what to buy. If we like what you do, word of mouth will make certain you will get a lot more sales.
The Hackaday Prize challenges you to build the future of connected devices. Build the best and claim a trip into space or one of hundreds of other prizes.