Skip to content

Instantly share code, notes, and snippets.

@amhendley
Last active December 10, 2024 17:07
Show Gist options
  • Save amhendley/89965125556b219f84fd to your computer and use it in GitHub Desktop.
Save amhendley/89965125556b219f84fd to your computer and use it in GitHub Desktop.
Setting Up a Logitech Harmony Remote on Linux

Setting Up a Logitech Harmony Remote on Linux

After a fair bit of web searching and hacking, the following information should enable you in the configuration of your Logitech Harmony Remote and installation of client interfacing software on Linux to update your universal remote.

These instructions were compiled using Linux Mint 17 (Qiana) x86_64 and Firefox 34 at the time of writing.

Steps

Install Dependencies

The following is a list of identified libraries and tools the subsequent software for using your Logitech Harmony Remote.

  • python-suds
  • python-ctypeslib
  • python-wxtools
  • libudev-dev (more than likely will need to install this using Synaptic as apt-get was giving me grief with versioning and dependency issues)
  • libusb-dev
  • libzip
  • libzip-dev
  • autotools-dev
  • autoconf
  • automake
  • libtool
  • git

Just to make it easy to copy the list, use the following command.

sudo apt-get install python-suds python-ctypeslib python-wxtools libudev-dev libusb-dev libzip libzip-dev autotools-dev autoconf automake libtool git

Configure/Make/Install hidapi

