nasauber.de

Blog: Einträge 15.04.2011–25.06.2012

DVB-T in Konradsreuth – unter Linux

Halb Erfahrungsbericht, halb Howto – viel Spaß damit :-)

Hardware

Kürzlich habe ich mir einen DVB-T-USB-Stick zugelegt. Der sollte natürlich unter Linux laufen. linuxtv.org bietet einige Informationen rund um DVB-T unter Linux, unter anderem auch eine Übersicht unterstützter Geräte.

Zunächst hatte ich mich für einen Terratec Cinergy T Stick RC entschieden. Der wird laut der Tabelle unterstützt. Ausgepackt – geht nicht. Netterweise war der gekaufte Stick kein „Terratec Cinergy T Stick RC“, sondern ein „Terratec Cinergy T Stick RC Rev3“. Schaut genauso aus, heißt genauso, ist aber ein komplett anderes Gerät mit komplett anderer Hardware. Schönen Dank auch. Kann man nicht dem Ding einen anderen Namen verpassen?! Finger weg davon, läuft (noch?) nicht unter Linux.

Also zweiter Versuch: her mit einem PCTV NanoStick solo (vorher wohl „Pinnacle PCTV 73e“) – in der Hoffnung, es ist auch einer. Nach einiger Überzeugungsarbeit beim örtlichen Elektronikdiscounter durfte ich tatsächlich den Stick kurz an meinem Netbook anstecken, um die USB-ID auslesen zu können und somit einen weiteren Fehlkauf zu verhindern. lsusb zeigte ID 2013:0245 Unknown (Pinnacle?) PCTV 73ESE an – et voilà: Hardware mit Treiber im Mainline-Kernel. Nach der Installation der benötigten Firmware und dem Bauen der passenden Kernelmodule: angesteckt und geht.

PCTV NanoStick 73e SE solo PCTV NanoStick 73e SE solo

Sendestationen

