[ do default stuff if no widgets ]

Archive for the ‘Software’ Category

Software and SDK Updates

Thursday, August 17th, 2017

Software v2.6.0 Released

Version 2.6.0 of the GUI has been release. In this version there are two updates, new firmware version, and the ability to enable / disable built in profiles. Under advanced, you can now enable and disable each profile independently. This feature was done and promised for nearly a month, and we decided the feature, problem, and solution were novel, so we filed a patent. In order to try and protect anything globally, we couldn’t release the software until after the patent filing.

Firmware v4.2.1 Released

Also included in this version is a new firmware which will allow sending of RAW IR signals as outlined in the previous blog post.

SDK Updated

Kinda botched the original release with a ton of garbage commits as I got all my build software working. So I scratched it and started over. Also included in this version are static and dynamic libraries for Windows.

SDK Release, Linux, RPi, IR Transmit Support

Sunday, August 6th, 2017

Linux Updates

Over this past week I’ve re-written my linux deployment scripts. It was brought to my attention that things weren’t working right. A number of errors related to packages not being signed and trusted, which was fine on older versions of linux, but newer versions of debian weren’t having it. Also in combination with the released of the SDK, this had to get done.

I’ve also cleaned up the installation instructions and am now building standalone versions for users without debian. Not quite enough time to try and do RPM support, but it is planned. This should be more than sufficient for now. I’ll need to throw some instructions in the standalone version, but at least I have something up versus nothing at all.

You can find all this on the linux downloads page.

Raspberry Pi Release

As part of the linux deployment scripts, I’ve also taken the time to do one for the raspberry pi. Now the raspberry pi has it’s own apt repository, commandline version, and GUI. Long overdue. This was also a necessary step in order to build a static library for the released SDK.

SDK Release

We build all the flirc software around the SDK. So everyone can grab the SDK on the Flirc github page.

Needed is a lot of documentation. However, this is 99% identical to the same flirc_util cli that ships with the GUI. The only thing that’s not identical is the version command, which I’ll address later. But it serves as a complete example to integrating flirc pairing into your own application.

The libraries will be updated as part of GUI releases. It’s all part of the same build scripts. You’ll notice a lot of erroneous commits, that was just me working on my deployment scripts. That will stop.

Still needed is a python/perl wrapper, dynamic libs, a windows lib, and some better documentation.

IR Transmit Support

One of the new features on the new flirc is the ability to transmit IR code. There is a very small transmitter in flirc, it’s power isn’t the best, but it could certainly be useful for some home automation. I have some better features planned regarding this, but for now, an initial release is ready for users to start playing with. It only works with raw code right now and doesn’t understand protocol. The format is a comma delimited list of edges, that coincidentally can be retrieved with the GUI. Enable IR Debugging, hit a button on your remote, and you’ll get your list of edges. The :e:<num> is the delay in ms seen between packets. A big number means you haven’t hit the button in a while.

The latest API supports sending IR through a simple interface:

The commandline also supports sending a packet out with the exact list of edges seen.

Example code in the SDK is fairly straight forward, it parses the list of comma delimited edges, checks for errors, puts it in a buffer, and calls the api:

For the IR transmit to work, you’ll need firmware version v4.2.+

I’ll post this in the forums somewhere, or you can email me, but I expect to release this publicly in about a week after I do some more testing.


Updates Updates and Updates

Saturday, July 8th, 2017

Big Developments

Was a great couple of weeks. I’ve been working hard on some major efforts and they are all starting to come to fruition.  I’ll share some of the more exciting news.

New Flirc Raspberry Pi Case

I know we don’t have a landing page for the new case design yet, but all new orders of the case will be of the new design. Some big improvements:

  • New manufacturing process, it’s gorgeous, perfect surface
  • SD Card now accessible on the PI3
  • Heat Slug now properly covering 100% of the Pi3 CPU
  • Overall Better

Unfortunately hit a snag with the talented artist who helps with design material for my website. So I’ve fallen behind making a new landing page. It’s coming.


Harmony Support

