As promised, here's my blow by blow account of how I got this working under Mandriva 2007...enjoy!
This was done on a fresh install of Mandriva 2007 - I'd configured my URPMI sources with the help of the easyurpmi web site at http://easyurpmi.zarb.org/ and then ran 'urpmi --auto --auto-select --update' to pull in all the latest patches. I also updated the kernel to 2.6.17-6mdv and did the rest of the work with this as the active kernel.
1. Install kernel-source-2.6.17-6mdv - this will almost certainly also work with the 2.6.17-5mdv kernel that you get after a fresh install, but I'd already appplied all the latest patches before I started playing.
2. Grab a copy of the latest DVB source tarball (v4l-dvb-20060717.tar.gz) from http://www.linuxtv.org/downloads/snapshots/ and save this in your home directory.
3. Create a directory called 'dvb-stuff' and do 'cd dvb-stuff'
4. Unpack the tarball with the command 'tar -zxvf ../v4l-dvb-20060717.tar.gz' - this will give you a bunch of directories and files under /home/yourusername/dvb-stuff.
5. Become root with 'su -' and 'cd /usr/src/linux-2.6.17-6mdv'. Stay as root from this point.
6. Do 'make menuconfig'
7. When you have the kernel config menu appear, press the right-arrow cursor key to highlight the '<exit>' option and press return. Ensure that '<yes>' is highlighted in response to the question 'Do you wish to save your kernel configuration?' and press return.
8. You should be back at a shell prompt at this point.
9. Open up 'Makefile' in your favourite text editor, e.g 'vi Makefile'.
10. Find the line which says 'EXTRAVERSION = -6mdvcustom' and change it to read 'EXTRAVERSION = -6mdv'. Save the amended file. This step avoids the possibility of compiling the DVB kernel modules with a version string which is different to the stock kernel. It probably isn't (if you know much about building your own kernels) the best way to go about this, but it worked for me!
11. Do a 'make clean', followed by 'make'.
12. Watch the output from the 'make' command carefully - when you see it get to the point where it says something like 'CC init/main.o', you can press Ctrl-C to break out of the 'make' process. All we've done up to this point is ensured that all of the kernel compile preprocessor macros have been run, giving you a sporting chance of getting the DVB bits to compile properly.
13. Do 'cd /home/yourusername/dvb-stuff'
14. Open up './linux/drivers/media/dvb/dvb-core/dvb_net.c' in your text editor and go to line 1140. Change this block of code:
dvb_net_feed_stop(dev);
priv->rx_mode = RX_MODE_UNI;
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,18)
spin_lock_bh(&dev->xmit_lock);
#else
netif_tx_lock_bh(dev);
#endif
if (dev->flags & IFF_PROMISC) {
dprintk("%s: promiscuous mode\n", dev->name);
so that it looks like this instead:
dvb_net_feed_stop(dev);
priv->rx_mode = RX_MODE_UNI;
/* #if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,18)
spin_lock_bh(&dev->xmit_lock);
#else */
netif_tx_lock_bh(dev);
/* #endif */
if (dev->flags & IFF_PROMISC) {
dprintk("%s: promiscuous mode\n", dev->name);
This hack *really* shouldn't be necessary, but I don't understand enough about the way Mandriva build their distro kernels to be able to offer anything other than this 'brute force' solution to the problem. If you don't make this change, the build of the DVB modules fails with an error message which suggests to me that something somewhere has been patched in the kernel source tree, such that trying to compile the 'spin_lock_bh' function fails completely.
15. Make the exact same change slightly further down the code at line 1169 and save the modified file.
16. Now do 'make' and wait for the build process to finish. You will probably see the odd warning here and there as the build progresses, but this doesn't appear to cause any problems in the resulting compiled modules.
17. When the compile has finished, type 'make install' to copy the new modules over to the right place on your system.
<edited to add>
17.5 Run 'depmod -a' to ensure that all the new module dependencies and symbol maps get properly updated for the newly-installed DVB modules. Things go a bit wierd if you miss this step out! :-)
</edited>
18. Next, you will need a copy of the revision 3 firmware for the Freecom DVB stick. You can download this from:
http://thadathil.net:8000/dvb/fw/dvb-usb/d...-wt220u-fc03.fw
Save this file in /lib/firmware
19. Now do 'tail -f /var/log/messages'. This monitors the system log file in real time so you can see what's going on. Plug your Freecom DVB stick in. You should see something like this get written to the log:
Nov 23 11:51:24 localhost kernel: usb 4-6: new high speed USB device using ehci_hcd and address 3
Nov 23 11:51:24 localhost kernel: usb 4-6: configuration #1 chosen from 1 choice
Nov 23 11:51:25 localhost kernel: dvb-usb: found a 'WideView WT-220U PenType Receiver (Typhoon/Freecom)' in cold state, will try to load a firmware
Nov 23 11:51:25 localhost kernel: dvb-usb: downloading firmware from file 'dvb-usb-wt220u-fc03.fw'
Nov 23 11:51:25 localhost kernel: usbcore: registered new driver dvb_usb_dtt200u
Nov 23 11:51:26 localhost kernel: usb 4-6: USB disconnect, address 3
Nov 23 11:51:26 localhost kernel: dvb-usb: generic DVB-USB module successfully deinitialized and disconnected.
Nov 23 11:51:27 localhost kernel: usb 4-6: new high speed USB device using ehci_hcd and address 4
Nov 23 11:51:27 localhost kernel: usb 4-6: configuration #1 chosen from 1 choice
Nov 23 11:51:27 localhost kernel: dvb-usb: found a 'WideView WT-220U PenType Receiver (Typhoon/Freecom)' in warm state.
Nov 23 11:51:27 localhost kernel: dvb-usb: will use the device's hardware PID filter (table count: 15).
Nov 23 11:51:27 localhost kernel: DVB: registering new adapter (WideView WT-220U PenType Receiver (Typhoon/Freecom)).
Nov 23 11:51:27 localhost kernel: DVB: registering frontend 0 (WideView USB DVB-T)...
Nov 23 11:51:27 localhost kernel: input: IR-receiver inside an USB DVB receiver as /class/input/input3
Nov 23 11:51:27 localhost kernel: dvb-usb: schedule remote query interval to 300 msecs.
Nov 23 11:51:27 localhost kernel: dvb-usb: WideView WT-220U PenType Receiver (Typhoon/Freecom) successfully initialized and connected.
Nov 23 11:51:29 localhost kernel: dvb-usb: recv bulk message failed: -110
Nov 23 11:51:31 localhost udevd-event[3312]: wait_for_sysfs: waiting for '/sys/devices/pci0000:00/0000:00:1d.7/usb4/4-6/4-6:1.1/bus' failed
Nov 23 11:51:37 localhost kernel: drivers/usb/input/hid-core.c: timeout initializing reports
Nov 23 11:51:37 localhost kernel: input: Digital TV Receiver Digital TV Receiver as /class/input/input4
Nov 23 11:51:37 localhost kernel: input: USB HID v1.10 Keyboard [Digital TV Receiver Digital TV Receiver] on usb-0000:00:1d.7-6
20. The next step is to ensure that you have the stuff you need to actually be able to watch TV. For me, I installed the following using urpmi:
dvb-apps
dvbsnoop
dvbstream
dvbtune
libdvb
kaffeine
mplayer
mplayer-gui
mplayer-fonts
win32-codecs (from the PLF site, http://easyurpmi.zarb.org/)
21. Fire up kaffeine and you should get prompted to select your local TV transmitter, after which you can follow through the channel search wizard. Don't know the name of your local TV transmitter? No problem, take a look here:
http://www.dtg.org.uk/retailer/coverage.html
Enter your UK postcode and the site will tell you which is your nearest transmitter.
<note added on December 7th 2006>
22. If you have the msec package installed, and I believe this gets installed by default now in Mandriva, you'll eventually find that the permissions on /dev/devb/* get altered so that all devices are owned by user root, group video and have permissions set to 660. This means that when you try to tune a channel, you'll get a 'permission denied' error. The solution is to edit /etc/group as root and add your regular user into the 'video' group. In my case, I changed the relevant line in /etc/group from:
video:x:82:vdr,mythtv
to:
video:x:82:vdr,mythtv,phile
and this sorted my permissions problem.
</note added on December 7th 2006>
Happy DVB-ing!
I'd suggest you now go off and read up on some of the stuff on the LinuxTV site. One handy hint which had me stumped for a while...you will inevitably find yourself in a position where you're trying to generate a 'channels.conf' file for use with other apps. All of the docs and howtos out there say that you should use a program called 'scan' to do this. Under Mandriva 2007, this program is installed as 'scandvb' and is part of the dvp-apps RPM package. Just substitute 'scandvb' wherever you see an instruction to use the 'scan' command.
Please post back here with any success/failure stories based on these instructions.