Analog-TV
Zeile 7: | Zeile 7: | ||
''Die Methode hier ist ganz sicher nicht fehlerlos! | ''Die Methode hier ist ganz sicher nicht fehlerlos! | ||
Und auch nicht unbedingt für absolute linux-Anfänger geeignet. | Und auch nicht unbedingt für absolute linux-Anfänger geeignet. | ||
+ | |||
Was hier so glatt aussieht hat jede Menge Stolpersteine. | Was hier so glatt aussieht hat jede Menge Stolpersteine. | ||
Aber vielleicht ist der eine oder andre nützliche Tip mit bei.'' | Aber vielleicht ist der eine oder andre nützliche Tip mit bei.'' | ||
Zeile 14: | Zeile 15: | ||
mkdir ivtv_install && cd ivtv_install | mkdir ivtv_install && cd ivtv_install | ||
wget http://cesnet.dl.sourceforge.net/sourceforge/ivtv/ivtv-0.1.9.tar.gz | wget http://cesnet.dl.sourceforge.net/sourceforge/ivtv/ivtv-0.1.9.tar.gz | ||
+ | |||
wget http://heanet.dl.sourceforge.net/sourceforge/ivtv/Video-Frequencies-0.03.tar.gz | wget http://heanet.dl.sourceforge.net/sourceforge/ivtv/Video-Frequencies-0.03.tar.gz | ||
+ | |||
wget http://search.cpan.org/CPAN/authors/id/W/WA/WADG/Config-IniFiles-2.38.tar.gz | wget http://search.cpan.org/CPAN/authors/id/W/WA/WADG/Config-IniFiles-2.38.tar.gz | ||
+ | |||
wget http://search.cpan.org/CPAN/authors/id/N/NI/NI-S/Tk-804.027.tar.gz | wget http://search.cpan.org/CPAN/authors/id/N/NI/NI-S/Tk-804.027.tar.gz | ||
'''2) den ivtv Treiber installieren''' | '''2) den ivtv Treiber installieren''' | ||
tar -xzf ivtv-0.1.9.tar.gz | tar -xzf ivtv-0.1.9.tar.gz | ||
+ | |||
cd ivtv/utils | cd ivtv/utils | ||
+ | |||
# mounten des cdrom und extrahieren der Firmware von der Windows Treiber cd, | # mounten des cdrom und extrahieren der Firmware von der Windows Treiber cd, | ||
# u.U. muss hier der komplette Pfad zur exe angeben werden | # u.U. muss hier der komplette Pfad zur exe angeben werden | ||
+ | |||
mount /dvd | mount /dvd | ||
./ivtvfwextract.pl /dvd | ./ivtvfwextract.pl /dvd |
Version vom 27. Juni 2004, 17:14 Uhr
Inhaltsverzeichnis |
a) Analog-TV mit einer pvr 250/350
0) benoetigt: pvr250(ohne video-out, FF Karte zus. nötig)/pvr350(mit video-out) compiler, perl, wget
Die Methode hier ist ganz sicher nicht fehlerlos! Und auch nicht unbedingt für absolute linux-Anfänger geeignet.
Was hier so glatt aussieht hat jede Menge Stolpersteine. Aber vielleicht ist der eine oder andre nützliche Tip mit bei.
1) download der sources
mkdir ivtv_install && cd ivtv_install
wget http://cesnet.dl.sourceforge.net/sourceforge/ivtv/ivtv-0.1.9.tar.gz
wget http://heanet.dl.sourceforge.net/sourceforge/ivtv/Video-Frequencies-0.03.tar.gz
wget http://search.cpan.org/CPAN/authors/id/W/WA/WADG/Config-IniFiles-2.38.tar.gz
wget http://search.cpan.org/CPAN/authors/id/N/NI/NI-S/Tk-804.027.tar.gz
2) den ivtv Treiber installieren tar -xzf ivtv-0.1.9.tar.gz
cd ivtv/utils
- mounten des cdrom und extrahieren der Firmware von der Windows Treiber cd,
- u.U. muss hier der komplette Pfad zur exe angeben werden
mount /dvd ./ivtvfwextract.pl /dvd cd ..
- den Patch aus dem vdr einspielen. vorher mit tar xfz vdr-1.3.11.tar.bz2 auspacken
patch -p2 < ../vdr-1.3.11/PLUGINS/src/analogtv/patches/ivtv-0.1.9.diff cd driver cp ../utils/videodev2.h . make make install cd ../utils make make install cd..
- wir erstellen mit einem editor ein script namens "insmod.sh":
- nach erstellen bitte unbedingt "chmod +x insmod.sh" ausführen
===================================================
- /bin/bash
- ______link to ivtv-0.1.9______________________
IVTV_DIR="/usr/src/ivtv_install/ivtv/driver"
- ______________________________________________
I2C_DRIVERS="i2c-core i2c-algo-bit" IVTV_UNLOAD_DRIVERS="tveeprom ivtv saa7115 msp3400 tuner videodev \ i2c-algo-bit i2c-core" case "$1" in ivtv_start) echo loading ivtv driver cd $IVTV_DIR for DRIVER in $I2C_DRIVERS ; do modprobe $DRIVER done modprobe videodev modprobe tuner type=29 pal=1 insmod msp3400.o once=1 simple=1 insmod saa7115.o insmod ivtv.o video_nr=0 mpg_buffers=100 insmod tveeprom.o
ivtv_stop) echo unloading ivtv driver for DRIVER in $IVTV_UNLOAD_DRIVERS ; do rmmod $DRIVER done
- )
echo usage: $0 [ivtv_start/ivtv_stop] exit 1
esac
===================================================
chmod +x insmod.sh
- jetzt laden wir den Treiber doch mal und gucken was rauskommt:
./insmod.sh ivtv_start
- und jetzt gucken wir mal was der kernel dazu sagt:
dmesg .. tvee: tuner=LG TP18PSB11D (idx=48, type=29) ..
- aha, wir müssen also den treiber tuner mit type=29 laden!
- Dann entweder mit der 29 in die /etc/modules oder in das script da oben.
- also:
./insmod.sh ivtv_stop
- das script für den korrekten tuner modifizieren, dann
./insmod.sh ivtv_start
- okay, der Treiber sollte jetzt korrekt geladen sein.
cd ..
3) wir installieren etwas Zubehör: tar -xzf Video-Frequencies-0.03 cd Video-Frequencies-0.03 perl Makefile.PL make make install cd ..
tar -xzf Video-ivtv-0.12.tar.gz cd Video-ivtv-0.12 perl Makefile.PL make make install cd ..
tar -xzf Config-IniFiles-2.38.tar.gz cd Config-IniFiles-2.38 perl Makefile.PL make make install cd ..
tar -xzf Tk-804.027.tar.gz cd Tk-804.027 perl Makefile.PL make make install cd ..
- okay. wir haben alles und könnten ja mal testen.
4) der erste Test:
- wir stellen den Tuner auf PAL und stellen als Videosource den Tuner "Tuner0" ein:
test_ioctl -u 0xff -p4
- und gucken mal etwas fern. :o))
- ( hierzu muß aber der dvb-treiber entladen sein. )
mplayer /dev/video0
- hier sollte ein Bildrauschen zu sehen sein.
- aber wer will schon Rauschen? Also: Sender tunen!
- in einer andren shell:
cd ivtv/utils
- falls du unter X arbeitest:
./ptune-ui.pl
- oder auch ohne X:
./ptune.pl --frequency=XXXXXX
- für die xx'se setzt man eine bekannte Frequenz ein, z.B. 133250
- okay, der Treiber geht, also eintragen:
- in die /etc/modules.conf:
- WinTV PVR 250/350
alias char-major-81 videodev alias char-major-81-0 ivtv options ivtv ivtv_debug=1 mpg_buffers=90 options tuner type=29 options msp3400 once=1 simple=1 add below ivtv msp3400 saa7115 tuner
5) der vdr mit analogtv
- hier am Beispiel für einen vdr-1.3.11 und vdr-analogtv-0.9.33
- downloaden:
- vdr-1.3.11.tar.bz2
- vdr-analogtv-0.9.33.tar.bz2
- und auspacken:
tar xfj vdr-1.3.11.tar.bz2 tar xfj vdr-analogtv-0.9.33.tar.bz2 mv analogtv-0.9.33 vdr-1.3.11/PLUGINS/src cd vdr-1.3.11 patch -p1 < PLUGINS/src/analogtv/patches/vdr-1.3.0.patch
- hier noch falls nötig libdvb-0.5.4 installieren,
- siehe README im analogtv-Plugin
make REMOTE=LIRC cd PLUGINS/src ln -s analogtv-0.9.33 analogtv cd ../.. make plugins
- okay, der erste Start mit analogtv
- aber erst mal erweitern wir die channels.conf um einen neuen Eintrag:
wirbels_test:133250:C0D45B6:C:0:1:2:0:A0:0:0:0:0
- und jetzt!
./vdr -c /etc/vdr -v /video0 -Panalogtv
- logisch, beim zappen auf diesen Kanal gibt nur Rauschen. War ja auch ne
- x-beliebige Frequenz! also: wir suchen Kanäle.
6) Kanalsuche nach Dumpfbackenart. Einfach alles stur absuchen.
- Wir erstellen mal wieder ein script. (jaaa, ich weiß!)
- nennen wir es einfach tune.sh
================================================
- /bin/bash
- tune.sh
TUNE=/usr/src/Treiber/ivtv/utils/ptune.pl
let "F=48" while [ $F -lt 84 ] ; do let "FREQ=$F*1000 + 250" $TUNE "--frequency=$FREQ" echo "Channel name or return for skipping. Your input?" read S if [ "$S" != "" ] ; then echo "$S:$FREQ:C0D45B6:C:0:1:2:0:A0:0:0:0:0" >> channels.conf fi let "F=$F+7" done
let "F=105" while [ $F -lt 169 ] ; do let "FREQ=$F*1000 + 250" $TUNE "--frequency=$FREQ" echo "Channel name or return for skipping. Your input?" read S if [ "$S" != "" ] ; then echo "$S:$FREQ:C0D45B6:C:0:1:2:0:A0:0:0:0:0" >> channels.conf fi let "F=$F+7" done
let "F=175" while [ $F -lt 295 ] ; do let "FREQ=$F*1000 + 250" $TUNE "--frequency=$FREQ" echo "Channel name or return for skipping. Your input?" read S if [ "$S" != "" ] ; then echo "$S:$FREQ:C0D45B6:C:0:1:2:0:A0:0:0:0:0" >> channels.conf fi let "F=$F+7" done let "F=303" while [ $F -lt 860 ] ; do let "FREQ=$F*1000 + 250" $TUNE "--frequency=$FREQ" echo "Channel name or return for skipping. Your input?" read S if [ "$S" != "" ] ; then echo "$S:$FREQ:C0D45B6:C:0:1:2:0:A0:0:0:0:0" >> channels.conf fi let "F=$F+8" done
================================================
- Das Prinzip ist ebenso stumpf wie simpel.
- Den vdr auf eden Kanal "wirbels_test" stellen
- (siehe oben!) und dann das script ./tune.sh n einer zweiten shell starten.
- Das script tunt auf eine neue Frequenz, fragt dann nach dem Tunen
- "Channel name or return for skipping. Your input?"
- <Enter>, wenn kein Kanal gefunden wurde, ansonsten KANALNAME<Enter> tippen.
- Das ganze dann rund 80 mal..
- uffz. Eben die Holzfällermethode.
- Zum Schluß muß zu jedem Kanal noch die passende ID aus der Channelmap.h gesucht werden.
- Wie, verrät die README von analogtv.
- Und zum Schluß: alles an deine channels.conf anfügen
- Das sieht dann etwa so aus:
eine Beispiel channels.conf
- analog TV
ard:210250:C0D45B6:C:0:1:2:0:A0:28106:0:0:0 zdf:196250:C0D45B6:C:0:1:2:0:A0:28006:0:0:0 sat1:203250:C0D45B6:C:0:1:2:0:A0:46:0:0:0
- Anm.: Die Zahlen 46, 28006, 28106 stammen aus der channelmap.h
- des analogtv-Plugins und müssen per Hand eingetragen werden!
7) optional: epg für die analogen Kanäle 7.0 benötigt
- tvmovie2vdr-0.1.3.tar.bz2, perl
7.1) ein paar perl-Module nach der README des tvmovie2vdr installieren:
tar xfj tvmovie2vdr-0.1.3.tar.bz2 cd tvmovie2vdr-0.1.3 perl -MCPAN -e shell;
- (evtl. muss beim ersten Aufruf einiges konfiguriert werden,
- irgendwann hat man dan den cpan-prompt)
- anschließend:
install Date::Manip install HTML::Entities install LWP::UserAgent install Compress::Zlib quit
- die Datei config.pl entsprechend deinen
- Pfaden editieren:
$channelsfile = "/etc/vdr/channels.conf"; $epgfile = "/video0/epg.data";
7.2) die channels.pl editieren. Der schwierigste Teil.
- Hier hilft und das script printchannels.pl aus dem Ordner contrib.
cd contrib
- Allerdings gibt das script für analogtv falsche Frequenzen an,
- deswegen editieren wir es vorher:
if ( $source eq 'T' ) { $frequency=substr($frequency, 0, 3); } if ( $source eq 'C' ) { $frequency=substr($frequency, 0, 3); } $data = $nid>0 ? $tid : $frequency;
- Auf diese Art und Weise gibt das script nur die ersten drei Stellen der
- Frequenz bei Kabel und analog aus. Nun rufen wir das script auf:
./printchannels.pl -c /etc/vdr/channels.conf
- Das script gibt folgendes aus:
ard C-0-210-28106 zdf C-0-196-28006 sat1 C-0-203-46
- Diese Angaben brauchen wir für die channels.pl:
@chan{"ard.de"} = ["C-0-210-28106" ,"3" ,"001" ,"37" ,"ARD" ,"71"]; @chan{"zdf.de"} = ["C-0-196-28006" ,"3" ,"002" ,"36" ,"ZDF" ,"37"]; @chan{"sat1.de"} = ["C-0-203-46" ,"3" ,"005" ,"38" ,"Sat1" ,"39"];
3) das script muß gestartet werden.
- zuerst mal von Hand.
./tvm2vdr.pl -v
- Nachdem das script durchgelaufen ist, haben wir im vdr den epg.
- (der vdr muß laufen während das script läuft!)
4) das script muß regelmäßig gestartet werden.
- Da bietet sich nun eure Phantasie an, ein cronjob wäre hier ideal.
- Google hilft euch dabei weiter.
wer's bis hierher geschafft hat, hat auf jeden Fall viel Arbeit und Nerven investiert. Hoffentlich mit Erfolg!
b) Analog-TV mit einer analogen Fernsehkarte ohne Hardware-Encoder
0) noch zu vervollständigen