June 18, 2008

Simplifying infrared device configuration

Author: Nathan Willis

Building a MythTV digital video recorder (DVR) is a series of small battles -- configuring digital sound, aligning your video sources and channel guide data, getting XvMC running, and so on. Any tool that simplifies one of those battles is welcome, and GNOME LIRC Properties promises to be just such a tool. It is a shortcut to configuring infrared receivers and remote controls, and although it is not perfect, it is a good step in the right direction.

MythTV is not alone in its use of infrared (IR) receivers and remotes, but it is the most popular of the Linux DVR projects, which is the most popular category of IR-supporting applications. Linux's IR support is more akin to configuring a printer than a keyboard or mouse. IR devices do not interact with X Windows (at least, not natively); you must find and load (and in some cases compile) the proper drivers for your hardware, and you must set up a special service to send and receive IR events.

Linux communicates over IR by means of the Linux Infrared Remote Control (LIRC) system. Among other things, the LIRC project provides lircd, a daemon that listens to IR receivers (USB or serial), recognizes the codes sent by remote controls, and triggers application launchers or events in response.

The keys to making LIRC work with your remote control -- from a simple remote bundled with a video capture card to a programmable, universal remote -- are finding the right driver for your IR receiver and setting up the /etc/lircd.conf configuration file to decode the signals from your remote. In the old days, this meant tracking down the hardware by make and model number, loading the right kernel module, and tweaking your lircd.conf based on the success stories of users who had gone before.

It is that process that GNOME LIRC Properties is meant to replace. The utility can auto-detect hardware, and exposes the supported drivers and configuration options in an easy-to-use drop-down selection-driven GUI. Once you have made a selection, you can test it, and if you're satisfied, write the changes out to the configuration file.

Getting it and getting started

You can download GNOME LIRC Properties from its page at the live.gnome.org wiki; source code tarballs are provided. The dependencies are LIRC, Python, PyGTK, and PolicyKit. Before you go to that trouble, though, check and see whether your distribution provides a package. GNOME LIRC Properties began as a project at Fluendo and was integrated into Ubuntu 8.04, but there is talk of including it in other GNOME-supporting distros like Fedora and openSUSE. If you must download the tarball, a traditional ./configure; make; make install three-step install is all that is required. The package will install a launcher as the System -> Administration -> Infrared Remote Control menu item in GNOME.

The application's interface is split into three sections: the topmost for IR receivers, the middle for IR remotes, and the lowest for testing the selected configuration. Clicking the Auto-detect button at the bottom of the IR receiver section searches through the database of known IR receivers, looking to see if an attached device matches. For some IR receiver hardware (such as USB receivers) this is simple, but the software can't detect all receivers. Many users will have to choose their hardware with the Manufacturer and Model pull-down menus. If your hardware is among the choices provided, all you have to do is select it (possibly providing details like the serial port for serial-connected receivers). If it isn't, try the auto-detection option.

Likewise, you can choose the appropriate remote control from the drop-down boxes in the second section. For receivers that normally ship bundled with a remote (such as Hauppauge DVR kits), the "Use supplied remote control" setting should suffice. For other remotes, you can select the manufacturer and model if it appears in the list of those known, and edit the configuration directly if it does not. Hidden within the Custom Configuration dialog is a remote auto-detect. Once you update your configuration, you can test it by watching the bottom section of the window for feedback to your button presses.

Pitfalls and practicality

For the hardware that GNOME LIRC Properties understands, the tool works well: straightforward and simple. Compared to the time it takes to wade through the man pages and (often conflicting) wiki and forum threads, setting up IR with this utility is a breeze.

The limited set of supported receiver hardware is the app's main weakness. It does not recognize every LIRC-supported receiver; instead it relies on its own local definitions (receivers.conf and overrides.conf in the tarball). For the version that ships with Ubuntu 8.04, that amounts to just seven types of receiver. Granted, for each of those seven, multiple models and revisions from the same manufacturer should be compatible, but it is still far from complete.

I tested GNOME LIRC Properties on three machines, each with a different type of receiver, but none matched up with a supported model. That left auto-detection as my only option, which presents a dilemma. For the app to correctly auto-detect the IR receiver, it must be already running. There are doubtless a lot of mainstream receivers that are not in the receivers.conf list but are detectable, but if yours fails both criteria, you are back to manual configuration. I hope that GNOME LIRC Properties will continue to add support for more receiver hardware.

Receivers notwithstanding, GNOME LIRC Properties is still useful for its remote control configuration ability. Receivers are more of a hassle than remotes; they require finding and loading drivers, while remote configuration is just a matter of putting the correct parameters and key codes into the configuration file. But wading through pages of remote configurations is a chore nobody wants. Selecting the right remote from the drop-down menu and then seeing whether it tests correctly is faster, and it encourage users who might be intimidated by config file editing.

For remotes, GNOME LIRC Properties supports all hardware known to LIRC. In my personal tests, it correctly configured remotes from Apple, Hauppauge, and (via a Logitech programmable model) Windows MCE.

Looking forward

Even though my hardware was not among the chosen, I think it was wise of the GNOME LIRC Properties developers to limit their utility to a set of known, supported receivers. Configuring IR receivers and remotes is painful enough that a new tool is worth waiting for. Better, then, to start with something manageable and build support than to take on too much at the outset and collapse.

Hopefully GNOME LIRC Properties will continue to add receivers to its GUI in the near term, and will someday add support for the other main aspect of IR: transmitters. IR transmitters are devices attached to the PC that send signals to other devices. In addition to home automation possibilities, these transmitters are a common way for DVR programs to control external channel-changing hardware like cable and satellite boxes. Like receivers, configuring transmitters is a matter of loading device drivers, so it won't come easy. But the Mythbuntu project has an IR transmitter configuration page in its control center, so it is within the realm of possibility.

As I have gained experience with MythTV, LIRC is one of those quirky subsystems that is more frustrating the more you work with it. In the long term, LIRC might go away, and IR remotes be treated like other X input devices -- the idea gets brought up from time-to-time -- but I'm not holding my breath. Instead, I am going to collect whatever knowledge I can about the IR receiver hardware I own, and see if I can get it added to the next release of GNOME LIRC Properties.


  • Tools & Utilities
  • Desktop Hardware
Click Here!