# LIRC not creating /dev/lirc0 for MCE remote [solved]

## rjmars97

I've been playing with LIRC attempting to get my media center remote working and have failed so far.  In particular, I LIRC does not create the /dev/lirc0 device for the USB transceiver.

The USB transceiver is recognized as Formosa Industrial Computing as below:

```
robert@atomic ~ $ sudo lsusb

Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

Bus 003 Device 003: ID 147a:e03a Formosa Industrial Computing, Inc.

Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
```

This is the dmesg output when I plug it in:

```
[ 1089.147658] usb usb1: usb resume

[ 1089.147669] ehci_hcd 0000:00:1d.7: resume root hub

[ 1089.268214] ehci_hcd 0000:00:1d.7: port 3 full speed --> companion

[ 1089.268230] ehci_hcd 0000:00:1d.7: GetStatus port 3 status 003801 POWER OWNER sig=j CONNECT

[ 1089.279038] hub 1-0:1.0: hub_resume

[ 1089.279078] ehci_hcd 0000:00:1d.7: GetStatus port 3 status 003002 POWER OWNER sig=se0 CSC

[ 1089.380067] usb usb3: usb resume

[ 1089.380078] usb usb3: wakeup_rh

[ 1089.380094] hub 1-0:1.0: state 7 ports 8 chg 0000 evt 0000

[ 1089.412036] hub 3-0:1.0: hub_resume

[ 1089.412062] uhci_hcd 0000:00:1d.1: port 1 portsc 0093,00

[ 1089.412074] hub 3-0:1.0: port 1: status 0101 change 0001

[ 1089.513067] hub 3-0:1.0: state 7 ports 2 chg 0002 evt 0000

[ 1089.513094] hub 3-0:1.0: port 1, status 0101, change 0000, 12 Mb/s

[ 1089.615308] usb 3-1: new full speed USB device using uhci_hcd and address 3

[ 1089.737051] usb 3-1: ep0 maxpacket = 8

[ 1089.768108] usb 3-1: skipped 1 descriptor after interface

[ 1089.773084] usb 3-1: default language 0x0409

[ 1089.798068] usb 3-1: udev 3, busnum 3, minor = 258

[ 1089.798077] usb 3-1: New USB device found, idVendor=147a, idProduct=e03a

[ 1089.798084] usb 3-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3

[ 1089.798092] usb 3-1: Product: eHome Infrared Transceiver

[ 1089.798097] usb 3-1: Manufacturer: Formosa21

[ 1089.798102] usb 3-1: SerialNumber: 001029BE

[ 1089.798272] usb 3-1: uevent

[ 1089.798320] usb 3-1: usb_probe_device

[ 1089.798328] usb 3-1: configuration #1 chosen from 1 choice

[ 1089.800230] usb 3-1: adding 3-1:1.0 (config #1, interface 0)

[ 1089.800395] usb 3-1:1.0: uevent

[ 1089.800568] usb 3-1: adding 3-1:1.1 (config #1, interface 1)

[ 1089.800635] usb 3-1:1.1: uevent

[ 1089.800708] usbhid 3-1:1.1: usb_probe_interface

[ 1089.800715] usbhid 3-1:1.1: usb_probe_interface - got id

[ 1089.801236] usb 3-1: uevent

[ 1091.704107] hub 1-0:1.0: hub_suspend

[ 1091.704131] usb usb1: bus auto-suspend

[ 1091.704139] ehci_hcd 0000:00:1d.7: suspend root hub

[ 1099.808077] generic-usb 0003:147A:E03A.0003: timeout initializing reports

[ 1099.808095] drivers/usb/core/file.c: looking for a minor, starting at 96

[ 1099.808357] generic-usb 0003:147A:E03A.0003: hiddev96,hidraw0: USB HID v1.00 Device [Formosa21 eHome Infrared Transceiver] on usb-0000:00:1d.1-1/input1

[ 1099.808411] drivers/usb/core/inode.c: creating file '003'

[ 1099.815278] uhci_hcd 0000:00:1d.1: reserve dev 3 ep83-INT, period 8, phase 4, 17 us
```

My understanding from the LIRC article on the Gentoo Wiki is that all I should have to do is load the lirc_mceusb2 module and /dev/lirc0 should be created automatically.  Nothing is created after loading the module.

There is nothing suspicious in the dmesg output either after loading the module:

```
[ 1255.266116] lirc_dev: IR Remote Control driver registered, major 61

[ 1255.271790]

[ 1255.271797] lirc_mceusb2: Philips eHome USB IR Transceiver and Microsoft MCE 2005 Remote Control driver for LIRC $Revision: 1.81 $

[ 1255.271804] lirc_mceusb2: Daniel Melander <lirc@rajidae.se>, Martin Blatter <martin_a_blatter@yahoo.com>

[ 1255.271810] lirc_mceusb2: debug mode enabled

[ 1255.271906] usbcore: registered new interface driver lirc_mceusb2
```

I have tried the mceusb driver as well (by setting LIRC_DEVICES accordingly in my make.conf) and there is no difference.  Finally, I noticed that there is an "all" option for LIRC_DEVICES, but lirc fails to compile with that set to "all":

