Opensuse 11.x Hauppauge PVR-150
Setting up Hauppauge PVR-150 with IR blaster on OpenSUSE 11.1
This is first draft of how to set up the PVR-150 on OpenSUSE 11.1, I hope somebody could help clean up this article as the sucess stories appears. Belive me, I got it working.
The PVR-150 (PCI edition) is supported out of the box with OpenSUSE 11.1, it only needed the ivtv-firmware to start working as a capture card.
I first got the IR reciever part working as the firmware supports it. By some strange reason I had the PAE kernel instead of the default kernel, but I changed to the default kernel in Yast as I installed the lirc-kmp-default module supporting the IR reciever (only! I belive).
I set up the /etc/lircd.conf from the one found at http://lirc.sourceforge.net/remotes/hauppauge/lircd.conf.hauppauge. A lot of time was spent searching for the error when i first used the distribution file /usr/share/lirc/remotes/hauppauge/lircd.conf.hauppauge. The latter file contains mappings to names that are litteral 'OK' instead of OK, an error not easily spotted for one having his first entry into lirc.
The applications also needs a corresponding file normaly called .lircrc stored under ~ or for MythTV stored under ~/.mythtv/. A good idea can be to set up a symbolic link between these files.
The lirc.conf file maps a keycode to a key name. The name could be Exit or 1. The .lircrc maps the name to an action in an application. To watch what is entering the system the command irw could be used. It listens to the socket.
Rememer to restart the lirc deamon after making changes to /etc/lircd.conf.
I assume now that you have got the PVR-150 up and running with MythTV from other guides and the information above. We are now about to rip down a working system. At this point you should be familiar with the command line and know how to start and stop services in OpenSUSE and manage files.
First we need the build enviroment. I installed in yast The package group: Base development The packages: kernel-sources and kernel-syms I removed and tabooed: lirc-kmp-default, pulseaudio-module-lirc, and lirc. The latter I dont think was nessesary as I had to reinstall it again. It is apparently the userspace tools.
Now I headed over to http://www.blushingpenguin.com/mark/blog/?p=24 and downloaded the patched module and the firmware. I also kept a good eye to the helpfull Jason Antman's blog. He had got the blaster working under 11.0. http://jantman.dyndns.org:10011/wp/2008/09/lirc-and-hauppauge-pvr-150-on-opensuse-110/
I don't have mutch of a good build enviroment but this is what I did
cd /usr/src/linux uname -r
And I found out I was running the 220.127.116.11-9-default kernel The build apparently needs some symvers:
cp /usr/src/linux-obj/i386/default/Module.symvers /usr/src/linux/
I had to prepare for the build
make oldconfig && make prepare make prepare scripts
Now I packed out the module, bunzip2, tar -xvf and changed directory to enter the module directory
bunzip2 lirc-0.8.5-CVS-pvr150.tar.bz2 tar -xvf lirc-0.8.5-CVS-pvr150.tar cd lirc-0.8.5-CVS-pvr150/
Setup the module, now watch out. You should only save the changes made here!
./setup.sh Enter the menu system:
1 Driver configuration 5 TV Card i Hauppauge PVR-150 TV card (new I2C layer required) 4 Save configuration & exit
Only Save the configuration as there are some changes nessesary.
The output from the menu should be:
Configuration: .setup.config, executable shell script: configure.sh
Now use the favorite editor of your choice on configure.sh
Below I made the changes nessesary for me to complete the build and install. I inserted a --with-kerneldir to the configuration.
#! /bin/sh ./configure \ --with-kerneldir=/usr/src/kernel \ --with-moduledir=/lib/modules/18.104.22.168-9-default/misc \ --with-x \ --with-driver=hauppauge_pvr150 \ --with-major=61 \ --with-port=none \ --with-irq=none \ "$@"
Now save and exit,
Run through the configuration ./configure.sh
Hopefully all goes well. Then make and install make make install
We should move or copy the firmware for the IR blaster into the right spot.
cp haup-ir-blaster.bin /lib/firmware/ reboot
Now I had to install lirc again (usespace tools) as I propably removed to mutch
Load the modules
modprobe lirc_dev debug=1 && modprobe lirc_pvr150 debug=1
And dmesg is happy:
lirc_dev: IR Remote Control driver registered, major 61 lirc_pvr150: probe 0x70 @ ivtv i2c driver #0: yes lirc_pvr150: probe 0x71 @ ivtv i2c driver #0: yes lirc_pvr150: chip found with RX and TX lirc_dev: lirc_register_plugin: sample_rate: 0 lirc_dev: plugin lirc_pvr150 registered at minor number = 0 firmware: requesting haup-ir-blaster.bin lirc_pvr150: poll thread started lirc_pvr150: firmware of size 302355 loaded lirc_pvr150: 743 codesets loaded
Its time to test the lirc deamon
The -n switch makes it not demonize so that I can watch the connections
By starting another shell with irw I can see the client connecting, and disconnecting as I terminate the command:
lircd-0.8.4: lircd(default) ready lircd-0.8.4: accepted new client on /var/run/lirc/lircd lircd-0.8.4: caught signal
Now I am not sure I know what I did here but this made the rclircd stop complaing:
change LIRC_MODULE=lirc_i2c to LIRC_MODULE=i2c_core
Run irw again and see that you get a connection
Now to the a bit timeconsuming part. Apparently the Hauppauge card is not able to send whatever you want, they have a database of codes for different stuff to control.
I had a Pineer satelite reciever in Europe so by looking at http://www.blushingpenguin.com/mark/lmilk/IRcodesets.html I was lucky enough to find that the relevant codesets where 337, 481, and 688.
Now I took a backup of my lircd.conf and downloaded the http://www.blushingpenguin.com/mark/lmilk/lircd.conf that contains every known command the unit can send. I then downloaded the http://www.blushingpenguin.com/mark/lmilk/send_power_new that sends a power signal in every codeset known to the device. We are now down by a magnitude or more of commands to search trough. Now be aware that the IR blaster has a very short range in the order of mm to cm, and you should be able to see it visibly blink when it sends commands.
Now to get the new lircd.conf working
Now remember I had that Pioneer. I did not need to send the power command in every known codeset. I therefore cut all exept the commands containing the codesets 337, 481, and 688.
Now I found out one of them worked and by remarking lines and running the script over again I found what codeset I needed:
#echo 1_337_KEY_POWER #irsend SEND_ONCE blaster 1_337_KEY_POWER #sleep 1
echo 1_481_KEY_POWER irsend SEND_ONCE blaster 1_481_KEY_POWER sleep 1
#echo 1_688_KEY_POWER #irsend SEND_ONCE blaster 1_688_KEY_POWER #sleep 1
As you can see from above the codeset for the Pioneer BCT-1540 is 481 as that is the one I finaly did not comment.
Now I only needed to merge the 481 codeset from the current (all send codes) lircd.conf to my (Hauppauge remonte) lircd.conf by adding the first to the latter.
cat /etc/lircd.conf >>hauppaugeonlylircd.conf
As we dont need all the raw codes anymore we can copy the merged file back.
cp hauppaugeonlylircd.conf /etc/lircd.conf
and restart lircd
Now the names in the new lircd.conf is not particulary good for later use. The numbers should at least be renamed
name 1_481_KEY_7 2179006471
name 7 2179006471
I also renamed the other stuff:
Now for mythtv we should be able to change channel. Therefore from our same good source that realy might deserve some support we download the channel changer script
And put it somewhere sane like in the ~/bin directory of the mythtv user or in /usr/local/bin Remember to make it executable
chmod +x change_channel
In MythTV the channel frequency settings is where we should put this external (tuner) channel number.
Now the kernel module lirc_pvr150 did not load with reboot on my comuter, neighter did lircd.
Enter Yast sysconfig and insert lirc_pvr150 into system/kernel/MODULES_LOADED_ON_BOOT In Yast system services (runlevel) I activated lirc.
Hopefully something useful was found on this page. This was my first setup of MythTV, of Haupagge PVR-150, of Lirc.
Please contribute to improving this page.