In Konradsreuth (bzw. vermutlich im ganzen Landkreis Hof) kommen theoretisch drei Sender in Frage, die man evtl. empfangen könnte: der Sender Ochsenkopf, der Sender Schöneck und der Sender Sonneberg (vgl. http://dvb-t-bayern.de/ bzw. http://ueberallfernsehen.de/).

Ich bin mal davon ausgegangen, dass man den Sender Ochsenkopf hier am besten empfangen können müsste.

Antenne

Doppelquad-DVB-T-Antenne mit Reflektor Aus der Seminarzeit hatte meine Frau noch eine ziemlich teure aktive DVB-T-Antenne. Damit sollte man – so möchte man denken – die besten Ergebnisse erreichen.
Nach einigem Surfen im Internet habe ich Bauanleitungen für einfache und kostengünstige DVB-T-Antennen gefunden, unter anderem eine für eine Doppelquad-Antenne mit Reflektor. Was daran mein besonderes Interesse geweckt hat, war die Tatsache, dass die Antenne für einen bestimmten Frequenzbereich berechnet wird, nämlich für den, den man empfangen möchte. Leuchtet ein, dass das sinnvoll ist!

Also für ein paar Euro die Materialien im Baumarkt gekauft und das Ding gebaut – abgestimmt auf die Frequenzen, die der Sender Ochsenkopf sendet.

Empfang

Es hat sich herausgestellt, dass man in Konradsreuth – zumindest bei mir zu Hause – den Sender Ochsenkopf und den Sender Schöneck empfangen kann. Teilweise besser oder schlechter, aber man kann alles empfangen, was von dort gesendet wird.

Mit der kleinen Stabantenne, die bei dem DVB-T-Stick dabei war, war erwartungsgemäß überhaupt kein Empfang möglich. Auch nicht im Freien.

Höchst interessant ist die Tatsache, dass die selbstgebaute Antenne für ein paar Euro besser funktioniert, als die sündhaft teure aktive! Damit konnte ich nicht alle Frequenzen vom Sender Ochsenkopf empfangen (ausprobiert unterm Dachfenster!), mit der anderen aber schon (bei richtiger Polarisation – die Antenne muss hier senkrecht stehen, nicht waagerecht).
Also: lieber den Lötkolben auspacken, als unnötig Geld ausgeben und sich über das Ergebnis ärgern! Das Teil kann wirklich jeder bauen, der ein Bisschen handwerkliches Geschick hat. Da gehört nicht viel dazu.

Die Antenne habe ich mit dem Script auf der Anleitungsseite berechnet. Für den Ochsenkopf sind dabei 13 cm Kantenlänge für den Kupferdraht, ein Blech von mindestens 46,5 mal 28,2 cm und 6,7 cm Abstand vom Blech herausgekommen. Berechnet man die Antenne für den Sender Schöneck, bekommt man andere Werte, teilweise mit fast einem cm Unterschied.

Berechnet man aber eine Antenne, die für beide Sender optimiert ist, dann kommt fast die selbe wie für den Ochsenkopf heraus: 13,1 cm Kantenlänge, 46,7 mal 28,4 cm für das Blech und 6,8 cm Abstand. So genau kann man den Draht eh nicht biegen und das Blech habe ich sowieso mit 30 mal 50 cm etwas größer gemacht. Meine Antenne ist also quasi zufällig für beide Sender optimiert!

Sender

Empfangen kann ich alle Sender, die von den beiden Sendestationen ausgestrahlt werden. Das sind für den Sender Ochsenkopf:

ZDF, 3sat, ZDFinfo, neo / KiKA490 MHzDownload:
Bayern-Ochsenkopf.conf
Das Erste, arte, Phoenix, EinsPlus538 MHz
Bayerisches FS Nord, BR-alpha, hr-fernsehen, MDR Thüringen626 MHz

Und für den Sender Schöneck:

ZDF, 3sat, ZDFinfo, neo / KiKA482 MHzDownload:
Sachsen-Schoeneck.conf
Das Erste, arte, Phoenix, Einsfestival506 MHz
Bayerisches FS Nord, MDR Sachsen, rbb Brandenburg, WDR Köln562 MHz.

Das entspricht genau den Angaben in der Sender- und Programmliste Deutschland von http://ueberallfernsehen.de/.
Die beiden Downloads enthalten alle Sender der jeweiligen Sendestation. Es ist jeweils die Ausgabe eines Durchlaufs von dvbscan mit den jeweiligen Startfrequenzen für Bayern und Sachsen. Die Dateien sind im zap-Format, z. B. für die Verwendung mit dem mplayer und UTF-8-kodiert.

Wie gesagt, hier funktioniert eine Kombination beider Sendestationen (sozusagen länderübergreifend ;-) am besten. Aber das muss man vermutlich einfach ausprobieren, abhängig vom Standort.

Fernsehen

Als Konsolenliebhaber benutzt man natürlich den mplayer, um DVB-T zu schauen. Hierzu einfach die jeweilige (ggf. angepasste) conf-Datei nach ~/.mplayer/ kopieren und als channels.conf verlinken oder umbenennen.
Ganz nett funktioniert die Option -vf pp=lb, um einen Deinterlacer zu aktivieren.

Ingesamt also: mplayer -vf pp=lb dvb://[Kanal], den Kanal ggf. in Anführungszeichen oder mit Escapes für Leerzeichen.

Videotext (Teletext)

Das will man natürlich nicht missen! Wenn schon Fernsehen, dann auch Videotext. Es scheint derzeit unter Linux nicht allzuviel Auswahl an Programmen zu geben, die DVB-T-Videotext anzeigen können. Eines funktioniert super, auch wenn man ein bisschen Energie dafür investieren muss: alevt.

Die offizielle Version wird scheinbar nicht mehr gepflegt, auch ist deren Homepage http://goron.de/~froese/ (im Moment?) nicht erreichbar. Außerdem unterstützt das letzte offizielle Release (1.6.2) kein DVB(-T). Netterweise wurde der Code ins Repository von Linuxtv übertragen (util/alevt/) und überarbeitet. Standardmäßig wird alevt allerdings nicht gebaut.

Es war nötig, zvbi mit v4l-Unterstützung zu installieren. Außerdem benötigt alevt noch zlib und libpng (die wird man aber vermutlich ohnehin installiert haben). Weiterhin musste ich exp-gfx.c und Makefile patchen. Danach lief ein simples make allerdings problemlos durch.

Ein ebuild (für Gentoo Linux), das alevt mitbaut, wenn man media-tv/linuxtv-dvb-apps installiert (USE-Flag „alevt“ muss gesetzt sein) habe ich unter Bug #423687 online gestellt. Dort finden sich auch die beiden Patches.

Zum Anzeigen von Videotext muss man einfach den jeweiligen Sender öffnen (z. B. mit dem mplayer, s. o.) und dann alevt folgendermaßen starten:

alevt -v /dev/dvb/adapter0/demux0 -s [Service ID] 100

Da auf einer DVB-Frequenz mehrere Sender ausgestrahlt werden, benötigt man noch die Service ID. Diese ist im Feld Nr. 13 in der channels.conf-Datei gespeichert. Herauszufinden also beispielsweise mittels

grep [Sender] ~/.mplayer/channels.conf | cut -d : -f 13

Benutzung mit der Konsole

Natürlich kann man sich mittels ein paar Zeilen Bash einen Haufen Tipparbeit sparen. Ich habe z. B. ein Script namens „tv“, was einen Sender öffnet (und den Namen des Senders in /tmp/dvbt_tuned speichert) und eines namens „videotext“, was den zugehörigen Videotext anzeigt.

Eine Bash-Completion-Datei für das tv-Script habe ich auch geschrieben. Mittels tv <TAB> bekommt man eine Auflistung aller verfügbaren Sender. Wenn man bereits etwas eingegeben hat, werden nur die Sender angezeigt, deren Name mit der Eingabe anfängt.

Vielleicht hilft’s ja jemandem, der auch unter (Gentoo) Linux DVB-T schauen will :-)