Reference (https://github.com/signal11/hidapi)

The best approach for the hidapi library is to clone from it's GIT source and build from this. Firstly lets grab it from GIT.

cd ~/Downloads
git clone https://github.com/signal11/hidapi.git
cd hidapi

Assuming that all the dependencies have been satisfied, we can build from the source code and install the library.

./bootstrap && ./configure --prefix=/usr && make && sudo make install

If you wish, you can refer to the README.txt file in the root folder of hidapi for further information.

Configure/Make/Install libconcord

Reference (http://www.phildev.net/harmony)

Download the latest TAR ball file from http://sourceforge.net/projects/concordance/files/ and extract. For me it was concordance-1.1.tar.bz2.

Change into the libconcord folder assuming you saved the download to your Downloads folders.

cd ~/Downloads/concordance-1.1/libconcord

Now lets build and install the library.

./configure && make && sudo make install

Python Bindings

For the congriuty application later on here, we need to install the Python binding to ensure the application can use the libconcord library.

Run the following commands.

cd bindings/python
sudo python setup.py install

UDEV ACL Support

(part of libconcord)

Before moving to the next application, we need to ensure that all users can access the remote control.

While still in the libconcord folder, run the following command.

make udev &&& sudo make install_udev

You can refer to the INSTALL.linux file in the root folder of libconcord for further information.

Configure/Make/Install concordance

Reference (http://www.phildev.net/harmony)

I only build and installed this application as a end to end process, but after installing the following application congruity, you could get away without this application. Anyway, I did just for paranoia's sake.

Change into the concordance folder.

cd ../concordance

Now lets build and install the application.

./configure && make && sudo make install

Again you can refer to the INSTALL.linux file in the root folder of concordance for further information.

Make/Install congruity

Reference (http://sourceforge.net/projects/congruity)

Finally the last application to build and install is congruity. Start by downloading the latest source code from http://sourceforge.net/projects/congruity. For me this was congruity-18.tar.bz2.

Change into the folder congruity-18 and run the following command.

sudo make install

Device Node Access Setup

So the application can see the remote when it is connected to the PC, we need to create a device rule.

More than likely there will not be an existing rule file so we will create a new one as follows.

sudo nano /etc/udev/rules.d/90-concordance.rules

Enter in the contents of;

SYSFS{idVendor}=="046d", SYSFS{idProduct}=="c110", MODE="666"

And then save the changes. These will automatically be picked up and applied by the system.

Things to note

You will more than like need to change the idVendor and idProduct values. To confirm what values you will require, run lsusb and look for the Logitech Harmony Remote entry as follows.

$ lsusb
...
Bus 003 Device 010: ID 046d:c122 Logitech, Inc. Harmony 700 Remote
...

Where you can see an ID column that contains two sets of Hex numbers, the first Hex number is the vendor ID and the second one is the product ID. Substitute these as required above.

As before, you can refer to the README.txt file in the root folder of congruity-18 for further information.

Putting it all together

Now lets start using this all in anger. Start by connecting your Logitech Harmony Remote to your PC and if you paranoid like me sometimes, confirm that the remote is visible by running lsusb and see if you can see something along the lines of Logitech Harmony Remote. This is what I got even though I have a Harmony 650 model. It all still works in the end.

$ lsusb
...
Bus 003 Device 010: ID 046d:c122 Logitech, Inc. Harmony 700 Remote
...

Next fire up you web browser of choice and navigate to http://members.harmonyremote.com/. Ignore any suggestion that if you have a certain model, like I have (a Harmony 650), to go to a different address. Create a new account if you do not already have one.

You should be asked to step through a number of different screens to add devices and what not, but you will eventually get to a point where you will need to verify the original remote physically and perform what's called an IR Learning exercise. This is where congruity comes in where the browser will download a file where the file extension should be registered with the congruity application. Again, steps though the various screens and away you go.

Gotcha's

One annoying bug/feature I did come across when running through all the remote learning process, is that the site page refreshes may not pick up on the fact that you have actually finished stepping through congruity and sometimes I did have to step through the steps a second time by refreshing the page or wait for a period of time for it to actually recognise my part had been completed.

Patience is a virtue here. Whether it is a Firefox thing, I do not know.

That's about it.

If you do have any further suggestions, tips or advise that others can use, please do let me know. Questions are also welcome and I will see if I am are able to help.

@tabashir
Copy link

@mikewaters
This was worked around for me by installing the ignore X-Frame header extension in firefox.
https://addons.mozilla.org/en-US/firefox/addon/ignore-x-frame-options-header/
More info here:
jaymzh/concordance#17
I can't take any credit, but happy my remote programming is working again!

@awenocur
Copy link

awenocur commented Mar 6, 2020

I added updated Gentoo builds for these tools to my general-purpose overlay: https://github.com/awenocur/asw-custom-software-gentoo

This tutorial enabled me to generate these; they work with the EasyZapper link posted above, running in stock Firefox 68.5.

@sirus20x6
Copy link

I get the Notify Website error on firefox and a white refreshing screen on chrome. That's with the extension on both of them.

@amhendley
Copy link
Author

Hi @sirus20x6, Must admit I have not look at this for some time and changed laptop devices a few times since as well. I can re-look at this at some point to see about updating these instructions.

@roboknight
Copy link

On Groovy Gorilla (PopOS or Ubuntu... Same thing I suppose) I was able to (with a Harmony 650):

sudo apt install congruity

That made most of the above steps unnecessary, except for the udev rules. Then I plugged the device back in and it appeared to "work" up to a point, but it doesn't appear that you are able to log into the website using this method. I then ended up having to dredge up an old Windows XP virtualbox image. I was able to install their older software and it seemed to work fine. But, seriously, there has to be something better than either of these options. Having to go to a website that is dependent on whether or not the OEM wants to run it or move it around seems like a good way to end up with the remote in a landfill.

@raleighlittles
Copy link

Logitech-Harmony-Remote-website-not-working

Looks like the Harmony website doesn't work anymore 😢

@CatmanIX
Copy link

@raleighlittles this url should take you directly to the login screen, bypassing the software update check: https://members.harmonyremote.com/EasyZapper/New/Main.asp?WebProcessAction=Start&ClassId=HarmonyProcess.ProcLogin

the "Login" button doesn't seem to work, but just hitting the enter key after filling your credentials still seems to work fine

@patrickaclark
Copy link

@raleighlittles this url should take you directly to the login screen, bypassing the software update check: https://members.harmonyremote.com/EasyZapper/New/Main.asp?WebProcessAction=Start&ClassId=HarmonyProcess.ProcLogin

the "Login" button doesn't seem to work, but just hitting the enter key after filling your credentials still seems to work fine

I just tried this, and now when you login, it goes back to the software update available loop :/

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment