Summary

This specification describes how to improve the support for infrared (IR) remote controls in Debian and Ubuntu.

Rationale

Robust support for remote controls is needed in both Debian and Ubuntu, and is a must for the UbuntuMediaCenter.

Though there is an excellent software base through LIRC, it is generally too difficult to setup and configure for most users. Moreover, it's not easy for most users to find information on hardware compatibility.

This is clearly not in the Ubuntu spirit, and there is room for improvement.

Through several actions, we will leverage the full power of LIRC and improve Debian and Ubuntu users' experience with remote controls.

Use Cases

Scope

This specification covers both technical and non-technical (marketing, certification) issues, all related to improving remote control support in Debian and Ubuntu.

Design

LIRC improvements

LIRC is mostly configured through 2 files:

a. LIRC signal naming

Problem: LIRC doesn't provide a common signal/key naming scheme read this, point a) As an example, the "play" function can be called:

This has the major drawback to force each user to create a new lircrc file which matches his remote's signal names and desired actions. This also make it really hard to create configuration GUIs for LIRC, and to use remote controls in applications.

Solution: standardize a common key naming, to have the same signal names used in every "lircd.conf.*".

The Linux input.h naming will be used, and discussed for extension with Vojtech Pavlik (Linux input layer leader) and the LKML.

b. Parseable compatibility list

Problem: LIRC doesn't provide a parseable compatibility list. This would help in:

There is now an HTML table, generated at compile time by the lirc/doc/table.sh script.

Solution: modify the table.sh script to also generate a flat mode parseable text file.

c. Complete remote support at runtime

Problem: some driver need to be recompiled to get the support for a specific kind of remote. For example, lirc_serial can be built for Animax (#ifdef LIRC_SERIAL_ANIMAX), Irdeo (#ifdef LIRC_SERIAL_IRDEO). This so exclude support for some remotes, and forces one to recompile LIRC.

Solution: provide ie lirc_serial1 with IRDEO defines, lirc_serial2 with ANIMAX defines, ... or better, to have a param "type" that allows runtime switching.

FIXME(AQU): Discussion to be finished with Christoph Bartelmus on that point.

d. Drivers recompilation

Problem: the LIRC drivers (lirc-modules-source package) need to be recompiled before use, according to the user's need. This is an unusual step and these drivers should be supported out-of-the-box.

Solution: find a way to provide all the needed drivers for supported remotes. This will be achieved by merging the LIRC kernel drivers into the Linux mainline. The userspace drivers would then be shipped without the kernel version dependency issue.

Some drivers are currently available both as kernel and userspace drivers. Since the former is generally more complete, but the latter more easy to distribute, the best would be to complete the userspace drivers. Jon Smirl has started to work on this, along with the kernel integration.

FIXME(AQU): Discussion to be finished with Christoph Bartelmus and Jon Smirl on that point.

Ubuntu improvements

a. Configuration

Problem: there is no graphical tool in Ubuntu to easily choose and configure your remote. You need to copy the good lircd.conf file and create a lircrc file matching your application choice and the name of its options.

Solutions:

b. IR Launcher applet

Problem: Generally, user will need to launch someway the irexec program. This need some shell scripting or Session Configuration that could be avoided by proposing an IR Launcher applet. This last would simply launch irexec (maybe re implement it?!) and add a systray icon for showing IR activity.

spec here

Hardware compatibility and recommendation

Ubuntu should provide a hardware compatibility list and recommend some remote controls based upon the following criterion:

The HWDB should acquire its compatibility data from the Parseable compatibility list mentioned above.

In the short run, Ubuntu should at least reference all the existing Hardware Compatility Lists for its bundled applications (Reference 2).

Other improvements (to be completed)

Implementation

Every improvements has to be made in coordination with the upstream team:

Milestone 1 (target: Gutsy)

Implement the following solutions:

These represents the Ubuntu Media Center requirements.

Notes:

Milestone 2 (possible target: Gutsy)

Implement the remaining solutions:

Milestone 3 (possible target: ?)

Implement the remaining solutions:

Outstanding Issues

BoF agenda and discussion

References


CategorySpec UbuntuMediaCenter

RemoteControls (last edited 2008-08-06 16:27:22 by localhost)