Logitech is an important partner, a lot of users have logitech remotes. So we’re adding some new profiles to the Logitech line specifically for flirc. Windows Media Center, and Shield. What this means, is if you have Windows Media Center, and a Shield, add these devices to your harmony, and it’ll work out of the box without any additional software or pairing. What’s the difference between Microsoft WMCE and Flirc WMCE? Flirc WMCE uses the flirc profile, and is going to work much better than the Microsoft protocol which is chaotic, and different for every MS WMCE remote.

On top of those profiles, we also added the ‘.’ (period). Something that was requested.

The harmony profiles will go live on Monday.

Firmware Updates

Holy shit where to begin. Some major happenings. I’ll start with Flirc Gen1.


I have made an update to the Flirc Generation 1 hardware that allows software to tell the difference between Streacom Edition Flircs and regular Flircs. This was so overdue, it’s sad. Now, the GUI can tell the difference between the hardware, and users can now finally program the power button with the GUI.


  • new hashing algorithm with 10x perf
  • new logging output architecture
  • ability to log raw timing ir waveforms
  • minor algorithm improvments and bug fixes
  • ability to disable/enable built in rom tables
  • fixed issue which didn’t detect re-pressing
  • adding new Shield and WMCE Flirc profiles
  • updates to built in kodi profile
  • many bug fixes and architecture improvements

GUI Updates

Improvements to the GUI were also published which include:

  • advanced window for gen2 updates and improvments
  • new streacom controller for recording power off
  • New device log window to show the raw timing of IR signals.

One of the biggest updates was to the GUI which allows us to read the device log and enable the ability to print out raw timing wave forms of the IR signals. This is going to be great. Rather than buying a bunch of remotes, users will be able to capture the waveform, save to a text file and send to me. And in the near future, I’ll be able to load these files onto a flirc, and ‘playback’ exactly what your flirc saw. All made possible to the amazing software architecture in the new flirc as well as the new more powerful arm processor.

App Pad

App Pad is an application that will hopefully be released in a couple of weeks. Wont say much until the big reveal, but it’s going to be one of the greatest companions HTPC owners could ask for. And it’ll be completely free. Stay tuned.

Remote IR Protocol

I will be publicly releasing the Flirc IR spec shortly. I’m working on converting this into an open doc.

IR Transmit Support

Working on this now, it’ll be in the next major release


Long overdue and in progress

Flirc Kodi Case

Because we released a new version of our raspberry pi case, and boy is it awesome, we’re discounting the kodi cases since they are based on the original design. Get em while you can.

Firmware, GUI, Company Updates

Friday, June 16th, 2017

It’s been a very busy, exciting, and challenging year. I’ll give some broad updates and focus on some of the smaller details. I’m trying to be a bit better at what I’m working on, so I’m actively updating a new status board page.


  • We welcomed our beautiful new daughter Lily Coco Kotzin into the Flirc family and team.
  • I moved the business out of the home and into an office. We’re in a great location, and it’s got plenty of room to grow.
  • Had a booth at Maker Faire in the bay area.
  • Flirc Gen2 has had a number of fixes and improvements (more later)
  • GUI Updates
  • Finally Wrote a Manual.
  • Backend Website improvements for our new product we hope to release later this year
  • Flirc Raspberry Pi Gen2 Case should be arriving to headquarters soon

All of these things within itself were major feats. I especially want to give a loving thank you to my amazing wife, who made Maker Faire possible, and without, there would be no Flirc. She gives me constant encouragement in the hardest of times, which grow in difficulty as the company grows in size.

All these release notes can be found on the Downloads Page under What’s New.

Firmware Updates

Since the release of Flirc Gen2, there have been countless challenges. A number of issues have come up that are rare, and nearly impossible to reproduce. Rather than focusing on firmware features, I’ve been hard at work solving some of the most technically challenging problems I’ve faced. If you haven’t gotten the new firmware, please do, it’s a must. Since the release, here are the main updates

  • Fixed a rare issue on windows that wouldn’t wake up the machine
  • Performance improvements
  • Algorithm improvements
  • Bug fixes
  • Fixed stuck keys
  • Fixed NEC repeats
  • Fixes for button already exists issues
  • Will wake up the machine in S2 and S3 states now too
  • Windows media center support fixes
  • Working on PS3/PS4 fixes

