Installing the Remote Control of the Hauppauge WinTV PCI
Christin Seifert
Table of Contents
- Getting the Kernel Sources
- Compiling the Kernel
- Booting the New Kernel
- Compiling Lirc
- Automatic Start of lircd at Runlevels 3 and 5
- Compiling kwintv
- Setting up kwintv
This article describes the operation of the TV card Hauppauge WinTV PCI remote control (which was included with the card) under SUSE 7.1, kernel-2.4.2, kwintv-0.8.0, lirc-0.6.3. First, some important notes:
- Most of the commands listed here work only if you have root privileges. Thus, if you should see the error message "Permission denied", simply use su to switch users.
- While it was also possible to install the remote control using the kernel sources included with SUSE, doing so caused the sound to quit working. The problem was that the compilation process created a kernel version 2.4.2 (as required by lirc), while the modules were compiled for 2.4.2.-4GB (the directory in /lib had the same name, but the problem could not be solved, as expected, with a symbolic link). While Version 2.4.2.-4GB was the default installation and could be used to compile lirc, a modprobe failed and informed the user of a kernel version mismatch.
- SUSE cannot provide installation support for any problems that might occur while following these instructions (which were tested by different users and found to be working), because complex procedures such as kernel compilation are not included in the installation support package.
That is why it seems to me that users cannot get around having to download the original kernel sources (at least I could not skip this step). If the procedure works with the included SUSE kernel sources, Step 1 applies, specifically the installation of the kernel sources with YaST. (If somebody successfully accomplishes this, I am, of course, very interested in learning about the solution).
1. Installing the Kernel Sources
First, we must install the kernel sources. This is done by using YaST (series d, package lx_sus24) or, alternatively, we can use the original kernel available at www.kernel.org. In the first case, we can now proceed to Step 2. In the second case, it is best to start by storing the archive linux-2.4.2.tar.gz in the /tmp directory. Then we decompress the sources with
tar xvzf linux-2.4.2.tar.gz
Next, we copy the linux directory to /usr/src/linux-2.4.2, switch to the directory of kernel sources, and then update the symbolic link with:
cd /usr/src
rm linux
mkdir linux-2.4.2
ln -s linux-2.4.2 linux
mv /tmp/linux/* /usr/src/linux
2. Compiling the Kernel
To compile the kernel, we start with the configuration of our current SUSE kernel.
cp /boot/vmlinuz_24.config /usr/src/linux/.config
make menuconfig
You should always select Loadable Module Support --> Enable Loadable Module Support, since doing so enables you to load kernel modules later on. It is important that you select
IrDA (infrared) Support --> IrDA Subsystem Support
as the module. You don't need any of the other options listed under this menu item. You also must select
Character Devices --> I2C Support --> I2C Support (i2c-core.o)
and
I2C bit-banging Interface (i2c-algo-bit.o)
Multimedia Devices --> Video For Linux (videodev.o)
as well as the submenu item
Video For Linux --> BT484 Video For Linux (bttv.o)
Testing revealed that some files could not be compiled with this configuration (6pack.c). The solution is to disable the Amateur Radio Support --> Amateur Radio Support option - as long as you don't need to use the amateur radio functions. We can now finish and save the configuration. Even if you did not make any changes to the configuration you must save it and recompile the kernel. Next, we must compile the kernel and install the modules:
make dep
make bzImage
make modules
make modules_install
3. Booting the New Kernel
To make the kernel bootable, copy it to the /boot directory and insert the corresponding entry in /etc/lilo.conf.
mkdir /boot/new
cp arch/i386/boot/bzImage /boot/new/vmlinuz
cp System.map /boot/new
Now we also insert the following lines in the /etc/lilo.conf file:
image = /boot/new/vmlinuz
root = /dev/hdax (The x is the same as the one under the entry for the linux label)
label = new
Now all you need to do is activate lilo and you are all set to restart the system. Enter new in response to the lilo prompt.
4. Compiling the Lirc Package
We are now working with the appropriate kernel. Next, we need the Lirc sources. You can use YaST to install them (series zq, package lirc_spm), or, alternatively, you can go to www.lirc.org. Once again, we copy the archive to the /tmp directory, and then unzip it:
cp /usr/src/packages/SOURCES/lirc-0.6.3pre3.tar.gz /tmp
cd /tmp
tar xvzf lirc-0.6.3pre3.tar.gz
cd lirc-0.6.3pre3
Now all you need to do is execute a ./setup.sh. In the dialog box, select
Driver configuration --> TV card --> Hauppauge TV card (new l2C layer required),
and then select Save Configuration & Run Configure. Then use the following commands to begin compiling:
make
make install
You now have installed this package as well. In the file /etc/modules.conf, insert the line
alias char-major-61 lirc_i2c
or edit the line if it already exists. To load the module you can now execute a modprobe lirc_i2c after a depmod -a. Next, use /usr/local/sbin/lircd to start the daemon and you can run the first tests with the /usr/local/bin/irw tool. If you press a remote control button and an image appears on the screen, we are almost done ;-). chmod 666 /dev/lirc* lets all users on the system access the device. (This problem can also be solved more elegantly by creating a new group). Enter /usr/local/lib in /etc/ld.so.conf (if that has not yet been done) and activate ldconfig to make lirc functions available to other programs (incl. kwintv).
5. Automatic Start of lircd at Runlevels 3 and 5
To start the daemon automatically, we still need to copy the initscript to the correct location and position it in the runlevels at the left.
cp /tmp/lirc-0.6.3pre3/contrib/lirc.suse6.2 /etc/init.d/lirc
cd /etc/init.d/rc3.d
ln -s ../lirc S80lirc
ln -s ../lirc K80lirc
cd /etc/init.d/rc5.d
ln -s ../lirc S80lirc
ln -s ../lirc K80lirc
Here you can select any number smaller than 99 instead of the number 80. The lirc script, for example, contains the number 20. Now you need to insert START_LIRCD="yes" in the /etc/rc.config file to specify the correct variable. After a restart, the following message
Starting lircd ... done
should appear during the boot process.
6. Compiling kwintv
Now we still must teach our favorite TV application that the system has a remote control. I will describe the installation of kwintv below. In case the program has already been installed, you must first deinstall kwintv-RPM with yast (series k2de). Then install the kwintv-0.8.0 (series zq, package kwintv-spm) sources. (Note: The current Version 0.8.5 from the kwintv homepage did not compile during testing). Once again, copy the sources into the /tmp directory, and then unzip them:
cp /usr/src/packages/SOURCES/kwintv-0.8.0.tar.bz2 /tmp
cd /tmp
bunzip2 kwintv-0.8.0.tar.bz2
tar xfv kwintv-0.8.0.tar
cd kwintv-0.8.0
An advance note: If the configuration or compilation fails, the problem might be missing libraries. The needed packages are qtdevel, qtlib and qtcompat from the xdev series, as well as the klibs and ksupp packages from the kde series. Next, we use the following configuration command:
./configure>conf.log
If the conf.log file now recognizes the devices, that is a very good sign ;-). (You can quickly check this with cat conf.log|grep lir). Now we use these compilation commands:
make
make install
and we are all done with this step.
7. Setting up kwintv
Start kwintv in the KDE, and then use Options --> IRC code bindings to assign keys to the functions (don't forget to select Save Options).
Have fun watching TV :-)
|