CAIW DTV op de PC onder Linux met de Terratec Cincergy 1200 DVB-C kaart
Keywords: DTV, CAIW, CAI Westland, DVB-C, Linux, Terratec Cinergy 1200 DVB-C
Datum document: 1 februari 2005
ONDERSTAANDE INFORMATIE IS: AS-IS. HOEWEL IK UITERST
ZORGVULDIG BEN MET DE INFORMATIE BEN JE ZELF VERANTWOORDELIJK VOOR WAT JE ER
MEE DOET. VOOR MIJ WERKT DE ONTVANGST VIA HET KABELNET VAN CAIW IN WATERINGEN.
CONTROLEER VOOR AANSCHAF VAN EEN KAART OF ER WEL FREE-TO-AIR WORDT AANGEBODEN
VIA DE KABEL EN OF DE DVB-C STANDAARD WORDT GEBRUIKT.
DVB-C onder Linux
Deze beschrijving geeft weer hoe de Terratec Cinergy 1200 DVB-C kaart onder
Linux (Fedora Core 2, met een recente kernelupdate, bijv 2.6.10-1.9_FC2) geinstalleerd
wordt. Gebaseerd op de/ Based on MythTV
DVB Setup Guide
1 Devices aanmaken
Het is nodig om de nodige devices aan te maken. Als deze er nog niet zijn,
draai dan onderstaand script:
#!/bin/sh
# Create device nodes for the Linux DVB API with DVB_API_VERSION 2.
# The devices created are suitable for most current PC DVB cards,
# i.e. cards having one frontend, one demux and optionally one
# MPEG decoder.
# The script creates devices for four cards by default.
if [ -e /dev/.devfsd ]; then
echo "It seems you are using devfs. Good!"
exit 0
fi
# get rid of old DVB API devices; do it twice for good measure...
rm -rf /dev/ost
rm -rf /dev/ost
rm -rf /dev/dvb
rm -rf /dev/dvb
mkdir /dev/dvb
chmod 755 /dev/dvb
for i in `seq 0 3`; do
echo "Creating DVB devices in /dev/dvb/adapter$i"
mkdir /dev/dvb/adapter$i
chmod 755 /dev/dvb/adapter$i
mknod -m 0660 /dev/dvb/adapter$i/video0 c 212 `expr 64 \* $i + 0`
mknod -m 0660 /dev/dvb/adapter$i/audio0 c 212 `expr 64 \* $i + 1`
mknod -m 0660 /dev/dvb/adapter$i/frontend0 c 212 `expr 64 \* $i + 3`
mknod -m 0660 /dev/dvb/adapter$i/demux0 c 212 `expr 64 \* $i + 4`
mknod -m 0660 /dev/dvb/adapter$i/dvr0 c 212 `expr 64 \* $i + 5`
mknod -m 0660 /dev/dvb/adapter$i/ca0 c 212 `expr 64 \* $i + 6`
mknod -m 0660 /dev/dvb/adapter$i/net0 c 212 `expr 64 \* $i + 7`
mknod -m 0660 /dev/dvb/adapter$i/osd0 c 212 `expr 64 \* $i + 8`
chown root.video /dev/dvb/adapter$i/*
done
2. Juiste modules laden. Voor de Terratec Cinergy 1200 DVB-C:
#!/bin/sh
cd /lib/modules/`uname -r`
set -x
insmod ./kernel/drivers/media/video/video-buf.ko
insmod ./kernel/drivers/media/video/videodev.ko
insmod ./kernel/drivers/media/video/v4l1-compat.ko
insmod ./kernel/drivers/media/video/v4l2-common.ko
insmod ./kernel/drivers/media/dvb/dvb-core/dvb-core.ko
insmod ./kernel/drivers/media/common/saa7146.ko
insmod ./kernel/drivers/media/common/saa7146_vv.ko
insmod ./kernel/drivers/i2c/i2c-core.ko
insmod ./kernel/drivers/media/dvb/ttpci/ttpci-eeprom.ko
insmod ./kernel/drivers/media/dvb/ttpci/budget-core.ko
insmod ./kernel/drivers/media/dvb/frontends/tda10021.ko
insmod ./kernel/drivers/media/dvb/frontends/tda1004x.ko
insmod ./kernel/drivers/media/dvb/frontends/stv0299.ko
insmod ./kernel/drivers/media/dvb/ttpci/budget-av.ko
exit 0
3. De hardware moet nu herkend worden. Zie /var/log/messages:
Feb 1 20:06:32 manus kernel: Linux video capture interface: v1.00
Feb 1 20:06:33 manus kernel: saa7146: register extension 'budget dvb /w video
in'.
Feb 1 20:06:33 manus kernel: PCI: Found IRQ 11 for device 0000:00:08.0
Feb 1 20:06:33 manus kernel: PCI: Sharing IRQ 11 with 0000:00:0a.2
Feb 1 20:06:33 manus kernel: PCI: Sharing IRQ 11 with 0000:00:0c.0
Feb 1 20:06:33 manus kernel: saa7146: found saa7146 @ mem d0a5a000 (revision 1,
irq 11) (0x153b,0x1156).
Feb 1 20:06:33 manus kernel: DVB: registering new adapter (Terratec Cinergy 1200
DVB-C).
Feb 1 20:06:33 manus kernel: adapter failed MAC signature check
Feb 1 20:06:33 manus kernel: encoded MAC from EEPROM was ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff
Feb 1 20:06:33 manus kernel: KNC1-0: MAC addr = 00:0a:ac:01:b3:7e
Feb 1 20:06:33 manus kernel: DVB: registering frontend 0 (Philips TDA10021 DVB-C)...
Als de kaart niet wordt herkend, controleer dan of de kernel recent is. De meegeleverde
kernel van Fedora Core 2 is niet recent genoeg. De tuner-chip TDA10021 wordt nog
niet herkend; dat is een ontwikkeling van nov/dec 2004. Kernel 2.6.10-1.9_FC2
is in ieder geval recent (probeer: yum update kernel).
4. Draai een scan
Haal de linuxtv-dvb-apps op:
Compileer de linuxtv-dvb-apps: http://www.linuxtv.org/downloads/linuxtv-dvb-apps-1.1.0.tar.bz2
# wget -N http://www.linuxtv.org/downloads/linuxtv-dvb-apps-1.1.0.tar.bz2 # tar jxvf linuxtv-dvb-apps-1.1.0.tar.bz2 # cd linuxtv-dvb-apps-1.1.0 # make # cd util/scan/
# echo "C 554000000 6900000 NONE QAM64" > dvb-c/nl-caiw # ./scan -5 dvb-c/nl-caiw > ../szap/channels.conf-dvbc-caiw
De kaart gaat nu scannen, en levert een lijst van kanalen op. Download hier
de lijst die uit mijn scan komt. Als de scan niet lukt, probeer dan de lijst
te downloaden en ga verder met de volgende stap.
5. Probeer een kanaal af te stemmen
# cd ../szap
# ./czap -c channels.conf-dvbc-caiw "RTL4" using '/dev/dvb/adapter0/frontend0' and '/dev/dvb/adapter0/demux0' 59 RTL4:658000000:INVERSION_AUTO:6900000:FEC_NONE:QAM_64:512:4012:4010 59 RTL4: f 658000000, s 6900000, i 2, fec 0, qam 3, v 0x200, a 0xfac status 1f | signal 8484 | snr e8e8 | ber 0000bdf6 | unc 00000036 | FE_HAS_LOCK status 1f | signal 8484 | snr e8e8 | ber 0000bdf6 | unc 00000000 | FE_HAS_LOCK status 1f | signal 8484 | snr e9e9 | ber 0000bdf6 | unc 00000000 | FE_HAS_LOCK status 1f | signal 8484 | snr e8e8 | ber 0000bdf6 | unc 00000000 | FE_HAS_LOCK status 1f | signal 8484 | snr e8e8 | ber 0000bdf6 | unc 00000000 | FE_HAS_LOCK status 1f | signal 8484 | snr eaea | ber 0000bdf6 | unc 00000000 | FE_HAS_LOCK status 1f | signal 8484 | snr eaea | ber 0000bdf6 | unc 00000000 | FE_HAS_LOCK ...
Uit de README:
The status messages have the following meaning:
status 0x1f --- The demodulator status bits.
0x1f means all bits set, everything ok.
signal [0x0000...0xffff] --- Signal Strength. Values above 0x8000 should be
ok.
snr [0x0000...0xffff] --- Signal/Noise Ratio. Values above 0x8000 are ok.
ber [0...0xffffffff] --- Bit Error Rate. The less the better.
unc [0...0xffffffff] --- Number of Uncorrectable Blocks.
Small numbers are Preferable.
If everything is alright and all frontend circuits are working stable
(are locked) you should see a FE_HAS_LOCK in the rightmost line.
6. Dvbstream
Met dvbstream kun je een DVB stream (zender) de-multplexen en omzetten naar
een stream die kan worden afgespeeld met mplayer of via het netwerk kan worden
verspreid. De MythTV guide meldt dat we de CVS versie moeten gebruiken, en vooral
niet de beschikbaar gestelde tar-balls. Om CVS te downloaden is een internetverbinding
nodig:
# mkdir dvbtools
# cd dvbtools/
# cvs -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/dvbtools login
Logging in to :pserver:anonymous@cvs.sourceforge.net:2401/cvsroot/dvbtools
CVS password: <druk op enter, zonder een password in te geven>
# cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/dvbtools co -P dvbstream
cvs checkout: Updating dvbstream
U dvbstream/CHANGES
U dvbstream/COPYING
U dvbstream/Makefile
U dvbstream/README
U dvbstream/do_route.sh
U dvbstream/dumprtp.c
U dvbstream/dvb_defaults.h
U dvbstream/dvbstream.c
U dvbstream/rtp.c
U dvbstream/rtp.h
U dvbstream/rtpfeed.c
U dvbstream/rtpradio.sh
U dvbstream/rtptv.sh
U dvbstream/server.c
U dvbstream/ts_filter.c
U dvbstream/tune.c
U dvbstream/tune.h
cvs checkout: Updating dvbstream/TELNET
U dvbstream/TELNET/README
U dvbstream/TELNET/cnn.sh
U dvbstream/TELNET/itn.sh
U dvbstream/TELNET/svdrpsend.pl
U dvbstream/TELNET/virgin.sh
U dvbstream/TELNET/xfm.sh
cvs checkout: Updating dvbstream/mpegtools
U dvbstream/mpegtools/ctools.c
U dvbstream/mpegtools/ctools.h
U dvbstream/mpegtools/remux.c
U dvbstream/mpegtools/remux.h
U dvbstream/mpegtools/ringbuffy.c
U dvbstream/mpegtools/ringbuffy.h
U dvbstream/mpegtools/transform.c
U dvbstream/mpegtools/transform.h
# cd dvbstream/ # mkdir ../DVB/ # ln -s /lib/modules/`uname -r`/build/include ../DVB/ # make
Als je de melding krijgt:
../DVB/include/linux/config.h:6:2: #error including kernel header in userspace; use the glibc headers instead!
In file included from tune.h:7,
from dvbstream.c:53:
dvb_defaults.h:83:2: warning: #warning No DVB-T country defined in dvb_defaults.h
dvb_defaults.h:84:2: warning: #warning defaulting to UK
dvb_defaults.h:85:2: warning: #warning Ignore this if using Satellite or Cable
dvbstream.c:892:8: warning: #warning WHAT SHOULD THE PAYLOAD TYPE BE FOR "MPEG-2 PS" ?
dvbstream.c: In function `main':
dvbstream.c:445: warning: `ttl' might be used uninitialized in this function
make: *** [dvbstream] Error 1
Wis dan de volgende file (en draai make nogmaals):
# rm ../DVB/include/linux/config.h
Voeg een route toe voor multicast verkeer:
# sh do_route.sh
Stream nu RTL4:
# grep RTL ../../linuxtv-dvb-apps-1.1.0/util/szap/channels.conf-dvbc-caiw RTL FM:666000000:INVERSION_AUTO:6900000:FEC_NONE:QAM_64:0:1162:1160 RTL4:658000000:INVERSION_AUTO:6900000:FEC_NONE:QAM_64:512:4012:4010 RTL5:658000000:INVERSION_AUTO:6900000:FEC_NONE:QAM_64:4021:4022:4020 RTL Television:730000000:INVERSION_AUTO:6900000:FEC_NONE:QAM_256:1031:1032:10030 # ./dvbstream -f 658000000 -s 6900000 -qam 64 512 4012 4020 dvbstream v0.6 - (C) Dave Chapman 2001-2004 Released under the GPL. Latest version available from http://www.linuxstb.org/ Tuning to 658000000 Hz Using DVB card "Philips TDA10021 DVB-C" tuning DVB-C to 658000000, srate=-1689934592 Getting frontend status Not able to lock to the signal on the given frequency dvbstream will stop after -1 seconds (71582788 minutes) Using 224.0.1.2:5004:2 version=2 Streaming 3 streams
DVBsnoop
DVBsnoop is een utility om DVB-streams te analyseren. Compileer dvbsnoop zo:
# wget http://mesh.dl.sourceforge.net/sourceforge/dvbsnoop/dvbsnoop-1.3.77.tar.gz
# tar zxf dvbsnoop-1.3.77.tar.gz
# cd dvbsnoop-1.3.77/
# ./configure CPPFLAGS=-I/lib/modules/2.6.10-1.9_FC2/build/include
# make
Reacties: herman.dtv@wateringen.net
|