Webcam-Barcodescanner

Ich hatte kürlich meinen alten Barcodescanner (noch mit DIN-Stecker!) in der Hand. Trotz DIN-PS/2-Adapter, aktivem PS/2-USB-Adapter und gutem Zureden konnte ich ihn nicht mehr zum ordnungsgemäßen Funktionieren bringen. Also habe ich mir folgende Alternative überlegt:

Zunächst habe ich meine alte Webcam, eine Logitech QuickCam Messanger (USB-ID 046d:08da) ausgegraben. Hat out-of-the-box mit dem Kernel-Treiber ZC3XX USB Camera Driver funktioniert (zu testen mittels mplayer tv:// o. Ä.). Natürlich geht auch jede andere unter Linux funktionierende Webcam!

Erwartungsgemäß bietet die Open-Source-Gemeinde ein handliches Programm, das aus einem Webcam-Stream Barcodes lesen kann (übrigens auch zweidimensionale, z. B. QR-Codes): zbar. Gentoo-Nutzer sollten darauf achten, den v4l-USE-Flag zu setzen, sonst wird nur die nackte Bibliothek erstellt, nicht das Tool, was wir brauchen.
Das mitgelieferte Tool zbarcam übernimmt das Übersetzen des Webcam-Streams in Barcodes und schreibt das Ergebnis auf STDOUT.

Jetzt wäre es ja aber zu umständlich, einen Barcode einzulesen, von der Konsolenausgabe zu kopieren und dort einzufügen, wo er hin soll. Deswegen brauchen wir ein zweites Helferprogramm: xvkbd. Das kann von STDIN lesen und nach STDOUT schreiben – dort hin, wo der Cursor gerade ist.

Den „Barcodescanner“ startet man mit zbarcam --raw | xvkbd -file -. Das Fenster von zbarcam vielleicht noch kleiner machen, immer in den Vordergrund stellen und in ein Eck schieben und dann kann’s losgehen :-)


b8 0.5.2 out now

I just uploaded a new bugfix release for b8. The destructor of the MySQL storage backend always disconnected the MySQL connection, even if an existing link-resource was passed to b8. Release 0.5.2 fixes this. Now, the MySQL connection is only disconnected if b8 created the resource itself. Thanks to Gerhard Waldemair for the bug report!

Everyone can safely update to the new version. It's not necessary if you didn't have any problems with the MySQL backend or use the Berkeley DB backend. Only b8/storage/storage_mysql.php has been changed.


Updated: serienbrief 0.2.2-r1

I just released a little update for serienbrief. It only adds a README file with build and dependency information for users using a distribution without an official serienbrief package (perhaps each and every distribution except Gentoo Linux). Therefore, no new version number, just an -r1 added.
Nobody has to update to this version if 0.2.2 is being installed, as this really only is a documentation update.