Program Harmony remote controls from Linux, Windows, or Mac!
C++ C Python Objective-C Shell Perl Other
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
concordance Fix warnings reported by GCC 7 Aug 4, 2017
consnoop Major cleanup for Concordance Windows build. Oct 6, 2013
libconcord Fix warnings reported by GCC 7 Aug 4, 2017
specs Add support for Harmony Link. Sep 10, 2013
.dir-locals.el Needed to add c++-mode to .dir-locals also. Feb 17, 2014
.gitignore MINOR: Ignore binding generated files Aug 22, 2014
Changelog Verison 1.2 bump. Apr 7, 2015
INSTALL.linux Version 0.22 prep. Aug 1, 2010
INSTALL.mac Version 0.22 prep. Aug 1, 2010 Major cleanup for Concordance Windows build. Oct 6, 2013
LICENSE Fix the placement and name of the license file. Thanks to Stephen for… Mar 26, 2008 Update Logitech website address in documentation Aug 10, 2015
ReleaseChecklist Bump libconcord version in Windows installer script and add reminder Apr 23, 2015
SubmittingPatches SubmittingPatches: Jun 21, 2008
TODO The CVS work was finished by SF, but somehow our TODO disappeared (the Apr 11, 2008


This software allows you to program your Logitech Harmony remote using a configuration object retreived from the harmony website:

The website is required. The website is required in Logitech's software as well, it's just that their software wraps the website. Their website has all the logic on what codes work with what remotes and what hardware, etc. The software just takes the binary blobs that the website makes and writes it to the remote control. This is true for both Logitech's software and this software.

However, this software has some extra functionality such as being able to dump (backup) your existing config, being cross-platform, and giving you extra visibility into what's actually happening with your remote.

Here is how you use this software:

NOTE TO MAC USERS: You need to use 'sudo' since you don't have udev.

NOTE TO LINUX USERS: This assumes you have proper udev support setup (see the INSTALL.Linux file in the libconcord source). If not, you'll need to use sudo or be root.

  1. I got a file from the website, do something useful with it.
concordance <filename>

This will attempt to figure out what to do, and do it. Note that the update process sends TWO files: a connectivity test and the update. You will need to do both.

  1. Backup the config
concordance --dump-config=/tmp/config.EZHex

This will read the config off of your remote and write it to /tmp/config.EZHex. It's a good tool for development as well as backing up your config. This can however be created from the website. The equals is needed if you pass in a filename since the filename is optional. If you don't specify, concordance will use 'config.EZHex' in the current directory.

  1. Connectivity test

Go to, and when you're ready, choose "Update My Remote." Before Logitech provides an actual config, they will first attempt to do a connectivity test. Downloaded the Connectivity.EZHex file, and then run the test:

concordance Connectivity.EZHex

If that doesn't work, you can tell concordance what it is manually:

concordance --connectivity-test Connectivity.EZHex
  1. Write a config

Once the connectivity test is successfully completed, the site will prompt you to download the actual config in a file called Update.EZHex. Save it and then you can use it with:

concordance Update.EZHex

Again, concordance should do the right thing here, but in case of problems you can explicitly tell concordance what to do with:

concordance --write-config Update.EZHex
  1. Backup the firmware

Sometimes the site will want to update your firmware. Concordance allows you to backup your old firmware so you may later revert if you prefer. You can do this with:

concordance --dump-firmware

This will read the firmware off of your remote and write it to fimrware.EZHex. See "1. Backup the config" for more information.

  1. Write firmware

NOTE: This feature is only implemented for certain models. Please see:

However for models we support this on, it works like this:

concordance Firmware.EZHex

Again, if you have a problem, you can tell concordance what to do explicitly:

concordance --write-firmware Firmware.EZHex

There are other options - check out the --help one!