JP1 Remote Programming
While opening up an old remote to replace the batteries I noticed an unpopulated header marked "JP1" on the circuit board, visible from the battery compartment. Googling for this revealed a whole bunch of information on what this is and how to use it. The best place to start was http://www.hifi-remote.com/forums/.
This unpopulated header exists on many universal remotes and provides access to i2c. The most interesting device available is the remote's i2c accessible SEEPROM, which contains button mapping, protocol, learned button presses (on learning remotes), and more. These fine people over at hifi-remote and elsewhere have figured out the contents of the eeprom and have provided tools and instructions for manipulating it.
In practical terms for me, this has meant I can now get my universal remote to control things it previously couldn't, such as the Mac Mini, update definitions for devices released after the remote was made, and allows me to carefully control what buttons do which function, fine tuning it to meet my needs. Often times universal remotes are a bit too universal and map buttons in an odd way so being able to tweak this by hand is very convenient.
The downside has been it's an extremely tedious process. Aside from the tools, many of the readily available definitions have had the button <-> function mapping carefully crafted for a specific universal remote. If you don't have the same remote, the available tools will try to convert that mapping to your remote for you. This will almost always need manual tweaking, as your remote may not have the same buttons, or the buttons are arranged differently. When manually rearranging buttons, you’re working with terse 1 word descriptions of the functionality, and it's easy to misinterpret what that function actually does. When you get something wrong, or want to rearrange things, here's the process:
- Remove battery cover & batteries
- Connect custom made cable to header and computer
- Load up the software and make change
- Write change to remote
- Disconnect remote, re-insert batteries, test it.
- Repeat as necessary
So, while this can be a very time consuming process, once it is done, you've got a remote that is much more "universal" than it was before, hopefully much fewer remotes in service, and buttons mapped exactly the way you want them. Plus, all of this information you've put in is stored in the remote's SEEPROM so will not be lost between battery changes. Additionally, you can save your configuration on your computer and restore it as needed. If you've already got one of these remotes and the components necessary to build the cable, it can be a fun weekend project.