Things are looking good with the current release. So I’m back to working on architecture, and feature planning. To help solve customer related issues, I’m working on some improvements to save all IR signals in your room. The intention is to basically record everything that’s seen in your room in the infrared spectrum, and then reproduce it in the office so I can get to the bottom of why our unit might not be working. Right now, I basically have to buy your remote. I wont need to do that anymore. One of the resulting features that comes from this is the IR transmitter on Flirc. Work has begun on that, and I’m excited where it’s going.


I’m also fully engaged trying to bake in Flirc support on Inteset remotes. Flirc has it’s own special IR protocol, which will guarantee not to conflict with anything else in your living room. This infact will be the same protocol the harmony remotes use.

New Built In Protocols

I’m working with both inteset and harmony to beef up the current profiles. I’d like them to add the following:

  • NVIDIA Shield
  • Plex
  • PS3/PS4
  • WMCE
  • XBox

Because the protocols are my own, I wrote some code to generate all the key codes needed. So in fact, I will release a firmware update before them that will add these devices to everyone’s flirc, and they will be supported once logitech and inteset add the codes to their databases.

Algorithm Improvements

Huge improvements were made to the algorithm today that baked in a 10x hashing performance. This is huge, and a much needed and welcome addition. Since I do my hashes in interrupt context, I needed to speed this up. This was actually a needed addition before I add remote buddy support.

GUI Updates

  • Fixed issue where firmware can be stuck in bootloader
  • Fixed a lot of issues which would cause device to show up as ‘disconnected’
  • Advanced window for gen2, shows device sku
  • Gen2 can now do ‘force upgrade’ in advanced (Good for testing out firmware and reverting back to Stable)
  • GUI intelligently shows firmware update release notes
  • Major bug fixes
  • Controller updates (WMCE)
  • Many many more (see the release notes)

One of the biggest issues I face is letting users know of new firmware updates. I have a couple ideas to fix this.

I’ll be a bit better at blog updates, and try and post bi-weekly.

Here is a pic of the family at Maker Faire, Thanks to everyone who stopped by. It’s always a pleasure and treat when someone walks by the booth, does a double take, and says, “hey! I have one of those!”

GUI and Firmware Updates

Monday, February 13th, 2017

Been pretty busy fixing bugs and pushing updates.

It’s pretty important at this point to grab the latest version of the GUI and update your second generation flircs. I’ve fixed a number of bugs, as listed below


  • fix stuck key syndrome
  • Better NEC repeat support
  • fixes issue when host wakes from sleep (still needs work)


  • ability to show firmware differences between version_x and version_y.
  • NVIDIA Shield addition
  • XBOX remote should not have go button
  • New OS icons
  • fixed an issue with windows upgrades
  • fixed very rare occurrence of firmware getting stuck in the bootloader
  • disable advanced settings for gen2 devices, not supported yet
  • better support for semantic firmware versioning
  • better logging
  • support for loading gen1 configs on gen2 devices
  • lots of bug fixes

Updates are coming regularly. As soon as I solve the last firmware bug, which is the present on waking up from sleep, I should be on to the new features. Make sure you sign up to the news letter or follow us on twitter for announcement to those.

One more thing, Fuck Donald Trump, his corrupt cabinet, and every fucking republican defending him. They look incredibly stupid, keep doing it.

Happy Flirc’ing.

Flircs Shipped and Software Posted

Thursday, December 8th, 2016

Just in time for everyone to get their gorgeous new flircs, the software has been updated to a new major release, v2.0.0

While everything generally will look and feel the same, there are substantial changes under the hood. The GUI and Firmware will be refreshed very frequently, and in doing so, I am looking to hire someone that can help with the front end and push forward new ideas/products.

One of the most exciting new features about the new Flirc is that it we no longer need any windows drivers. No more bullshit with windows and zadig, it’s just going to work. This was done by using a custom HID device and sending data over Report IDs. But it’s so much cooler than that. Months were spent architecting a solution that is abstracted away from the hardware and away from the physical transport. What this means is that we can send packets and data to a device, regardless of weather the physical transport is USB, Bluetooth, Wifi, Serial, I2C, etc. The device just needs a supported stub, and everything just works.

Below is a snippet of some firmware code. This is just awesome. Before, when we wanted to talk to the firmware, we’d have to hijack a bunch of USB crap and everytime we wanted to add a new command, it would be a ton of work on both the host and the device. The below essentially instantiates a command called get version. Every time a new command is received on the device, the handlers are iterated through, and run if found, run. The best part about all of this, is that the code below doesn’t care if the USB packet handler called it, or some other transport. Why this is important will be clear down the line as we release new products.

The new flirc and software fully embraces this philosophy of portable code. The entire firmware is architected using a modular approach. All the code that makes flirc, flirc, is done in ANSI portable C, completely done outside the notion of the hardware that it’s running on. The firmware was over a year of planning and can run on hardware outside the processor chosen. We can switch on a whim’s notice if needed.

I will also be working on solidifying and publishing the API, and fixing up various aspects of the site that have been lagging.
Just a note, that the sparkle self updater on mac is currently broken. I currently believe this is due to an incompatibility in Sierra, and I will need to update the embedded library. I will be looking at this shortly.

Also currently not up to date are the statically compiled linux builds. These will be posted within the next 24 hours. The ubuntu, linux, and mac releases are all the latest. Write in for any trouble here:

New Release Candidate, built in Amazon FireTV Controller

Monday, September 15th, 2014

Head over to the forums and try out the latest release. Firmware 3.0 is shaping up nicely, a ton of stuff was fixed, and I’ve got a beautiful amazon firetv controller in the GUI to help you pair your remote to use with the amazon firetv.

Screen Shot 2014-09-15 at 11.32.15 PM

v1.0.0-rc.5 Released For Testing

Monday, November 18th, 2013

Release Notes


Update and Progress

Monday, November 26th, 2012

I failed to update the blog these past couple of weeks and I apologize for that. I thought I would at the very least give a brief update of progress.

Things are going very well and I’ve made tremendous  improvements to the build system. I’ve pretty much solved all technical hurdles I was struggling with and have it about 85% complete. It’s sustainable, scalable, and will allow me to cross build, deploy, and solve all my shared library issues. I have static analyzers as part of the build system and many many more improvements.

I’m at the point now where I can start ripping apart the code and improving on it. It was absolutely necessary that I fixed the build system before continuing development. My git repository was an absolute cluttered and broken mess with branches going no where.

All this time I’ve been mapping out how to restructure the firmware. My goal is to have major releases by the end of the month of both the firmware and the GUI.

I’m also completely out of inventory. I have a sample test batch coming wednesday which took the manufacturers way to long to make. Should those be good, the first 100 pre-orders will go out immediately and I will start the next major build.

On a separate note, does anyone use twitter anymore? I occasionally get new followers and am curious if people actually like twitter as a line of communication. Let me know in the comments. I haven’t used it in quite a while.

Software Progress

Monday, November 5th, 2012

As promised, I wanted to give everyone an update.

Not a big one today, I’m still working on the software build system, which isn’t done. Getting stuck on a technical problem, I took a break from that and am working on firmware development.

I’m re-structuring all my code so I can solve these bugs with sleep, sticky buttons, and long presses. I’ve begun strengthening my algorithm to better support other remotes and so you don’t have to record keys twice with the RC6 protocol. I’ve also completely revamped things a bit so the firmware works differently. Previously, the firmware would set an interrupt  back to the host on the event of a button being recorded. Anyone familiar with libusb, set_interrupt(), this function blocking. Which means that in order to write the host side software, I needed a separate thread to wait in set_interrupt. This isn’t good and made my API terrible, confusing, and easy to get wrong when I release the software.

Now, the flirc firmware uses a state machine for recording. The host PC can ask flirc the current ‘state’ in a polled mode, which means that I don’t need a separate thread.

This doesn’t mean much for customers other than it’s the beginning of me getting back into firmware development. For developers looking to integrate flirc into products, this actually means a lot.

I’ve also begun working on something ultra cool, and I’ve got some of that up and running. Hopefully I can make an announcement in a couple of weeks.

Until next week…