# lirc problem - Incompatible kernel setup

## opqdan

When I run:

```
 LIRC_OPTS="--with-driver=hauppauge" emerge lirc 
```

I get an error:

```

You will have to use the lirc_i2c kernel module.

Now enter 'make' and 'make install' to compile and install the package.

 * /usr/src/linux is a symbolic link

 * Determining the real directory of the Linux kernel source code

 * Building for Linux 2.6.9-gentoo-r9 found in /usr/src/linux

 * which outputs to /usr/src/linux

 * By not using the kernel's ability to output to an alternative

 * directory, some external module builds may fail.

 * See <insert link to user doc here>

 * Due to the 2.6 kernel build system, external module compilation

 * with a normal setup requires write access to //usr/src/linux

 * There are several ways to fix/prevent this.

 * Users can willingly let portage make this writable by doing

 * # config-kernel --allow-writable yes

 * However, this is considered a security risk!

 *

 * The prefered method is to enable Gentoo's new 'koutput' method

 * for kernel modules. See the doc

 * http://www.gentoo.org/doc/en/2.6-koutput-user.xml

 * To enable this, you'll need to run

 * # config-kernel --output-dir /var/tmp/kernel-output

 * and then install a new kernel

```

but of course, config-kernel is a masked package due to it being "broken"

I am wondering what I have to enable in my kernel to allow my remote control on my Hauppauge card to work.  I should be able to use lirc to do this but I cannot emerge lirc.

----------

## opqdan

I am using the kernel gentoo-2.6.9-r9.  The lirc.org website says that lirc may not work with some distribution specific kernels, but I doubt that this is my problem.

----------

## dsd

use the latest lirc from the testing tree

----------

## opqdan

How do I do that?

----------

## kmare

run:

```
ACCEPT_KEYWORDS="~x86" emerge config-kernel
```

in your command line.

then 

```
config-kernel --allow-writable yes
```

 and you'll be fine...

----------

## dsd

no, dont do the config-kernel thing

the ebuild in the testing tree migrates away from config-kernel/kmod as its not needed

----------

## soya

Look here if you want a quick solution:

https://forums.gentoo.org/viewtopic.php?t=276413&highlight=