```
/var/tmp/portage/app-misc/lirc-0.8.5/work/lirc-0.8.5/drivers/lirc_i2c/lirc_i2c.c:382: error: unknown field 'detach_client' specified in initializer

/var/tmp/portage/app-misc/lirc-0.8.5/work/lirc-0.8.5/drivers/lirc_i2c/lirc_i2c.c:382: warning: initialization from incompatible pointer type

/var/tmp/portage/app-misc/lirc-0.8.5/work/lirc-0.8.5/drivers/lirc_i2c/lirc_i2c.c: In function 'ir_attach':

/var/tmp/portage/app-misc/lirc-0.8.5/work/lirc-0.8.5/drivers/lirc_i2c/lirc_i2c.c:489: error: implicit declaration of function 'i2c_attach_client'

/var/tmp/portage/app-misc/lirc-0.8.5/work/lirc-0.8.5/drivers/lirc_i2c/lirc_i2c.c:499: error: implicit declaration of function 'i2c_detach_client'

make[5]: *** [/var/tmp/portage/app-misc/lirc-0.8.5/work/lirc-0.8.5/drivers/lirc_i2c/lirc_i2c.o] Error 1

make[4]: *** [_module_/var/tmp/portage/app-misc/lirc-0.8.5/work/lirc-0.8.5/drivers/lirc_i2c] Error 2

make[4]: Leaving directory `/usr/src/linux-2.6.31-gentoo-r6'

make[3]: *** [lirc_i2c.o] Error 2

make[3]: Leaving directory `/var/tmp/portage/app-misc/lirc-0.8.5/work/lirc-0.8.5/drivers/lirc_i2c'

make[2]: *** [all-recursive] Error 1

make[2]: Leaving directory `/var/tmp/portage/app-misc/lirc-0.8.5/work/lirc-0.8.5/drivers'

make[1]: *** [all-recursive] Error 1

make[1]: Leaving directory `/var/tmp/portage/app-misc/lirc-0.8.5/work/lirc-0.8.5'

make: *** [all] Error 2

 * ERROR: app-misc/lirc-0.8.5 failed:

 *   Unable to emake HOSTCC=x86_64-pc-linux-gnu-gcc CROSS_COMPILE=x86_64-pc-linux-gnu- LDFLAGS=   all

 *

 * Call stack:

 *     ebuild.sh, line   54:  Called src_compile

 *   environment, line 4630:  Called linux-mod_src_compile

 *   environment, line 3615:  Called die

 * The specific snippet of code:

 *               eval "emake HOSTCC=\"$(tc-getBUILD_CC)\"                      CROSS_COMPILE=${CHOST}-                                          LDFLAGS=\"$(get_abi_LDFLAGS)\"                                          ${BUILD_FIXES}         ${BUILD_PARAMS}                                          ${BUILD_TARGETS} " || die "Unable to emake HOSTCC="$(tc-getBUILD_CC)" CROSS_COMPILE=${CHOST}- LDFLAGS="$(get_abi_LDFLAGS)" ${BUILD_FIXES} ${BUILD_PARAMS} ${BUILD_TARGETS}";

 *

 * If you need support, post the output of 'emerge --info =app-misc/lirc-0.8.5',

 * the complete build log and the output of 'emerge -pqv =app-misc/lirc-0.8.5'.

 * The complete build log is located at '/var/tmp/portage/app-misc/lirc-0.8.5/temp/build.log'.

 * The ebuild environment file is located at '/var/tmp/portage/app-misc/lirc-0.8.5/temp/environment'.

 * S: '/var/tmp/portage/app-misc/lirc-0.8.5/work/lirc-0.8.5'

>>> Failed to emerge app-misc/lirc-0.8.5, Log file:

>>>  '/var/tmp/portage/app-misc/lirc-0.8.5/temp/build.log'

 * Messages for package app-misc/lirc-0.8.5:

 * If your LIRC device requires modules, you'll need MODULE_UNLOAD

 * support in your kernel.

 * Compiling support for a lot of devices

 * Setting default lirc-device to /dev/lirc0

 * Disabling lirc_gpio driver as it does no longer work Kernel 2.6.22+

 * ERROR: app-misc/lirc-0.8.5 failed:

 *   Unable to emake HOSTCC=x86_64-pc-linux-gnu-gcc CROSS_COMPILE=x86_64-pc-linux-gnu- LDFLAGS=   all

 *

 * Call stack:

 *     ebuild.sh, line   54:  Called src_compile

 *   environment, line 4630:  Called linux-mod_src_compile

 *   environment, line 3615:  Called die

 * The specific snippet of code:

 *               eval "emake HOSTCC=\"$(tc-getBUILD_CC)\"                      CROSS_COMPILE=${CHOST}-                                          LDFLAGS=\"$(get_abi_LDFLAGS)\"                                          ${BUILD_FIXES}         ${BUILD_PARAMS}                                          ${BUILD_TARGETS} " || die "Unable to emake HOSTCC="$(tc-getBUILD_CC)" CROSS_COMPILE=${CHOST}- LDFLAGS="$(get_abi_LDFLAGS)" ${BUILD_FIXES} ${BUILD_PARAMS} ${BUILD_TARGETS}";

 *

 * If you need support, post the output of 'emerge --info =app-misc/lirc-0.8.5',

 * the complete build log and the output of 'emerge -pqv =app-misc/lirc-0.8.5'.

 * The complete build log is located at '/var/tmp/portage/app-misc/lirc-0.8.5/temp/build.log'.

 * The ebuild environment file is located at '/var/tmp/portage/app-misc/lirc-0.8.5/temp/environment'.

 * S: '/var/tmp/portage/app-misc/lirc-0.8.5/work/lirc-0.8.5'
```

