Analog-TV

Aus VDR Wiki
Wechseln zu: Navigation, Suche

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

===================================================
  1. /bin/bash
  1. ______link to ivtv-0.1.9______________________

IVTV_DIR="/usr/src/ivtv_install/ivtv/driver"

  1. ______________________________________________

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

  1. jetzt laden wir den Treiber doch mal und gucken was rauskommt:

./insmod.sh ivtv_start

  1. und jetzt gucken wir mal was der kernel dazu sagt:

dmesg .. tvee: tuner=LG TP18PSB11D (idx=48, type=29) ..

  1. aha, wir müssen also den treiber tuner mit type=29 laden!
  2. Dann entweder mit der 29 in die /etc/modules oder in das script da oben.
  3. also:

./insmod.sh ivtv_stop

  1. das script für den korrekten tuner modifizieren, dann

./insmod.sh ivtv_start

  1. 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 ..

  1. okay. wir haben alles und könnten ja mal testen.

4) der erste Test:

  1. wir stellen den Tuner auf PAL und stellen als Videosource den Tuner "Tuner0" ein:

test_ioctl -u 0xff -p4

  1. und gucken mal etwas fern. :o))
  2. ( hierzu muß aber der dvb-treiber entladen sein. )

mplayer /dev/video0

  1. hier sollte ein Bildrauschen zu sehen sein.
  2. aber wer will schon Rauschen? Also: Sender tunen!
  3. in einer andren shell:

cd ivtv/utils

  1. falls du unter X arbeitest:

./ptune-ui.pl

  1. oder auch ohne X:

./ptune.pl --frequency=XXXXXX

  1. für die xx'se setzt man eine bekannte Frequenz ein, z.B. 133250
  1. okay, der Treiber geht, also eintragen:
  2. in die /etc/modules.conf:
  1. 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

  1. hier am Beispiel für einen vdr-1.3.11 und vdr-analogtv-0.9.33
  2. downloaden:
  3. vdr-1.3.11.tar.bz2
  4. vdr-analogtv-0.9.33.tar.bz2
  5. 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

  1. hier noch falls nötig libdvb-0.5.4 installieren,
  2. siehe README im analogtv-Plugin

make REMOTE=LIRC cd PLUGINS/src ln -s analogtv-0.9.33 analogtv cd ../.. make plugins

  1. okay, der erste Start mit analogtv
  2. 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

  1. und jetzt!

./vdr -c /etc/vdr -v /video0 -Panalogtv

  1. logisch, beim zappen auf diesen Kanal gibt nur Rauschen. War ja auch ne
  2. x-beliebige Frequenz! also: wir suchen Kanäle.

6) Kanalsuche nach Dumpfbackenart. Einfach alles stur absuchen.

  1. Wir erstellen mal wieder ein script. (jaaa, ich weiß!)
  2. nennen wir es einfach tune.sh
================================================
  1. /bin/bash
  2. 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

================================================
  1. Das Prinzip ist ebenso stumpf wie simpel.
  2. Den vdr auf eden Kanal "wirbels_test" stellen
  3. (siehe oben!) und dann das script ./tune.sh n einer zweiten shell starten.
  4. Das script tunt auf eine neue Frequenz, fragt dann nach dem Tunen
  5. "Channel name or return for skipping. Your input?"
  6. <Enter>, wenn kein Kanal gefunden wurde, ansonsten KANALNAME<Enter> tippen.
  7. Das ganze dann rund 80 mal..
  8. uffz. Eben die Holzfällermethode.
  9. Zum Schluß muß zu jedem Kanal noch die passende ID aus der Channelmap.h gesucht werden.
  10. Wie, verrät die README von analogtv.
  11. Und zum Schluß: alles an deine channels.conf anfügen
  1. 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

  1. Anm.: Die Zahlen 46, 28006, 28106 stammen aus der channelmap.h
  2. des analogtv-Plugins und müssen per Hand eingetragen werden!

7) optional: epg für die analogen Kanäle 7.0 benötigt

  1. 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;

  1. (evtl. muss beim ersten Aufruf einiges konfiguriert werden,
  2. irgendwann hat man dan den cpan-prompt)
  3. anschließend:

install Date::Manip install HTML::Entities install LWP::UserAgent install Compress::Zlib quit

  1. die Datei config.pl entsprechend deinen
  2. Pfaden editieren:

$channelsfile = "/etc/vdr/channels.conf"; $epgfile = "/video0/epg.data";

7.2) die channels.pl editieren. Der schwierigste Teil.

  1. Hier hilft und das script printchannels.pl aus dem Ordner contrib.

cd contrib

  1. Allerdings gibt das script für analogtv falsche Frequenzen an,
  2. 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;

  1. Auf diese Art und Weise gibt das script nur die ersten drei Stellen der
  2. Frequenz bei Kabel und analog aus. Nun rufen wir das script auf:

./printchannels.pl -c /etc/vdr/channels.conf

  1. Das script gibt folgendes aus:

ard C-0-210-28106 zdf C-0-196-28006 sat1 C-0-203-46

  1. 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.

  1. zuerst mal von Hand.

./tvm2vdr.pl -v

  1. Nachdem das script durchgelaufen ist, haben wir im vdr den epg.
  2. (der vdr muß laufen während das script läuft!)

4) das script muß regelmäßig gestartet werden.

  1. Da bietet sich nun eure Phantasie an, ein cronjob wäre hier ideal.
  2. 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