We’ve covered a lot of hardware projects here on “The Powerbase”, from completely open source creations such as the OsciPrime, to 2012’s incredible influx of Kickstarter campaigns. But none of them have kept our attention as closely as Jason Kotzin’s FLIRC.
Jason has managed to achieve a delicate balance between the obsessive attention to detail that comes from a one-man project and the high production quality you would expect from a commercial product. But what makes FLIRC really special is that Jason didn’t just create this project for his own personal gains, but instead did it as a way to raise money for Dr. Heinz Lenz at the USC Cancer Research Center, the oncologist who helped him through his 6 month battle with cancer.
Jason’s sudden success with FLIRC and personal life has kept him very busy recently, but we were lucky enough to get him to answer a few of our questions and gain some insight into this exceptional project.
The Powerbase: Jason, thanks for taking the time to talk with us. To start with, can you introduce yourself to our readers?
Jason: My name is Jason Kotzin. I’m a 29 year old Electrical Engineer living in Silicon Valley with my beautiful wife and we are expecting our first child in just a few weeks. I went to Cal Poly in San Luis Obispo, a phenomenal hands on school, and I work full time for NVIDIA. I have a number of side projects and one which occupies most of my free time called FLIRC.
FLIRC was a project I created to help solve a fundamental problem with media centers and to help find a cure for cancer. A portion of the company is held for the USC Norris Cancer Research Center and a portion of every sale goes directly to cancer research.
My wife and I are cancer survivors, and I’m approaching my sixth year anniversary.
The Powerbase: You’ve been cancer free for 6 years now, and officially consider yourself a cancer survivor. How has the battle with cancer changed the way you approach your life and projects?
Jason: I’ve had a fair amount of challenges in my life, but nothing compares with what entails being labeled a survivor. The fight and journey was at times unbearable, and chemo was impossible to put into words.
You come out of that fight a different person, nothing is too difficult, and every moment is not long enough. That’s how I live now, working day and night, incredibly hard, like each day is my last.
The Powerbase: When most people raise money for cancer research, they run a marathon. When you wanted to raise money for cancer research, you created FLIRC. How did you get to this point?
Jason: At first, we actually did that. I helped my wife fundraise with Team and Training and held multiple fundraising poker tournaments while I was working at Cisco. But I got extremely tired of asking people for money. Right around that time I thought of FLIRC and knew I couldn’t handle a full time job, FLIRC, and fundraising. So I decided to combine my efforts and donate a portion of every sale and allocate a portion of the company for my oncologist, Dr. Heinz Lenz.
What is FLIRC?
The Powerbase: Could you describe what FLIRC is, and how it differs from other products on the market?
Jason: FLIRC allows you to pair your television remote control with your computer. The idea came from a very big gripe I had with media centers. I set up a Linux machine, attached it to our TV, and both my wife and I enjoyed it. However, I was constantly told that the wireless keyboard that occupied the larger portion of our dining room table had to go. I’m a minimalist, and refused to buy another remote control. So I started looking into how I could use my own television remote to control my media center. I found LIRC, and was immediately frustrated. My remote wasn’t supported and required a new lookup table. I said to myself, “This shouldn’t be this hard.”
I came to the realization that every single media center application can already be controlled by my keyboard. Why not make my remote control look like a keyboard? That’s exactly what FLIRC does. Once set up, it just works.
The Powerbase: Is the configuration for FLIRC something you have to do on every computer you wish to use it on?
Jason: Nope, once you pair your FLIRC with your remote, your configuration is saved on your device. You can then take your FLIRC, and use it on anything with a USB port that supports keyboards. FLIRC will work with your previously paired remote without any additional software. A few unique examples are, Raspberry Pi, Xbox 360, PlayStation 3, Android 4.0, and the boxee box.
The Powerbase: Does FLIRC need any kind of special drivers or software to function beyond the initial configuration?
Jason: Only when you pair your device. Once paired, you are done. This software runs as a native application on Windows, Linux, and OSX. Raspberry Pi will be arriving shortly and is already in beta on the forums.
Opening the Source
The Powerbase: You’ve mentioned on your blog that the intent is to open up the source for your software, but it hasn’t happened yet. Are you still planning on opening the source? What’s held you back?
Jason: My software is a mess and I’m constantly trying to get it ready, but I’m almost there. As this is on the side of a demanding full time job, I’ve been having a tough time getting this at the top of the list. Each weekend I work, there is always something else that is more important.
The Powerbase: What about the developer API? Will that be open source when it’s publicly released?
Jason: I’m much closer to releasing the API. I needed to make some updates in the firmware to uncomplicated the interface. It’s much more simple now and I should have this released in the next month or so.
The Powerbase: What kind of things do you envision could be developed with the API? Anything in particular you would like to see a third party take on?
Jason: The API will allow full integration of pairing FLIRC in third party software. The idea is to simplify what’s already simple by minimizing even more steps. I’ll be looking to get FLIRC integrated into XBMC as soon as the API is done and published. We have another product in the works that is going to tie in with Raspberry Pi, and I can’t wait to see what people come up with with the API which will work on both.
The Powerbase: Have you given any thought to licensing for the final releases of the configuration tool and developer API? Is the idea to license the configuration tool in such a way that distributions will be able to provide their own packages for it, or even build it into Linux distributions intended for HTPCs?
Jason: I want to give away the API, and my application source as an example usage model of the API. I’d want to help developers as much as possible integrating the FLIRC programming model into their own application. If anything, I would license the hardware.
Yup, I’m looking to integrate the next product into embedded Linux distributions. That’s all I can say right now.
The Powerbase: Has anyone expressed interest in implementing FLIRC in their products or services? Something a little more mainstream than the regular XBMC/HTPC crowd?
Jason: One of the XBMC team members recently wrote in to say how they used used FLIRC as a Power Point slide switcher at their SCALE conference. Other than that, there hasn’t been any usage outside the media center world.
The coolest application has been inside a hotel in Australia as part of a solution for a new in room entertainment systems. The technology firm behind this will start deploying this into several hotels in Australia. To think that I may one day travel to Australia, pick up a remote, and be using my device…blows my mind.
The Powerbase: We’ve heard plenty of horror stories about individuals putting their own hardware devices into production. What has the experience been like for you? Any tips to pass on to others looking to get their hardware put into production?
Jason: My biggest advice is don’t go to vendors until you are absolutely ready, design everything beforehand. Too many times have I gone with something almost done, and asked a vendor if they can help complete the idea. Never give them room for creativity, you wont get what you want. Finish it in the states, go to a vendor, and say, “Here is my product, here are my design files, this is how many I want to make. How much will it cost?” I’ve been burnt so many times.
The Powerbase: One of the nicest things about FLIRC from a usability standpoint is that the configuration tool (CLI and GUI) is identical across all of your supported platforms. What technologies have you used to maintain your cross-platform software support? Any particular challenges or difficulties in keeping all the versions updated and working properly?
Jason: Yes, that was an amazing feat. I was relentless in wanting to deliver a cross platform solution that was seamless. I’m using QT, which allows you to create a GUI and compile that GUI on multiple systems. For driver communication, I’m using libusb-1.0.
Without a doubt, the biggest challenge was the USB work. When I first started, libusb-1.0 was not as mature, and quite simply didn’t work. Because FLIRC emulates a keyboard, the largest challenge was talking to a device that reported to the host as keyboard. The OS claims keyboards and doesn’t allow writing to them.
So the libusb community suggested making a composite device. This is a change in the configuration descriptor that tells the host, “I have two devices, a keyboard, and a vendor specific device”. That solved opening the device in windows, but there were a number of other issues and bugs that I worked out with the libusb 1.0 devs as I uncovered them.
After most of those driver issues were solved, it was several sleepless nights of coding, testing, and pulling out hair. 99.999% of the time, the trouble was with Windows, and only with Windows.
As I matured as a programmer, I re-wrote my build system, and now do all my development on the Mac with cross compilers.
I started with this: http://crossgcc.rts-
I contacted the author, and he sent me a sample mingw cross compiler with a QT addition. I worked with him and actually figured out how to make the equivalent of a qt-linux cross compiler for the mac, which I will share with him to post.
Now, from my Mac, I can build Linux, Windows, and Raspberry Pi versions without ever bringing up the virtual machine.
The Powerbase: If there was one element of the FLIRC project you could change, from concept all the way to the final hardware and software, what would it be and why?
Jason: I would change the microprocessor. I’m using an 8 bit micro that runs at 12Mhz and it’s biggest limitation (for cost) is that it uses a soft USB stack. Everything is timing critical and because of this, one simple change to the firmware could break USB, and it does. It’s absolutely frustrating, has hindered development, and I hate it.
I would go with a low cost 32 bit ARM cortex M3 next time, and often think about changing, but the ramifications would be absolutely huge. Now, 3 years from when I started, this is actually cost feasible.
Next time, I would also write all the firmware so that it’s architecture agnostic. I would plan ahead, and make sure that I don’t put together a finely tuned piece of firmware for that particular microcontroller. I would in the future structure it in such a way, that should I want to switch to something new, it wouldn’t be an overhaul of code.
For the record, this interview started in April of 2012, and has only this week been completed. From the skyrocketing success of FLIRC to the birth of his first child, Jason has had precious little free time. But he is as much a man of his word as he is busy, and when he said he would do the interview he meant it.