And finally, my emerge --info

```
Portage 2.1.7.17 (default/linux/amd64/10.0, gcc-4.3.4, glibc-2.10.1-r1, 2.6.31-gentoo-r6 x86_64)

=================================================================

System uname: Linux-2.6.31-gentoo-r6-x86_64-Intel-R-_Atom-TM-_CPU_330_@_1.60GHz-with-gentoo-1.12.13

Timestamp of tree: Sat, 06 Mar 2010 05:45:02 +0000

app-shells/bash:     4.0_p35

dev-lang/python:     2.6.4

dev-util/cmake:      2.6.4-r3

sys-apps/baselayout: 1.12.13

sys-apps/sandbox:    1.6-r2

sys-devel/autoconf:  2.13, 2.63-r1

sys-devel/automake:  1.9.6-r2, 1.10.2

sys-devel/binutils:  2.18-r3

sys-devel/gcc:       4.3.4

sys-devel/gcc-config: 1.4.1

sys-devel/libtool:   2.2.6b

virtual/os-headers:  2.6.30-r1

ACCEPT_KEYWORDS="amd64"

ACCEPT_LICENSE="* -@EULA"

CBUILD="x86_64-pc-linux-gnu"

CFLAGS="-march=native -O2 -pipe -fomit-frame-pointer"

CHOST="x86_64-pc-linux-gnu"

CONFIG_PROTECT="/etc /usr/share/X11/xkb"

CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/env.d /etc/fonts/fonts.conf /etc/gconf /etc/revdep-rebuild /etc/sandbox.d /etc/terminfo /etc/udev/rules.d"

CXXFLAGS="-march=native -O2 -pipe -fomit-frame-pointer"

DISTDIR="/usr/portage/distfiles"

FEATURES="assume-digests distlocks fixpackages news parallel-fetch protect-owned sandbox sfperms strict unmerge-logs unmerge-orphans userfetch"

GENTOO_MIRRORS="http://distfiles.gentoo.org"

LDFLAGS="-Wl,-O1"

LINGUAS="en_US en"

MAKEOPTS="-j5"

PKGDIR="/usr/portage/packages"

PORTAGE_CONFIGROOT="/"

PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --compress --force --whole-file --delete --stats --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages"

PORTAGE_TMPDIR="/var/tmp"

PORTDIR="/usr/portage"

SYNC="rsync://192.168.100.10/gentoo-portage"

USE="X acl alsa amd64 berkdb branding bzip2 caps cli cracklib crypt cups cxx dbus dri ffmpeg flac fortran gdbm gif gpm gtk hal iconv jpeg lirc lm_sensors lock mmx modules mp3 mudflap multilib ncurses nls nptl nptlonly nsplugin opengl openmp pam pcre perl png pppd python readline reflection session spl sse sse2 ssl startup-notification sysfs tcpd threads thunar unicode x264 xorg xrandr xulrunner xv xvmc zlib" ALSA_CARDS="ali5451 als4000 atiixp atiixp-modem bt87x ca0106 cmipci emu10k1x ens1370 ens1371 es1938 es1968 fm801 hda-intel intel8x0 intel8x0m maestro3 trident usb-audio via82xx via82xx-modem ymfpci" ALSA_PCM_PLUGINS="adpcm alaw asym copy dmix dshare dsnoop empty extplug file hooks iec958 ioplug ladspa lfloat linear meter mmap_emul mulaw multi null plug rate route share shm softvol" APACHE2_MODULES="actions alias auth_basic authn_alias authn_anon authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache dav dav_fs dav_lock deflate dir disk_cache env expires ext_filter file_cache filter headers include info log_config logio mem_cache mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias" ELIBC="glibc" INPUT_DEVICES="evdev" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LINGUAS="en_US en" LIRC_DEVICES="all" RUBY_TARGETS="ruby18" USERLAND="GNU" VIDEO_CARDS="intel"

Unset:  CPPFLAGS, CTARGET, EMERGE_DEFAULT_OPTS, FFLAGS, INSTALL_MASK, LANG, LC_ALL, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS, PORTDIR_OVERLAY
```

Any ideas?

----------

## rjmars97

I can't believe I didn't try this earlier, but upgrading from the stable lirc-0.8.5 to 0.8.6-r2 solved the problem.  It also looks like the mceusb and mceusb2 drivers have been merged (as mceusb).

----------

