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.

@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