i2c remote evilness
When I built my PVR a few years I bought a OneForAll URC-7562 6in1 remote control; with a surround sound amp, TV, NTL cable box, DVD and PVR the number of remotes around the place was getting a bit ridiculous. The main reason for choosing this remote was its ability to control the NTL box, which uses some odd IrDA based format apparently that even lirc has difficulty making sense of and learning remotes mostly ignore. It also had the ability to be upgraded remotely by phoning up a support line and they'd squirt some noise down the phone that the remote would understand. I had call to use this to enable my Scan DVD player when I first got the remote and it worked fine and I was quite impressed.
However the remote also features another neat way to do upgrades. It has a 6 pin header in the battery compartment that is know as the JP1. This exposes the I2C bus that the configuration EEPROM lives on and there is a good amount of information out there about understanding the memory layout and adding support for new remotes etc. I'd been meaning to build the adapter to connect up since getting the remote but until recently hadn't really had a reason. However although my new TV is vaguely supported I'd really like to be able to remap the keys more sanely. So last weekend I discovered I had the appropriate bits lying around and built one.
Unfortunately most of the software is for Windows; there's a Java app that
will generate the appropriate data to feed to the remote, but the main
communication tool is a Windows app. I found a couple of old Linux tools,
but then I had a thought: it's just i2c. Why not tie it into the proper
i2c subsystem? Turns out the i2c-parport
driver makes this sort of
thing easy; all you add is a single entry defining the appropriate
parallel port lines to wiggle and it all magically works.
So now I can talk to my remote using the eeprom driver talking to the i2c subsystem which talks to the remote over the parallel port adaptor I built. Which feels wonderfully sick. :) Now I need to actually have a closer look at getting all the buttons working for my new TV...