DVB-T mit dem Rok DVB-T 1 Receiver USB Stick Marcus Lange (marcus (at) lug-norderstedt.de) v1.2 01. Juli 2007 Befehlszeilen und Ausgaben mit anderer Schriftart v1.1 14. April 2007 Schreibfehler korrigiert, in Deutsch übersetzt v1.0 02. März 2007 Initiale Dokumentation Wie bekommt man den Rok DVB-T 1 Receiver USB Stick unter Linux zum Laufen Inhaltsverzeichnis 1 Über diese Dokumentation 2 2 Vorbereitungen 2 2.1 Was wird hier beschrieben? 2 2.2 Was wird nicht beschieben? 2 3 Benötigte Komponenten 2 3.1 Hardware 2 3.2 Software 3 4 Installieren des DVB-T Sticks 3 4.1 Wird er erkannt? 3 4.2 Installieren der Firmware 5 4.3 Laden der Kernel Modul 5 4.4 Mache es permanent 6 5 Erstellen der Fernsehkanäle 6 5.1 Welche Sender können empfangen werden? 6 5.2 Die vordefinierten Kanäle funktionieren nicht 6 5.3 Erstellen einer eigenen Kanalliste 7 6 Funktioniert es bereits? 8 7 Problemlösungen 8 7.1 Welche Befehle/Dateien sind hilfreich, um Dinge zu kontrollieren? 8 7.2 Der Stick ist angeschlossen, aber die LED leuchtet nicht Orange 9 7.3 Der Stick wurde erkannt (orange LED), aber Mplayer zeigt schwarze Fenster 9 7.4 Mplayer sagt, daß auf die DVB-T Geräte nicht zugegriffen werden kann 9 7.5 Die Gerätedateien existieren nicht. Wie können sie erstellt werden? 10 7.6 Wie wird man die typischen MPEG Artefakte und/oder Tonunterbrechnungen los? 10 7.7 Die Qualität des Fernsehbilds/-tons is nicht gut. Was kann gemacht werden? 11 7.8 Welche Videoplayer können verwendet werden? 11 8 Danksagung 12 9 Links 12 10 Todo's 12 1 Über diese Dokumentation Diese Dokumentation beschreibt wie DVB-T mit dem Rok DVB-T 1 Receiver USB Stick funktioniert. Die Installation und Dokumentation wurde mit Fedora Core 6 gemacht. Kommandozeilen-Befehle, die mit einem $ (Dollar) anfangen, können als normaler Benutzer aufgeführt werden und die mit einem # (?) nur als Root. Die meisten Zeilen haben einen Kommentar am Ende, der beschreibt was der Befehl macht (fängt auch mit einem # an). Diese dürfen natürlich nicht eingegeben werden. 2 Vorbereitungen 2.1 Was wird hier beschrieben? - benötigte Hardware/Software/Dateien - Installation der Hardware - Installation der Software - Erstellen der Fernsehkanäle - einfache Funktionstests - Problemlösungen 2.2 Was wird nicht beschieben? Es wird vorausgesetzt, daß die generelle Audio/Video-Konfiguration schon funktioniert oder anderweitig vorgenommen wird. 3 Benötigte Komponenten 3.1 Hardware - einen USB 2.0 Steckplatz # lt. Handbuch geht auch USB 1.1, das wurde aber nicht getestet - Rok DVB-T 1 Receiver USB Adapter # z. B. bei Amazon für ~50 EUR (Stand: August 2006) 3.2 Software Kontrollieren, ob der Linux Kernel mit den folgenden Optionen kompiliert wurde (siehe z. B. /boot/config-2.6.19-1.2911.fc6): - DVB-T Support # CONFIG_DVB und die Unteroptionen - Video4Linux Support # CONFIG_VIDEO_V4L1 und die Unteroptionen - Support für das entsprechendes USB-Gerät # CONFIG_DVB_USB_DTT200U Hinweis: Der Standardkernel für FC6 unterstützt all diese Optionen bereits, ein Neukompilieren ist also nicht nötig. - Firmware-Datei (aus dem Internet) # der "Treiber" für das Gerät - DVB-T Tools (von LinuxTV.org) # zur Funktionskontrolle und zum Scannen der Sendefrequenzen - DVB-T scanaid (von Johannes-Bauer.com) # zum Erstellen der Liste Fernsehkanäle 4 Installieren des DVB-T Sticks 4.1 Wird er erkannt? Nach dem Einstecken des Sticks kann mit den folgenden Befehlen und Beispielausgaben kontrolliert werden, ob er zumindest rudimentär erkannt wurde: # lsusb -v # listet alle angeschlossenen USB-Geräte mit Details auf Bus 002 Device 003: ID 14aa:0226 AVerMedia (again) or C&E Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 2.00 bDeviceClass 0 (Defined at Interface level) bDeviceSubClass 0 bDeviceProtocol 0 bMaxPacketSize0 64 idVendor 0x14aa AVerMedia (again) or C&E idProduct 0x0226 bcdDevice 5.21 iManufacturer 1 Digital TV Receiver iProduct 2 Digital TV Receiver iSerial 3 20060503 Wichtig hier sind die Geräte-ID (14aa:0226), der Name des eigentlichen Herstellers (AVerMedia (again) or C&E ) und der verwendete USB 2.0 Steckplatz. # dmesg # listet alle Systemereignisse auf Feb 18 13:08:40 fc6 kernel: usb 2-1: new high speed USB device using ehci_hcd and address 2 Feb 18 13:08:40 fc6 kernel: usb 2-1: configuration #1 chosen from 1 choice Feb 18 13:08:41 fc6 kernel: dvb-usb: found a 'WideView WT-220U PenType Receiver (Typhoon/Freecom)' in cold state, will try to load a firmware Feb 18 13:08:41 fc6 firmware_helper[1357]: Loading of /lib/firmware/dvb-usb-wt220u-fc03.fw for usb driver failed: No such file or directory Feb 18 13:08:41 fc6 kernel: dvb-usb: did not find the firmware file. (dvb-usb-wt220u-fc03.fw) Please see linux/Documentation/dvb/ for more details on firmware-problems. (-2) Feb 18 13:08:41 fc6 kernel: usbcore: registered new interface driver dvb_usb_dtt200u Feb 18 13:11:41 fc6 kernel: usb 2-1: USB disconnect, address 2 Hier bedeutet die Ausgabe, daß der Stick zwar gesehen wird (cold state), aber noch eine Firmware fehlt. Schön, daß der erwartete Dateiname und -pfad schon angegeben wird. 4.2 Installieren der Firmware Der Stick benutzt eine ganz bestimmte Firmware. Bitte nicht die Frmware-Dateien von "http://www.linuxtv.org/downloads/firmware/dvb-usb-wt220u-01.fw" benutzen. Die Dateinamen können ähnlich lauten, das funktioniert so aber nicht; auch nicht wenn die Datei korrekt umbenannt wird. Daher bitte in Google nachschauen, wo die richtige Firmware zu finden ist (z. B. http://home.arcor.de/efocht/dvb-usb-wt220u-fc03.fw). Öffne ein Terminalfenster und kopiere die Datei in den entsprechenden Pfad mit dem korrekten Dateinamen: # cp /tmp/dvb-wt220u-fc03.fw /lib/firmware/dvb-usb-wt220u-fc03.fw Nun bitte den USB-Stick nochmals reinstecken, ein paar Sekunden warten und nochmals "dmesg" eingegeben. Die Ausgabe sollte jetzt ähnlich wie folgendes sein: Feb 18 16:01:31 fc6 kernel: usb 2-1: new high speed USB device using ehci_hcd and address 8 Feb 18 16:01:31 fc6 kernel: usb 2-1: configuration #1 chosen from 1 choice Feb 18 16:01:31 fc6 kernel: dvb-usb: found a 'WideView WT-220U PenType Receiver (Typhoon/Freecom)' in warm state. Feb 18 16:01:31 fc6 kernel: dvb-usb: will use the device's hardware PID filter (table count: 15). Feb 18 16:01:31 fc6 kernel: DVB: registering new adapter (WideView WT-220U PenType Receiver (Typhoon/Freecom)). Feb 18 16:01:31 fc6 kernel: DVB: registering frontend 0 (WideView USB DVB-T)... Feb 18 16:01:31 fc6 kernel: input: IR-receiver inside an USB DVB receiver as /class/input/input3 Feb 18 16:01:31 fc6 kernel: dvb-usb: schedule remote query interval to 300 msecs. Feb 18 16:01:31 fc6 kernel: dvb-usb: WideView WT-220U PenType Receiver (Typhoon/Freecom) successfully initialized and connected. Feb 18 16:01:33 fc6 kernel: dvb-usb: recv bulk message failed: -110 Feb 18 16:01:41 fc6 kernel: drivers/usb/input/hid-core.c: timeout initializing reports Feb 18 16:01:41 fc6 kernel: input: Digital TV Receiver Digital TV Receiver as /class/input/input4 Feb 18 16:01:41 fc6 kernel: input: USB HID v1.10 Keyboard [Digital TV Receiver Digital TV Receiver] on usb-0000:00:0b.1-1 Letztlich wurde das Gerät erfolgreich initialisiert und die orange LED sollte leuchten. 4.3 Laden der Kernel Modul Jetzt muß das benötigte Kernel Modul geladen werden, damit die entsprechenden Gerätedateien erstellt und mit der Firmware "gesprochen" werden kann: # modprobe dvb_usb_dtt200u Die angelegten Gerätedateien sind folgende: /dev/dvb/adapter0/demux0 /dev/dvb/adapter0/dvr0 /dev/dvb/adapter0/frontend0 /dev/dvb/adapter0/net0 4.4 Mache es permanent Um dies automatisch machen zu lassen, wenn Linux startet, muß dem Kernel mitgeteilt werden, das entsprechende Modul zu laden. Die folgende Zeile muß in die Datei "etc/sysconfig/kernel" eingefügt werden. Falls sie nicht existirt, einfach neu anlegen (als Root): # List here all kernel modules that should be loaded at startup MODULES_LOADED_ON_BOOT="dvb_usb_dtt200u" 5 Erstellen der Fernsehkanäle 5.1 Welche Sender können empfangen werden? Der einfachste Weg ist, eine vorhandene Liste zu verwenden, um die empfangbaren Sender zu bekommen, aber das hängt davon ab, wo man lebt. Wenn man in Deutschland, Österreich, Schweiz oder Luxemburg lebt, könnte diese Webseite hilfreich sein: http://www.vdr-wiki.de/wiki/index.php/DVB-T_channels.conf Kopiere den passenden Inhalt und füge ihn in einen Texteditor ein. Speichere die Datei im ASCII-Format als "channels.conf" in Dein Home-Verzeichnis. 5.2 Die vordefinierten Kanäle funktionieren nicht Falls die Kanäle von der Webseite nicht funktionieren, muß eine eigene Liste für den jeweiligen Sendebereich erstellt werden. Zuerst muß dafür ein kleines Tool heruntergeladen werden, um eine Scan-Liste mit Frequenzen zu erstellen. Die Software bekommt man hier: http://www.linuxtv.org/downloads/linuxtv-dvb-apps-1.1.1.tar.gz Speichere die Datei im bevorzugten Pfad zum Kompilieren (z. B., /usr/src/dvb). $ cp /tmp/linuxtv-dvb-apps-1.1.1.tar.gz /usr/src/dvb $ tar -xvzf linuxtv-dvb-apps-1.1.1.tar.gz # Auspacken und dekomprimieren "in einem" $ cd linuxtv-dvb-apps-1.1.1 $ make # auch mit den Fehlermeldungen sollte die Software erfolgreich kompiliert worden sein Nun müssen die empfangbaren Fernsehkanäle gescannt werden. Das Tools benötigt bereits eine Liste mit Frequenzen. Diese können mit einer Scriptdatei stellt werden, die man hier erhält: http://www.johannes-bauer.com/dvbt/dvbt-scanaid-0.03.tar.bz2 Verschiebe die Datei in das Build-Verzeichnis und führe das Script aus: $ mv /tmp/dvbt-scanaid-0.03.tar.bz2 /usr/src/dvb/linuxtv-dvb-apps-1.1.1/util/scan $ tar -xvjf dvbt-scanaid-0.03.tar.bz2 # Auspacken und dekomprimieren "in einem" $ cd dvbt-scanaid-0.03 $ ./Create_Scanning_Table # starten des Scripts Die folgenden Fragen müssen beantwortet werden, um alle möglichen Bandbreitenkominationen, aber nur bestimmte Kanäle zu scannen, die im jeweiligen Sendebereich liegen: Do you want to try every possible bandwidth/FEC combination possible? [n] y Do you want all channels to be scanned? [n] n Um ganz sicherzugehen, auch wirklich alle möglich Sender zu bekommen, sollte man alle Kanäle scannen lassen; auch wenn das einige Minuten dauert: Do you want to try every possible bandwidth/FEC combination possible? [n] y Do you want all channels to be scanned? [n] y Am Ende werden die gefundenen Frequenzen in der Datei "Scanlist.txt" gespeichert. 5.3 Erstellen einer eigenen Kanalliste Um die verfügbaren Frequenzen in Fernsehkanäle zu verwandeln, muß das "scan" Tool aus der "linuxtv-dvb-apps" Suite wie folgt benutzt werden: $ ./scan dvbt-scanaid-0.03/Scanlist.txt > channels.conf Alle gelisteten Frequenzen aus der "Scanlist.txt" werden nach Fernsehkanälen gescannt. Die gefundenen kann man mit Namen im Terminalfenster sehen. Wenn der Scan fertig ist, ist die Datei fertig zum Benutzen. Welche Fernsehsender gibt es denn jetzt? Einfach mal in die Datei schauen: $ less channels.conf 6 Funktioniert es bereits? Jetzt kann ein erster Fernseh-Test gemacht werden, z. B. mit Mplayer. Falls er noch nicht installiert ist, kann er wie folgt installiert werden: # yum install mplayer Anschließend starten, um zu sehen, ob der Mplayer überhaupt schon läuft: $ mplayer Nun verschiebe die erstellte Datei "channels.conf" in das Verzeichnis für den Mplayer: $ mv channels.conf ~/.mplayer Starte den Mplayer mit einem Fernsehsender: $ mplayer dvb://RTL Wenn jetzt ein Fernsehbild erscheint und auch Ton zu hören ist, sollte die LED auch grün leuchten. Es ist vollbracht. Glückwunsch und willkommen bei TV@Linux. Falls die Audio-/Video-Qualität nicht gut ist oder es überhaupt nicht klappt, nicht verzweifeln. Im Folgenden gibt es Tips, um einige Probleme zu lösen. 7 Problemlösungen 7.1 Welche Befehle/Dateien sind hilfreich, um Dinge zu kontrollieren? Die Folgenden sind hilfreich für jedes Trouble-shooting: - /var/log/messages # Log-Datei für alle Systemereignis - dmesg # für Systemereignisse seit dem letzten Start - lsmod # listet alle geladenen Kernel Module - lsusb [-v] # listet alle angeschlossenen USB-Geräte 7.2 Der Stick ist angeschlossen, aber die LED leuchtet nicht Orange Bitte in die Ausgabe von "dmesg" schauen. Falls folgendes auftaucht, wurde der USB-Stick gesehen aber nicht richtig erkannt. Gründe dafür können sein: Keine Firmware gefunden, falsche Firmware. Bitte sicherstellen, daß die korrekte Datei im angegebenen Pfad ist. Feb 18 13:08:40 fc6 kernel: usb 2-1: new high speed USB device using ehci_hcd and address 2 Feb 18 13:08:40 fc6 kernel: usb 2-1: configuration #1 chosen from 1 choice Feb 18 13:08:41 fc6 kernel: dvb-usb: found a 'WideView WT-220U PenType Receiver (Typhoon/Freecom)' in cold state, will try to load a firmware Feb 18 13:08:41 fc6 firmware_helper[1357]: Loading of /lib/firmware/dvb-usb-wt220u-fc03.fw for usb driver failed: No such file or directory Feb 18 13:08:41 fc6 kernel: dvb-usb: did not find the firmware file. (dvb-usb-wt220u-fc03.fw) Please see linux/Documentation/dvb/ for more details on firmware-problems. (-2) Feb 18 13:08:41 fc6 kernel: usbcore: registered new interface driver dvb_usb_dtt200u Feb 18 13:11:41 fc6 kernel: usb 2-1: USB disconnect, address 2 7.3 Der Stick wurde erkannt (orange LED), aber Mplayer zeigt schwarze Fenster Bitte sicherstellen, daß Mplayer auf die Liste mit den empfangbaren Fernsehsendern zugreifen kann. Normalerweise ist es "~/.mplayer.channels.conf". Auch mal die Zugriffsrechte kontrollieren: $ ls -la ~/.mplayer Man kann Mplayer auf der Kommandozeile starten, um mehr Informationen über das Problem zu bekommen: $ mplayer dvb://RTL 7.4 Mplayer sagt, daß auf die DVB-T Geräte nicht zugegriffen werden kann Bitte sicherstellen, daß auch der Benutzer auf die Gerätedateien für den DVB-T Stick zugreiffen kann, der MPlayer startet. Also kontrollieren, ob der normale Benutzer auf die Dateien zugreifen kann, und nicht nur Root: $ ls -la /dev/dvb/adapter0/ # zeigt alle Details des Verzeichnisses drwxr-xr-x 2 foo root 120 Feb 18 23:22 . drwxr-xr-x 3 root root 60 Feb 17 23:22 .. crw------- 1 foo root 212, 4 Feb 18 23:22 demux0 crw------- 1 foo root 212, 5 Feb 18 23:22 dvr0 crw------- 1 foo root 212, 3 Feb 18 23:22 frontend0 crw------- 1 foo root 212, 7 Feb 18 23:22 net0 Um den Eigentümer zu ändern bitte folgenden Befehl aufrufen: # chown -R foo /dev/dvb # foo ist der normale Benutzer 7.5 Die Gerätedateien existieren nicht. Wie können sie erstellt werden? Die Gerätedateien werden automatisch erstellt, wenn gewisse Bedingungen erfüllt sind (Firmware wurde geladen, Stick wurde erkannt, Kernel Modul wurde geladen). Wichtig: Daher ist es nicht ratsam, diese manuell anzulegen, kann aber dennoch bei weiteren Problemanalysen hilfreich sein: # mkdir -P /dev/dvb/adapter0 # erstellt die Verzeichnishierarchie für den Stick # cd /dev/dvb/adapter0 # wechselt in das neue Verzeichnis # mknod demux0 c 212 4 # erstellt die Zeichendateien mit Dateiename und Major-/Minor-Nummern # mknod dvr0 c 212 5 # mknod frontend0 c 212 3 # mknod net0 c 212 7 # chown -R foo /dev/dvb # ändert den Eigentümer der Verzeichnisse und Dateien auf den normalen Benutzer Nun noch kontrollieren, daß die Dateien jetzt stimmen: # ls -la /dev/dvb/* # zeigt alle Details des Verzeichnisses 7.6 Wie wird man die typischen MPEG Artefakte und/oder Tonunterbrechnungen los? Der Schlüsselpunkt ist den besten Standort für die DVB-T Antenne zu finden. Oder eine bessere/größere, falls es nur die mitgelieferte Stabantenne ist. Im Internet ist auch ein Tool verfügbar, das die Sendequalität der empfangenen Fernsehsender misst: http://www.johannes-bauer.com/dvbt/dvbt-signalaid-0.01.tar.bz2 Hinweis: Die "gnuplot" und "dvbsnoop" Pakete müssen verfügbar sein, daher vorher installieren falls nötig: yum install gnuplot http://dvbsnoop.sourceforge.net/ Die grafische Ausgabe kann wie folgt gestartet werden: $ ./Start_Analysis & Der Plot wird angezeigt und läuft. In einem anderen Termainlfenster kann nun der Mplayer mit einem Fernsehkanal gestartet werden: $ mplayer dvb://RTL Beobachte die laufende SNR Linie (Signal Noise Ratio). Je höher die SNR Zahl, desto besser wird der empfangene Kanal dargestellt. Dies kann mit allen Fernsehkanälen gemacht werden, dessen Qualität man überprüfen möchte. Um die Ausgabe zu beenden, einfach folgenden Befehl eingeben: $ ./Quit_Analysis 7.7 Die Qualität des Fernsehbilds/-tons is nicht gut. Was kann gemacht werden? Zuerst sollte geprüft werden, ob die allgemeine Audio/Video-Konfiguration in Ordnung ist. Dies kann gemacht werden mit anderen Videos (AVI, MPG, DVDs) und Sounddateien (wav, mp3, ogg). Falls nur der Mplayer nicht optimal läuft, kann es von der verwendeten Audio/Video-Hardware abhängen. Daher sollte auch die passenden Audio/Video Codecs und Formate verwendet werden. Die man pages von Mplayer sind zwar sehr umfangreich, man kommt aber nicht drumherum, wenn es gilt, die besten Optionen für die Hardware herauszukitzeln. Hier ist meine derzeitige Kommandozeile für Fernsehgucken mit einigen Erklärungen: mplayer -cache 4096 -vo gl2 -ni -ao oss -fs "dvb://RTL" cache 4096 # vor dem Starten einige Byte zwischenspeichern, bevor Bild undTon synchronisiert werden vo gl2 # benutze die Videooption für OpenGL 2.0 ao oss # benutze die Audiooption für OSS fs # im Vollbild-Modus starten dvb://RTL # Fernsehsender wie in der "channels.conf" benannt 7.8 Welche Videoplayer können verwendet werden? Heute gibt es eine Vielzahl von kleinen und größen Programmen zum Fernsehgucken. Am Besten mal in folgender Referenzliste nachschauen: http://www.linuxtv.org/wiki/index.php/Software 8 Danksagung Mein Dank geht an die Leute und Webseiten, ohne die es mir nicht möglich wäre, Fernsehen unter Linux zu schauen: - Unterstützer von LinuxTV.org - Erich Focht für die Firmware-Datei - Johannes Bauer für die kleinen DVB-T Tools - Unterstützer von Linuxwiki.de - Unterstützer von VDR-Wiki.de 9 Links http://www.linuxtv.org http://home.arcor.de/efocht/dvb-usb-wt220u-fc03.fw http://www.johannes-bauer.com http://linuxwiki.de/Freecom_DVB-T_USB_Stick http://www.vdr-wiki.de/wiki/index.php/DVB-T_channels.conf 10 Todo's Kanalwechsel ohne den Videoplayer neu starten zu müssen Die mitgelieferte Fernbedienung einbinden