- 1 Media Center Remotes
- 2 Description
- 3 Support Status
- 4 Installation guides
- 5 Linux Distribution Specific Instructions
- 6 Configuring the Buttons
- 7 Troubleshooting
Media Center Remotes
USB Remote intended for Media Center PCs
There are two main versions of the MCE remote, typically referred to as the 'older' (Version 1) and 'newer' (Version 2) models. Both of these are now supported in the latest lirc, currently 0.8.1.
The newer remote comes in various alternatives, including different shapes and features. The new model is manufactured by Philips and half a dozen other manufacturers and is available by (among many other ways) purchase on it's own, shipped with MCE 2005 and contained in Hauppauge TV card MCE-Kits.
- IR Receiver is supported
- IR Transmitter is supported with driver module lirc_mceusb2 version >= 0.24 (lirc-0.8.2).
- IR Receiver is supported
- IR Transmitter is not supported
These are now supported in latest lirc. For those that must run a pre 0.8 version, follow the INSTALL guide at http://www.blatter.com/mceusb/old/INSTALL. Be sure that the source you are compiling against is the recomended 0.7.0 branch. Note that this patch is no longer updated or supported since it is now part of the lirc distribution. The IR Transmitter is NOT supported by this project.
- Keyboard is supported as a USB HID device
- IR Receiver is supported
- IR Transmitter is supported with lirc_mod_mce > 0.1.3
I would think it's the same as the newer remote instructions below, but I can't verify. Only difference is the module name - it will be lirc_mceusb instead of lirc_mceusb2.
You must be using a 2.6 kernel for the newer remote. The kernel module that lirc creates does not have 2.4 support.
Be sure your kernel has support for USB. Most default kernels will. You will only need the USB 1.1 driver (OHCI or UHCI) and USB 2.0 (EHCI) is not required. There is no kernel module specific for this device. Before continuing, be sure your device is recognized by your USB host controller:
# lsusb Bus 002 Device 001: ID 0000:0000 Bus 001 Device 002: ID 0471:0815 Philips Bus 001 Device 001: ID 0000:0000
Windows Vista MCE Remote
Another newer remote (version 1069) now responds with the following when you type lsusb:
# lsusb Bus 002 Device 002: ID 0609:0334 SMK Manufacturing, Inc. Bus 002 Device 001: ID 0000:0000 Bus 001 Device 001: ID 0000:0000
This remote requires an updated lirc_mceusb2 driver (newer than current lirc-0.8.2 released: 9-Jun-2007) Download just the updated driver (version 1.30 of the file and newer has support) from LIRC CVS or follow the instructions below for a complete CVS checkout.
Use the default mceusb2 lircd.conf file and all of the remote's keys work without modifying the example mceusb2 lircd.conf file.
Download a lirc CVS SnapShot
Generally the latest cvn snapshot from the official LIRC website should work fine. As of writing, the latest snapshot available is lirc-0.8.2pre2. Download and extract it either manually from the previous link or using the following code.
cd /usr/src wget http://lirc.sourceforge.net/software/snapshots/lirc-0.8.2pre2.tar.bz2 bunzip2 lirc-0.8.2pre2.tar.bz2 tar -xvf lirc-0.8.2pre2.tar cd lirc-0.8.2pre2
Users of newer linux kernels such as 2.6.20 may find they have problems when compiling / making the source code from the svn snapshot (notably lirc_mceusb2 with 0.8.1pre5 and kernel 2.6.20 does not work, at least for me...). If you have problems with the following install, or just want to run the latest and greatest lirc version, download the latest cvs lirc code using the following method:
Downloading using CVS
1. Make sure you have the cvs, autoconf, automake and libtool packages installed (rpm package manager users search for them and install their rpms).
2. Type the following on a command line and ignore what it says about not finding /root/...:
cvs -d:pserver:email@example.com:/cvsroot/lirc login
3. Type the following:
cvs -z8 -d:pserver:firstname.lastname@example.org:/cvsroot/lirc co lirc
4. Type the following:
cd lirc ./autogen.sh
5. Continue with the following Install section, starting with "./setup.sh".
You now have two choices, you can either run the Lirc Setup script and accept it installing itself where it wants to, or you can carry out a manual configure. Using the setup script is easier, but it means that the various binararies and configuration files aren't placed in the normal Gentoo locations.
To use the automated setup process:
./setup.sh Menu Option # (1) - Driver Configuration (enter) Menu Option # (8) - USB Devices (enter) Menu Option # (o) - Windows Media Center Remotes (new version, Philips et al.) (enter) Menu Option # (3) - Save your configuration and run configure (enter) make make install
This will also create a /etc/lircd.conf file which should work. If it complains about missing fedora source files use "yum install kernel-devel" and rerun ./setup.sh.
To perform the manual configuration:
./configure --prefix=/usr --sysconfdir=/etc/conf.d --with-x --with-driver=all make make install cp remotes/mceusb/lircd.conf.mceusb /etc/conf.d/lircd.conf
If you get errors during the compile, try to change the .configure step to be
./configure --prefix=/usr --sysconfdir=/etc/conf.d --with-x --with-driver=mceusb2
instead of -with-driver=all. You should change mceusb2 to mceusb if you are using the old version of the remote.
If you get an error message that the "kernel source is required", it actually means the kernel headers. On my system this Ubuntu package was linux-kernel-headers-2.9.12-9-386 to match the version returned by the uname -a command. Installing the right version of the headers to match your kernel version is esssential. You may also need to install the gcc compiler.
Load the module
# modprobe lirc_mceusb2
Test it with irw. irw will output the commands received by the IR receiver that match your lircd.conf file. So start irw, point your remote and start pressing buttons.
# irw 000000037ff07bfe 00 One mceusb 000000037ff07bfd 00 Two mceusb 000000037ff07bfd 01 Two mceusb 000000037ff07bf2 00 Home mceusb 000000037ff07bf2 01 Home mceusb
If everything works, then autoload lirc_mceusb2 when your computer loads (how to depends on your distro) and start lircd as well (also depends on your distro).
One note, I'm running a late-model Gentoo and I have to load lircd with this option:
# lircd -d /dev/lirc/0
Otherwise it fails, as it defaults to /dev/lircd.
You will also need to install an lircrc file (note no dot at the front of the filename in the ~/.mythtv directory so that when the frontend starts up it can see the mythtv configuration settings for your remote control buttons.
Linux Distribution Specific Instructions
openSUSE 10.x does not required the steps described above, just install the lirc and lirc-kmp-<your kernel type> rpms (to find kernel type, type "rpm -qf /boot/vmlinuz" at a command prompt). You still need to do the following though.
On openSUSE you can start the lirc daemon at boot by using the run level editor (YaST > System > System Services) and enabling lirc. After this you need to edit /etc/sysconfig/lirc to load the lirc_mceusb2 module at boot. Look for the following lines and make any additions as needed (ie. they should look like this when you're finished):
You can leave the rest as it is.
Ubuntu 6.10 Edgy, 7.04 Feisty, 7.10 Gutsy
Alternate Ubuntu install instructions can be found here: Ubuntu_lirc_install
Ubuntu ships with basic lirc support but does not make it easy to install the kernel modules. These need to be installed as source and compiled. The compilation however, requires the full kernel sources and can have problems with version number conflicts. The easiest way to get this remote working on Ubuntu is to download the latest source from  and compile the lirc_mceusb or lirc_mceusb2 module as appropriate, following the instructions above. Then run
#sudo apt-get install lirc
Which will install the main lirc daemon and configure it to start on boot. The last step is to edit the /etc/lircd/hardware.conf file, setting the MODULE to either lirc_mceusb or lirc_mceusb2 as appropriate and the DEVICE section to /dev/lirc0 Lirc can then be restarted using
#sudo /etc/init.d/lirc restart
Ubuntu 8.10 ("Intrepid Ibex") has out of the box kernel modules for the MCE remotes. All that is required is to install lirc (as noted above), and follow the prompts.
Debian GNU/Linux 4.0
You need to install the lirc packages using apt:
# apt-get install lirc lirc-modules-source
The package lirc-modules-source allows you to build the required modules. However, just building the modules will leave you _without_ the modules lirc-mceusb andlirc-mceusb2, so you have to reconfigure the package:
# dpkg-reconfigure lirc-modules-source
- Trying to compile lirc-modules-source 0.8.0-9.3 does not work with kernels newer than 2.6.19. See Debian bug #400494. Fix is to apply the patch that Eric Cooper posted to the bug report. To apply patch use "patch -p2 < lirc-patch" from within the lirc-0.8.0 directory.
- The mceusb2 module also fails to compile due to an error in that code. To fix it, find all instances of SLAB_ATOMIC in /usr/src/modules/lirc/drivers/lirc_mceusb2/lirc_mceusb2.c and change them to GFP_ATOMIC. (more info)
This will present a screen where you can select the desired modules. You need at least lirc-dev and either lirc-mceusb or lirc-mceusb2 to get things working. If unsure, select both lirc-mceusb and lirc-mceusb2. Now you can build the modules for lirc (using the command `make-kpkg modules-image` with some additional options, depending on the kernel in use), and afterwards install the generated package from /usr/src, on my system this was:
# dpkg -i lirc-modules-126.96.36.199_0.8.0-9+MediaCenter+1.2_i386.deb
After this step, You have all the components needed on your system.
To auto-load the modules on system boot, just add them to your /etc/modules file.
For my Gentoo (2.6.10) installation I had to do a few extra things. Before following any install documentation, remove all lirc_mceusb.ko and lirc_dev.ko modules. Mine were in /lib/modules/2.6.10/misc/ . I also had to remove /lib/dev-state/lirc* because devfs was apparently trying to restore some older (non working) lirc states.
Now follow the instructions in the INSTALL to verify proper installation (it may be helpful to load the module with "modprobe -v lirc_mceusb" to ensure you are loading the proper modules from the proper places).
I will add more to this as I understand it better, but for right now I finally have this working. Any help on Wiki Formatting would also be appreciated.
With a clean install from R5B7 I had to edit one file to get my remote working:
start-stop-daemon --start --quiet --exec /usr/sbin/lircd \
Stole this from the forums - figured it should be in the wiki:
From a clean install of R5E50 I had to do the exact opposite. /etc/init.d/lirc
start-stop-daemon --start --quiet --exec /usr/sbin/lircd \
start-stop-daemon --start --quiet --exec /usr/sbin/lircd -- $LIRCD_ARGS \
Credit goes to the same thread posted above and:
You need to have ATrpms installed and enabled as a repo.
# yum install lirc lirc-lib lirc-lib-devel # modprobe lirc_mceusb2 # /sbin/service lircd start
To have it automated at startup,
1. Add the below to /etc/modprobe.conf
alias char-major-61 lirc_mceusb2
2. Set the service to start on boot:
/sbin/chkconfig lircd on
Configuring the Buttons
Some MCE Remote Controls are able to learn codes from other remote controls. This was designed to allow you to turn on and off your television and control the TV volume. Only the following MCE buttons are able to be programmed:
- TV Power
- Volume +
- Volume -
To program these buttons, do the following steps for each button in a dark area:
- Hold the "DVD MENU" and "OK" buttons at the same time for 2 seconds until the backlight turns off.
- Press the MCE button that you want to program. The backlight will blink once to confirm.
- Point the original TV remote control at the top of the MCE remote and press and hold the button that you want teach. The MCE remote backlight will blink twice to confirm. If the learning phase fails the MCE remote will blink 4 times (error).
Restore the Default Programmable Buttons Settings
The following steps set the TV Power and Volume +/- buttons back to their default commands:
- Press and hold the DVD MENU button and LEFT navigation button at the same time until the MCE Remote Control lights turn off.
- Press the OK button.
The MCE remote control lights will blink twice to confirm that the buttons have been reset. The TV and Volume +/- buttons will have the default commands assigned. If the default settings were not restored the lights blink quickly four times (error).
Example lircrc config file
Add the following to ~/.mythtv/lircrc:
begin prog = mythtv button = One config = 1 end begin prog = mythtv button = Two config = 2 end begin prog = mythtv button = Three config = 3 end begin prog = mythtv button = Four config = 4 end begin prog = mythtv button = Five config = 5 end begin prog = mythtv button = Six config = 6 end begin prog = mythtv button = Seven config = 7 end begin prog = mythtv button = Eight config = 8 end begin prog = mythtv button = Nine config = 9 end begin prog = mythtv button = Zero config = 0 end begin prog = mythtv button = Back config = Esc end begin prog = mythtv button = Home config = Esc end begin prog = mythtv button = Guide config = M end begin prog = mythtv button = More config = I end begin prog = mythtv button = VolDown repeat = 1 config = F10 end begin prog = mythtv button = VolUp repeat = 1 config = F11 end begin prog = mythtv button = ChanUp repeat = 3 config = Up end begin prog = mythtv button = ChanDown repeat = 3 config = Down end begin prog = mythtv button = Up repeat = 3 config = Up end begin prog = mythtv button = Down repeat = 3 config = Down end begin prog = mythtv button = Left repeat = 3 config = Left end begin prog = mythtv button = Right repeat = 3 config = Right end begin prog = mythtv button = Play config = Return end begin prog = mythtv button = OK config = Return end begin prog = mythtv button = Enter config = Return end begin prog = mythtv button = Mute config = | end begin prog = mythtv button = Rewind config = < end begin prog = mythtv button = Forward config = > end begin prog = mythtv button = Record config = R end begin prog = mythtv button = Stop config = O end begin prog = mythtv button = Pause config = P end # Use for backwards commercial skip begin prog = mythtv button = Replay config = Q end # Use for forward commercial skip begin prog = mythtv button = Skip config = Z end begin prog = mythtv button = LiveTV repeat = 3 config = ALT+L end # Toggle subtitles (closed captions) begin prog = mythtv button = Teletext config = T end begin prog = mythtv button = Blue config = W end
MPlayer expects to find the configuration file in a different location to MythTV. Create a symlink so that MPlayer can find the file:
ln -s ~/.mythtv/lircrc ~/.lircrc
Suggested changes to Button Functions
This section has been moved to Customized Remote Control Keys, as the suggestions apply to all remote controls, not just MCE remotes.
S3 / Suspend To RAM
This section will allow you to press the "PC" button on your MCE Remote and suspend to RAM in about one second. All fans are off, power is only minimally keeping your RAM refreshed, and your PC is silent. You can then press the "PC" button again to return to the same place in MythTV in about one second. Beats shutting down and booting up to save power. I am a Gentoo user, so only use this as an example. Since kernel 2.6.23, you need to enable deprecated /proc/acpi systems. Also, if using recent nvidia proprietary drivers, you can remove it from hibernate's blacklisted modules. Be sure irexec is running, you can add this in your .xinitrc:
In your lircrc, add this:
begin button = Power prog = irexec repeat = 0 config = sudo /usr/sbin/hibernate-ram end
In order for the button to wake, you need to specify the USB hub in /proc/acpi/wakeup. If you cat /proc/acpi/wakeup, you should see something like this:
Device S-state Status Sysfs node HUB0 S5 disabled pci:0000:00:08.0 HUB1 S4 disabled USB0 S3 disabled pci:0000:00:02.0 USB1 S3 disabled pci:0000:00:02.1
If you issue the following command, the disable status will toggle to enabled
sudo sh -c 'echo "USB0" > /proc/acpi/wakeup'
Should result in:
Device S-state Status Sysfs node HUB0 S5 disabled pci:0000:00:08.0 HUB1 S4 disabled USB0 S3 enabled pci:0000:00:02.0 USB1 S3 disabled pci:0000:00:02.1
This command can be saved in your local.start
It also might be useful to change the MythTV exit settings to issue hibernate-ram on shutdown
Both version of the MCE Remote support IR blasting in Lirc. IR Blasting is useful to change channels on your STB. Once your remote is working its easy to blast.
1. First you need to add the remote to your /etc/lircd.conf file.
2. Copy and paste that text to the end of your /etc/lircd.conf file. Make note of the NAME portion of the remote definition.
3. Restart LIRC. In fedora this can be done by running
# /sbin/service lircd restart
4. Now you should be able to list the commands available to LIRC
$ irsend LIST name ""
(where name=the name of your remoted noted in step 2)
You should get something along the lines of:
[root@mythtv myth]# irsend LIST att "" irsend: 0000000023402600 ZERO irsend: 000000002340a601 ONE irsend: 0000000023402602 TWO irsend: 000000002340a603 THREE irsend: 0000000023402604 FOUR irsend: 000000002340a605 FIVE irsend: 000000002340a606 SIX
5. To send a signal to device one issue:
$ irsend SET_TRANSMITTERS 1 $ irsend SEND_ONCE name button
(where name is your remote name and button is the name of the button in your def. file)
For device 2 just issue:
$ irsend SET_TRANSMITTERS 2 irsend SEND_ONCE name button
5. You can now use these commands to make two channel change scripts:
#!/bin/sh REMOTE_NAME=####### irsend SET_TRANSMITTERS 1 for digit in $(echo $1 | sed -e 's/./& /g'); do irsend SEND_ONCE $REMOTE_NAME $digit sleep 0.4 # note, you may have to tweak the interdigit delay up a bit, depending on your STB model done irsend SEND_ONCE $REMOTE_NAME Enter exit 0
6. Make it executable
$ chmod +x chan_ch_1
7. This is a good time to test it
(should change the channel to 12 on blaster 1)
8. Add the scprit to MythTV channel change in inputs.
Remote fails to send data
The MCE firmware can sometimes get into an inconsistent state and needs to be reset.
In some models, there might be a large capacitor in the unit because you have to remove the batteries for 1/2 hour or more to discharge it , or try pressing lots of buttons to discharge it quicker. This should reset the firmware.
Transmitter (Blaster) LEDs flash with irsend but IR reciever device does not pick up anything.
The small (1/4in) Microsoft MCE transmitter LEDs have a very short range (<2cm) since they are designed to be attached directly over the IR receiver window. If you cannot get it close enough, it probably will not work. I replaced the original MS MCE transmitter LEDs with the PVR500's (slightly bigger 1/2in length) transmitter LEDs and I was able to control the IR receiver device. They are both equivalent devices and uses lirc_mceusb2.
It's also possible that there is infrared light interference. Certain LCD displays are known to interfere with infrared remotes. Try turning off possible interference sources, shielding the receiver (sometimes putting the receiver inside an open cabinet, behind a semi-transparent door, or putting a thin paper towel over the receiver helps).
Sluggish / Stuttery Remote
- The below solution is no longer necessary since it has been fixed in lirc 0.8.1.
Those using the mceusb2 module (for the newer MCE remote) may want to implement Maciek Klimkowski's patch to make the remote feel a little more responsive and detect repeat keys properly. The patch edits the lirc_mceusb2.c file in the downloaded lirc code (/lirc-0.8.0/drivers/lirc_mceusb2/lirc_mceusb2.c) to remove lines 354 to 357 and insert send_packet_to_lirc(ir); just after the resulting line 380.
To install the patch, change directories to the directory that lirc unzipped to. For example, /usr/src/lirc-0.8.0, download the patch to this directory, then
patch -b -l -p1 <lirc-0.8.0.pre4-mceusb2_key_stutter_fix.patch
You can then go ahead and configure / make / install lirc as normal.
Remote Key / Button Sensitivity
- You may find that pressing a button acts like you have pressed the button multiple times.
You can adjust the sensitivity of the remote by adjusting settings in the lircd.conf file (typically located /etc/lirc/lircd.conf)
- Typically adjusting the gap setting in the lircd.conf to around 110000 provides a comfortable repeat rate.
Information on what each setting in the lircd.conf file does can be found here: http://winlirc.sourceforge.net/technicaldetails.html
- Alternatively you can add a line containing "repeat 0 0" to your config file before the line containing gap. This disables repeat entirely.