This tree works well with the M-103C module with the card and tuner specified as a module parameter. The M-103C is not specifically supported by the SAA7134 driver, however the AVerMedia cardbus 506 is supported, and it appears to be close enough to work.

2.6.23 kernel

The driver compiles without error with a 2.6.23 kernel. The environment used is Fedora 8 (i386, with a vanilla i686 kernel). Prerequisite packages include 'kernel-devel' for the current kernel, as well as compilers etc.

$ hg clone http://mcentral.de/hg/~mrec/v4l-dvb-experimental/
$ make

The default 'make install' overwrites the RPM based v4l kernel modules. So that I had an easy back-out plan, I manually copied the modules to '/lib/modules/`uname -r`/updates'. The search path for finding modules is specified in /etc/depmod.d/depmod.conf, and defaults to 'updates extra built-in weak-updates'; so putting the modules into the 'update' directory means they will be used before the RPM based v4l modules.

cp -v v4l/*.ko /lib/modules/`uname -r`/updates ; depmod -a

I have hard coded the saa7134 options. Given the driver isn't fully supported, hard coding the card and tuner numbers seemed to be a reasonable compromise. The file 'CARDLIST.saa7134' and 'CARDLIST.tuner' files should be consulted to verify the numbers are correct (and it is reasonable to expect them to change).

Download the firmware[3], and copy it to '/lib/firmware'. I used the latest v5 firmware file. Contray to the xc3028 readme file, extracting firmware from Windows drivers wasn't necessary.

2.6.24 kernel

When I tried to compile the mcentral ' v4l-dvb-experimental' tree against a 2.6.24 kernel, I got the error:

CC [M] /usr/local/src/v4l-dvb-experimental/v4l/flexcop-pci.o
In file included from /usr/local/src/v4l-dvb-experimental/v4l/flexcop-common.h:23,
from /usr/local/src/v4l-dvb-experimental/v4l/flexcop-pci.c:10:
/usr/local/src/v4l-dvb-experimental/v4l/dvb_frontend.h:42:33: error: media/v4l_dvb_tuner.h: No such file or directory
In file included from /usr/local/src/v4l-dvb-experimental/v4l/flexcop-common.h:23,
from /usr/local/src/v4l-dvb-experimental/v4l/flexcop-pci.c:10:
/usr/local/src/v4l-dvb-experimental/v4l/dvb_frontend.h:165: error: field 'tuner_ops' has incomplete type

Which successfully compiles the v4l-dvb-experimental tree. Once agin, just do a simple install:

cp -v v4l/*.ko /lib/modules/`uname -r`/updates ; depmod -a

If compiling for a new kernel, a 'make clean' is insufficient, and a 'make distclean' is required.

Loading the 7134 modules

Tweak the modprobe.conf [1] to set the 7134 card to 117. Note that because we have a quad tuner (i.e. four M-103C modules), then the card and the tuner has to be listed 4 times.

Future

I attempted to move from the v4l-dvb-experimental tree to the v4l-dvb tree (here), but I haven't managed to get this working (yet). At some stage I would be keen to be able to have the drivers as part of the standard kernel.

[3] Links to xc3028/xc2028/xc2018 firmware

[4] xc3028 readme

== Hauppauge HVR 900 ==
==== Installation ====
1. get the v4l-dvb repository from linuxtv and type make for generating all symlinks in v4l-dvb/v4l
2. copy tuner.h into v4l-dvb/linux/include/media/ in your v4l directory
3. simply replace following files in the repository
* Makefile
* em28xx-cards.c
* em28xx.h
* tuner-core.c
* tuner-types.c
* xc3028.c
with the files in this directory and simply recompile (copy these files to v4l-dvb/v4l)
==== Firmware ====
this device needs a firmware, which is stored in emBDA.sys
build the firmwareextractor with
$ gcc convert.c -o convert
and extract the firmware
$ ./convert emBDA.sys > /lib/firmware/xceive_xc_3028.fw
(I only tested that tool with Hauppauge HVR 900, Terratec might work too but without any guarantee - please send me BDA files of other xc3028 devices)
==== General ====
* the xc3028 works very reliable and the frequencies are correct for europe
* Please add your email, product name, vendor/product id to the discussion in the v4l wiki at www.linuxtv.org
* I'll not be responsible for any damage caused by this driver, use it with your own risk
==== TODO ====
* some cleanup
* figuring out channel locks
Markus Rechberger <mrechberger@gmail.com>

[5] boot time dmesg loading v4l-dvb-experiment tree with kernel 2.6.24.3-34.fc8 (Note: Flexcop and SAA7148 based DVB-S cards are also present)