I must also say that i've been reading the following link ( http://www.gentoo.org/doc/en/2.6-koutput-user.xml )and i don't understand some points. First is it possible to get lirc compiled in kernel with this solution? (i'm talking about builtin not module), and another thing is that it seems that using this solution forces you to have two sources, so you're loosing the space twoo times, isn't it?

----------

## dsd

that doc is out of date. config-kernel is no longer supported, masked in package.mask, and not needed. the newer lirc ebuilds use our new module installation system which doesnt require  any of the things you dont understand about  :Smile: 

----------

## soya

 *dsd wrote:*   

> that doc is out of date. config-kernel is no longer supported, masked in package.mask, and not needed. the newer lirc ebuilds use our new module installation system which doesnt require  any of the things you dont understand about 

 

Can please explain which is the correct method ofr installing lirc or which is the method it uses now? thanks in advanced. Before allowing write access with config-kernel i got an error due to write access restrictions.  :Smile: 

----------

## soya

ok, after digging a bit in the topic i've found that using the last version of lirc (lirc-7.0-r1) doesn't require all these steps. I have one last question, is it possible to find lirc patches for kernel sourceS? so it can be builtin? or the new way of installing lirc have become a standard for all kernels and distributions? thanks again  :Smile: 

----------

## dsd

i dont know. try looking on the lirc website.

----------

## raylpc

 *soya wrote:*   

> ok, after digging a bit in the topic i've found that using the last version of lirc (lirc-7.0-r1) doesn't require all these steps. I have one last question, is it possible to find lirc patches for kernel sourceS? so it can be builtin? or the new way of installing lirc have become a standard for all kernels and distributions? thanks again 

 

Hi soya, could you outline your steps? I just emerged lirc, and I'm emerging mythtv right now. Is there a way to test lirc without mythtv? I just want to make sure it's working.

My setup info:

I'm using hauppauge wintv pvr 250. I emerged lirc with LIRC_OPTS="--with-driver=hauppauge". This installed the lirc_i2c module. When I do a /etc/init.d/lircd start, /dev/lircd appeared. 

Thanks

----------

## opqdan

So I should not emerge config-kernel... but how can I enable what I need to in my kernel.

I do not want to have to switch to a different kernel (vanilla) from gentoo-dev-sources (2.6.9-r9), but if I am required to, to make it work than I guess that I will have to.

----------

## dsd

mkdir -p /etc/portage

echo "app-misc/lirc" > /etc/portage/package.keywords

emerge lirc

the portage handbook is pretty useful. you should read it. this section is relevant here:

http://www.gentoo.org/doc/en/handbook/handbook-x86.xml?part=3&chap=3

----------

## landrand

I spent a week trying to get lirc working with mythtv/gentoo.  To summarize, here's what I did to use the Hauppauge grey remote with PVR-250 card and Gentoo.  Although it's probably not configured perfectly, it does work...

Edit /etc/make.conf and insert the following line.  I'm using the hauppauge grey remote.  

LIRC_OPTS="--with-driver=hauppauge"

Use the gentoo-development-sources 2.6.9 kernel

patch kernel with following patch off web.  Can't remeber where I got it so you'll need to search the web for it.

cd /usr/src/linux

cat /directory of patchfile/lirc-2.6.9-20041024-px1.patch | patch -p1

make clean

make menuconfig

Here's the relevant parts of my .config.

# Serial drivers

#

CONFIG_SERIAL_8250=m

# CONFIG_SERIAL_8250_ACPI is not set

CONFIG_SERIAL_8250_NR_UARTS=4

# CONFIG_SERIAL_8250_EXTENDED is not set

# Linux InfraRed Controller

#

CONFIG_LIRC_SUPPORT=m

CONFIG_LIRC_MAX_DEV=2

CONFIG_LIRC_I2C=m

# CONFIG_LIRC_GPIO is not set

# CONFIG_LIRC_BT829 is not set

# CONFIG_LIRC_IT87 is not set

# CONFIG_LIRC_ATIUSB is not set

# CONFIG_LIRC_MCEUSB is not set

# CONFIG_LIRC_PARALLEL is not set

# CONFIG_LIRC_SERIAL is not set

# CONFIG_LIRC_HOMEBREW is not set

# CONFIG_LIRC_SERIAL_ANIMAX is not set

# CONFIG_LIRC_SERIAL_IRDEO is not set

# CONFIG_LIRC_SERIAL_IRDEO_REMOTE is not set

# CONFIG_LIRC_SERIAL_COM1 is not set

# CONFIG_LIRC_SERIAL_COM2 is not set

# CONFIG_LIRC_SERIAL_COM3 is not set

# CONFIG_LIRC_SERIAL_COM4 is not set

# CONFIG_LIRC_SERIAL_OTHER is not set

# CONFIG_LIRC_SIR is not set

# I2C support

#

CONFIG_I2C=m

CONFIG_I2C_CHARDEV=m

#

# I2C Algorithms

#

CONFIG_I2C_ALGOBIT=m

# CONFIG_I2C_ALGOPCF is not set

# CONFIG_I2C_ALGOPCA is not set

# I2C Hardware Bus support

#

# CONFIG_I2C_ALI1535 is not set

# CONFIG_I2C_ALI1563 is not set

# CONFIG_I2C_ALI15X3 is not set

# CONFIG_I2C_AMD756 is not set

# CONFIG_I2C_AMD8111 is not set

# CONFIG_I2C_I801 is not set

# CONFIG_I2C_I810 is not set

# CONFIG_I2C_ISA is not set

CONFIG_I2C_NFORCE2=m

# CONFIG_I2C_PARPORT is not set

# CONFIG_I2C_PARPORT_LIGHT is not set

# CONFIG_I2C_PIIX4 is not set

# CONFIG_I2C_PROSAVAGE is not set

# CONFIG_I2C_SAVAGE4 is not set

# CONFIG_SCx200_ACB is not set

# CONFIG_I2C_SIS5595 is not set

# CONFIG_I2C_SIS630 is not set

# CONFIG_I2C_SIS96X is not set

# CONFIG_I2C_VIA is not set

# CONFIG_I2C_VIAPRO is not set

# CONFIG_I2C_VOODOO3 is not set

# CONFIG_I2C_PCA_ISA is not set

#

# Hardware Sensors Chip support

#

CONFIG_I2C_SENSOR=m

CONFIG_I2C_SENSOR=m

# CONFIG_SENSORS_ADM1021 is not set

# CONFIG_SENSORS_ADM1025 is not set

# CONFIG_SENSORS_ADM1031 is not set

# CONFIG_SENSORS_ASB100 is not set

# CONFIG_SENSORS_DS1621 is not set

# CONFIG_SENSORS_FSCHER is not set

# CONFIG_SENSORS_GL518SM is not set

# CONFIG_SENSORS_IT87 is not set

# CONFIG_SENSORS_LM75 is not set

# CONFIG_SENSORS_LM77 is not set

# CONFIG_SENSORS_LM78 is not set

# CONFIG_SENSORS_LM80 is not set

# CONFIG_SENSORS_LM83 is not set

# CONFIG_SENSORS_LM85 is not set

# CONFIG_SENSORS_LM90 is not set

# CONFIG_SENSORS_MAX1619 is not set

# CONFIG_SENSORS_SMSC47M1 is not set

# CONFIG_SENSORS_VIA686A is not set

CONFIG_SENSORS_W83781D=m

CONFIG_SENSORS_W83L785TS=m

CONFIG_SENSORS_W83627HF=m

make && make modules_install, then copy System.map and bzImage to /boot.

Emerge LIRC

emerge lirc

Edit /etc/conf.d/lircd with the following:

# Options to pass to the lircd process

LIRCD_OPTS="-d /dev/lirc/0"

/etc/lircd.conf looks like the following:

# brand:                       Hauppauge

# model no. of remote control: Grey (PVR-350)

begin remote

  name  hauppaugegrey

  bits           13

  eps            30

  aeps          100

  one             0     0

  zero            0     0

  gap          200000

  min_repeat      4

  toggle_bit      2

      begin codes

          OFF                      0x00000000000017FD

          GO                       0x0000000000001FFB

          1                        0x00000000000017C1

          2                        0x00000000000017C2

          3                        0x00000000000017C3

          4                        0x00000000000017C4

          5                        0x0000000000001FC5

          6                        0x0000000000001FC6

          7                        0x0000000000001FC7

          8                        0x0000000000001FC8

          9                        0x0000000000001FC9

          0                        0x00000000000017C0

          BACK/EXIT                0x00000000000017DF

          MENU                     0x0000000000001FCD

          CH+                      0x00000000000017E0

          OK                       0x00000000000017E5

          CH-                      0x00000000000017E1

          VOL-                     0x0000000000001FD1

          VOL+                     0x00000000000017D0

          RED                      0x0000000000001FCB

          GREEN                    0x0000000000001FEE

          YELLOW                   0x00000000000017F8

          BLUE                     0x0000000000001FE9

          MUTE                     0x00000000000017CF

          BLANK                    0x0000000000001FCC

          FULL                     0x00000000000017FC

          REW                      0x0000000000001FF2

          PLAY                     0x00000000000017F5

CH+                      0x00000000000017E0

          OK                       0x00000000000017E5

          CH-                      0x00000000000017E1

          VOL-                     0x0000000000001FD1

          VOL+                     0x00000000000017D0

          RED                      0x0000000000001FCB

          GREEN                    0x0000000000001FEE

          YELLOW                   0x00000000000017F8

          BLUE                     0x0000000000001FE9

          MUTE                     0x00000000000017CF

          BLANK                    0x0000000000001FCC

          FULL                     0x00000000000017FC

          REW                      0x0000000000001FF2

          PLAY                     0x00000000000017F5

          FFW                      0x0000000000001FF4

          RECORD                   0x00000000000017F7

          STOP                     0x0000000000001FF6

          PAUSE                    0x00000000000017F0

          REPLAY                   0x0000000000001FE4

          SKIP                     0x00000000000017DE

      end codes

end remote

(END)                                    

Here's my /home/username/.mythtv/lircrc :

# lircrc.example.HauppaugeGrey-nativelirc

# 2003-09-17, Robert Kulagowski

# mailto:rkulagow@rocketmail.com

# Save this file in ~/.mythtv/lircrc

begin

    prog = mythtv

    button = Off

    config = Esc

end

begin

    prog = mythtv

    button = Go

# Swap the PiP windows

    config = N

end

begin

    prog = mythtv

    button = 1

    config = 1

end

begin

    prog = mythtv

    button = 2

    config = 2

end

begin

    prog = mythtv

    button = 3

    config = 3

end

begin

    prog = mythtv

    button = 4

    config = 4

end

begin

    prog = mythtv

    button = 5

    config = 5

end

begin

    prog = mythtv

    button = 6

    config = 6

end

begin

    prog = mythtv

    button = 7

    config = 7

end

begin

    prog = mythtv

    button = 8

    config = 8

end

begin

    prog = mythtv

    button = 9

    config = 9

end

begin

    prog = mythtv

    button = Back/Exit

    config = Esc

end

begin

    prog = mythtv

    button = 0

    config = 0

end

begin

    prog = mythtv

    button = Menu

    config = M

end

# Below are keys used with the Hauppauge Grey remote

begin

   prog = mythtv

# This is the Red key

# We'll use it for "Delete"

   button = Red

   config = D

end

begin

   prog = mythtv

# This is the Green key

# We'll use it for "Information"

   button = Green

   config = I

end

# Note the "repeat =" strings in the volume and channel.

# This means that if you hold down the key, every nth instance will be

# passed.  This depends on your system, so you may want to increase or

# decrease this and see what happens.  repeat = 1 is probably too

# fast.

begin

  prog = mythtv

# This is the Yellow key

# Use it as a volume key

  button = Yellow

  repeat = 3

  config = F10

end

begin

  prog = mythtv

# This is the Blue key

# Use it as a volume key

  button = Blue

  repeat = 3

  config = F11

end

begin

    prog = mythtv

    button = Ch+

# This is the "up" on the central diamond

    repeat = 3

    config = Up

end

begin

    prog = mythtv

    button = Ch-

# This is the "down" on the central diamond

    repeat = 3

    config = Down

end

begin

    prog = mythtv

    button = Vol-

# This is the "left" on the central diamond

    repeat = 3

    config = Left

end

begin

    prog = mythtv

    button = Vol+

# This is the "right" on the central diamond

    repeat = 3

    config = Right

end

begin

    prog = mythtv

# Middle button on the diamond

    button = Ok

    config = Return

end

begin

    prog = mythtv

    button = Mute

    config = F9

end

begin

   prog = mythtv

# Change focus for PiP (to change channel in the other window)

   button = Blank

   config = B

end

begin

   prog = mythtv

# Toggle PiP on/off

   button = Full

   config = V

end

begin

    prog = mythtv

    button = Rew

    config = Left

end

begin

    prog = mythtv

    button = Play

    config = P

end

begin

    prog = mythtv

    button = FFW

    config = Right

end

begin

  prog = mythtv

  button = Record

  config = R

end

begin

   prog = mythtv

# Teletext

   button = Stop

   config = T

end

begin

    prog = mythtv

    button = pause

    config = P

end

begin

   prog = mythtv

   button = Replay

# Use for backwards commercial skip

    config = Q

end

begin

   prog = mythtv

   button = Skip

# Use for forward commercial skip

    config = Z

end

#MPlayer

begin

   prog = mplayer

   button = Off

   config = quit

end

begin

   prog = mplayer

   button = MENU

   config = osd

end

begin

   prog = mplayer

   button = Rew

   config = seek -10

   repeat = 1

end

begin

   prog = mplayer

   button = FFW

   config = seek +10

   repeat = 1

end

begin

   prog = mplayer

   button = Replay

   config = seek -60

   repeat = 1

end

begin

   prog = mplayer

   button = Skip

   config = seek +60

   repeat = 1

end

begin

    prog = mplayer

    button = Pause

    config = pause

end

begin

    prog = mplayer

    button = Play

    config = pause

end

begin

   prog = mplayer

   button = BACK

   config = quit

end

begin

   prog = mplayer

   button = VOL+

   config = volume +1

   repeat = 1

end

begin

   prog = mplayer

   button = VOL-

   config = volume -1

   repeat = 1

end

begin

   prog=mplayer

   button=Mute

   config=mute

end

##XINE

begin

prog = xine

button = PLAY

repeat = 3

config = Play

end

begin

prog = xine

button = STOP

repeat = 3

config = Stop

end

begin

prog = xine

button = BACK/EXIT

config = Quit

end

begin

prog = xine

button = PAUSE

repeat = 3

config = Pause

end

begin

prog = xine

button = CH+

repeat = 4

config = EventUp

end

begin

prog = xine

button = CH-

repeat = 4

config = EventDown

end

begin

prog = xine

button = VOL-

repeat = 4

config = EventLeft

end

begin

prog = xine

button = VOL+

repeat = 4

config = EventRight

end

begin

prog = xine

button = OK

repeat = 0

config = EventSelect

end

begin

prog = xine

button = MENU

repeat = 0

config = Menu

end

#vol down

begin

  prog = xine

  button = YELLOW

  repeat = 1

  config = Volume-

end

#vol up

begin

  prog = xine

  button = Red

  repeat = 1

  config = Volume+

end

begin

prog = xine

button = FFW

repeat = 2

config = SeekRelative+30

end

begin

prog = xine

button = REW

repeat = 2

config = SeekRelative-30

end

#ch up

begin

prog = xine

button = Green

repeat = 1

config = SeekRelative+60

end

#ch down

begin

prog = xine

button = Blue

repeat = 1

config = SeekRelative-60

end

#sleep

begin

prog = xine

button = GO

repeat = 1

config = ZoomIn

end

#display

begin

prog = xine

button = SKIP

repeat = 1

config = ZoomOut

end

Add /etc/init.d/lircd to the startup script

rc-update add lircd default

/etc/init.d/lircd start

/etc/modules.d/ivtv looks like the following:

I'm not sure if this is correct, but the remote does work with this.

alias char-major-81 videodev

alias char-major-81-0 ivtv

alias char-major-61 lirc_i2c

options ivtv ivtv-debug=0 mpg_buffers=90

options tuner type=2

options msp3400 once=1 simple=1 debug=0

add below ivtv msp3400 saa7115 tuner

add above ivtv lirc_dev lirc_i2c

I think that's it.  Hope this helps someone out.

----------

## soya

 *raylpc wrote:*   

>  *soya wrote:*   ok, after digging a bit in the topic i've found that using the last version of lirc (lirc-7.0-r1) doesn't require all these steps. I have one last question, is it possible to find lirc patches for kernel sourceS? so it can be builtin? or the new way of installing lirc have become a standard for all kernels and distributions? thanks again  
> 
> Hi soya, could you outline your steps? I just emerged lirc, and I'm emerging mythtv right now. Is there a way to test lirc without mythtv? I just want to make sure it's working.
> 
> Thanks

 

LIRC_OPTS="--with-driver=X ACCEPT_KEYWORDS="~x86" emerge lirc

nano /etc/conf.d/lircd

LIRCD_OPTS="-d /dev/lirc0"

echo "irexec &" >> ~/.xinitrc (if not using a XDM this will starts irexec after every X start)

/etc/init.d/lircd start

You also need a ~/.lircrc

If you want to try it all, after emerging lirc, startint lircd and running irexec every time you press a button you will see it on the console (but do not run irexec & <- in background)

NOTE:

X is:

none, any, animax, avermedia, avermedia98, bestbuy, bestbuy2, caraca, chronos, comX, cph03x, cph06x, creative, fly98, flyvideo, hauppauge,hauppauge_dvb, ipaq, irdeo,irdeo_remote, irman, irreal, it87, knc_one, logitech, lptX, mediafocusI, packard_bell, parallel, pctv, pixelview_bt878, pixelview_pak, pixelview_pro, provideo, realmagic, remotemaster, serial, silitek, sir, slinke, tekram, winfast_tv2000.

You could also use:

--with-port=port (port number for the lirc device)

--with-irq=irq (irq line for the lirc device)

--with-timer=value (timer value for the parallel driver)

--with-tty=file (tty to use [Irman, RemoteMaster, etc.])

--without-soft-carrier (if your serial hw generates carrier)

--with-transmitter (if you use a transmitter diode)

----------

