Samstag, 18. März 2017

Neuinstallation TBS 6205 Treiber nach Kernelupdates (Ubuntu 14.04.4 Server)

Nach einem Systemupdate sind die Tuner nicht mehr verfügbar? Dann müssen sie neu installiert werden.

Ich gehe davon aus, dass die Treiber wie hier beschrieben bereits installiert waren und Ihr das Verzeichnis mit den Treibern noch auf der Platte habt.

Geht in euer Treiberverzeichnis und führt dann der Reihe nach aus:

1) Vorbereitung:
make distclean

2) Treiberkonfiguration:
2a) DVB-T und x86 Kernel 3.X:
./v4l/tbs-x86_r3.sh

2b) DVB-T und x86 Kernel 2.6.X:
./v4l/tbs-x86.sh

2c) DVB-T und Kernel x86 64 bit:
./v4l/tbs-x86_64.sh

2d) DVB-C und x86 Kernel 3.X:
./v4l/tbs-dvbc-x86_64.sh

2e) DVB-C und x86 Kernel 2.6.X:
./v4l/tbs-dvbc-x86.sh

2f) DVB-C und Kernel x86 64 bit:
./v4l/tbs-dvbc-x86_64.sh

Ihr solltet dann bspw. folgende Bestätigung bekommen:
TBS 62xy, 5880 and 528x drivers configured for DVBC (x86_64 platform).

3) Treiber bauen
3a) Singlecore
make

3b) Dualcore
make -j3

3c) Quadcore
make -j 5

4) Treiber installieren
sudo make install

5) Neustart
sudo reboot


Problembehebung:
Sollten die Tuner nach einem Neustart nicht zur Verfügung stehen, und der Befehl
dmesg | grep DVB
etwas ähnliches wie sowas:
disagrees about version of symbol dvb_frontend_detach
Unknown symbol dvb_frontend_detach (err -22)
anzeigen, die Media Treibermodule löschen:
sudo rm -rf /lib/modules/$(uname -r)/kernel/drivers/media/
und zurück zu Punkt 4)

Samstag, 16. April 2016

Treiberinstallation TBS 6205 unter Ubuntu 14.04.4 Server

Da Vodafone bei uns in der Gegend VDSL leider nur via Bitstream schaltet, haben wir nur die Wahl zwischen VDSL ohne Vodafone TV und DSL 16000 mit TV.

Beides für uns nicht brauchbar, deshalb hat sich der Umstieg damit auch schon wieder erledigt.

Mit den bisherigen DVB-T Tunern war ich eh nicht allzu glücklich (Umschaltzeiten, des öfteren Poll-Timeouts etc.), also habe ich uns eine TBS 6205 gegönnt. Mit der Karte bleiben wir jetzt bis zur Abschaltung bei DVB-T, haben aber später auch die Optionen auf DVB-T2 oder DVB-C.

Hier kurz die Specs:
- PCI Express
- Low profile
- Quad Tuner DVB-T/T2/C SD&HD
- Nur ein Antennenkabel nötig
- Linux Support über closed source driver

Die (closed source) Treiber gibt es hier zum Download. Diese herunterladen und entpacken.

Vorbereitung:
sudo apt-get install build-essential make linux-headers-`uname -r`

Installation der Treiber für DVB-T/T2:
bzcat linux-tbs-drivers.tar.bz2 | tar xv
cd linux-tbs-drivers
find -type d -exec chmod 755 \{\} \;
find -type f | xargs chmod 644
find -name '*.sh' | xargs chmod 755
find -name '*.pl' | xargs chmod 755
./v4l/tbs-x86_64.sh
make -j3
sudo make install
sudo reboot

Installation der Treiber für DVB-C:
bzcat linux-tbs-drivers.tar.bz2 | tar xv
cd linux-tbs-drivers
find -type d -exec chmod 755 \{\} \;
find -type f | xargs chmod 644
find -name '*.sh' | xargs chmod 755
find -name '*.pl' | xargs chmod 755
./v4l/tbs-x86_64.sh
./v4l/tbs-dvbc-x86_64.sh 
make -j3
sudo make install
sudo reboot

Wer keine Dual-Core-CPU hat lässt jeweils bei make das "-j3" weg, wer einen Quad-Core hat ersetzt es durch "-j4".

Nach einem Neustart stehen unter Tvheadend 4 separate Tuner zur Verfügung (hier DVB-C):


Die Karte macht bisher einen guten Eindruck, der Empfang von DVB-T ist mindestens so gut wie mit den anderen Karten. Trotzdem ist der Empfang auf 618MHz leider grenzwertig, aber noch brauchbar. Das liegt aber eher an der geringen Sendeleistung und unserer Wohnsituation im Hinterhaus. Ich lasse seit einigen Stunden 4 Muxe parallel via VLC wiedergeben, die Streams sind stabil und die Error-Raten in Tvheadend unauffällig.

DVB-T2-Sender habe ich (noch) keine gefunden, Informationen zum Berliner Testsendebetrieb sind aber auch sehr spärlich gesäht.

DVB-C habe ich auch einige Stunden getestet, die 4 Streams liefen ebenfalls gut.

Die Umschaltzeiten sind bei allen Varianten gut.

Bis jetzt also eine wirklich brauchbare Karte, die mit ca. 160€ ihr Geld wert ist. Wer das Neuinstallieren der Treiber nach jedem Kernel-Update nicht scheut, ist mir dieser Karte wahrscheinlich gut beraten, da sämtliche Alternativen mit 4 Tunern (noch) teurer sind.

Bestellt habe ich bei hier, mit der Abwicklung und Lieferzeit war ich ebenfalls zufrieden.

UPDATE & EDIT 11.3.2017:
Auf Hinweis von Alex habe ich den Artikel leicht angepasst. Seit 4 Wochen läuft die Karte bei uns nun im DVB-C Betrieb stabil und unauffällig, Umschaltzeiten sind auch top. Bis zum Umstieg lief sie mit DVB-T ebenfalls super.

Evtl. setze ich den Server demnächst mit 16.04 LTS neu auf, dann versuche ich mal die inzwischen erhältlichen Open-Souce-Treiber.

Donnerstag, 10. Dezember 2015

Abschaltung DVB-T in Berlin - Umstieg auf Vodafone TV in Verbindung mit Tvheadend?

Wie bereits in anderen Beiträgen erwähnt läuft bei uns ein Tvheadend-Server mit insgesamt 4 DVB-T Tunern, der diverse Clients mit TV-Signalen versorgt und Aufnahmen zentral anbietet. Die Clients sind ein bunt gemischter Haufen bestehend aus HTPC's, Raspberry Pi, Handys und Tablets.

Die Zeit des (kostenlosen) DVB-T Empfangs in Berlin neigt sich langsam aber sicher ihrem Ende entgegen, momentane Empfangsprobleme zeugen von den bereits laufenden Umbauarbeiten auf DVB-T2. Es stehen also Veränderungen an. Der Kauf von DVB-T2-Tuner sollte dabei noch nicht einmal das größte Problem sein, die wird man sicher günstig besorgen können. Aber man musste ja unbedingt das Rad neu erfinden und als Codec H.265 wählen - den kann leider keiner meiner Clients in Hardware dekodieren. Alle Clients deshalb austauschen bzw. aufrüsten fällt allerdings auch aus, die laufen dafür ansonsten einfach noch zu gut. Davon abgesehen ist H.265 unter Linux/Kodi/OpenELEC momentan auch eine nicht ganz so ganz triviale Geschichte.

Deshalb nun Idee, auf IPTV umzusteigen. Vodafone bietet VDSL50 inkl. IPTV für 39,99€ an, das entspräche für uns einem Aufpreis von 10€ pro Monat. Nebenbei würden wir von 16.000 DSL auf 50.000 VDSL aufsteigen - auch nicht verkehrt. Und zu einer Fritzbox 7490 für 49,99€ sage ich dann auch nicht nein, ist das doch die Chance, die altersschwachen Siemens-Router von Alice (LAN nur 100MBit, WLAN nur 54MBit) endlich in den wohlverdienten Ruhestand zu schicken und das Netzwerk auf GBit umzurüsten. Und noch ein positiver Nebeneffekt: Der Kauf von Tunerkarten hat sich erledigt, weil die Streams gleich "fertig" reinkommen und weiterverteilt werden können.

Leider schweigt sich das Internet zum Thema Vodafone TV und Tvheadend ziemlich aus, aber zum Thema VLC-Player findet sich zumindest einiges, u.a. ein Artikel in LinuxUser. Dieser verweist auf das Kundenforum von Vodafone, in dem ein User fertige Playlisten für VLC anbietet. Tvheadend an sich sollte IPTV untersützen, nur eine Lösung für das EPG (das nicht per IPTV übertragen wird) müsste man noch finden, z.B. XMLT.

Private HD-Sender funktionieren auf absehbare Zeit nur mit dem Vodafone-Receiver, was mich (von DVB-T kommend) nicht wirklich stört. Obiger Liste hate etwa 75 Sender, darunter einige Dubletten (SD und HD). Trotzdem deutlich mehr als momentan via DVB-T.

Demnächst habe ich die Möglichkeit, bei Bekannten Vodafone TV zumindest mit VLC einmal auszuprobieren, an dieser Stelle gibt es dann weitere Neuigkeiten, hauptsächlich als Gedankenstütze für mich selbst. Wenn es jemandem weiterhilft - umso besser!

Freitag, 28. August 2015

Reboot-Skript für Siemens SL2-141-I Router via Telnet

Für DSL und WLAN ist bei uns ein Siemens SL2-141-I zuständig, das damalige Standard Modell für Alice-Kundenr. Kurzzeitig hatten wir auch andere, deutlich neuere Modelle im Einsatz - unter anderem eine Easybox sowie eine Fritzbox. Leider ist nur der Siemens-Router in der Lage, unsere DSL-Leitung mit knapp 14 MBit zu synchronisieren, alle anderen erreichten nur um die 6 MBit.

Dabei nervt der Router - egal mit welcher Firmware-Revision - mit der Macke, dass er nach einer (Zwangs-)Trennung der Verbindung manchmal nicht automatisch eine neue Verbindung aufbaut - auch ein manueller Aufbau im Webinterface funktioniert dann nicht mehr. Anstatt jedes Mal zum Router laufen zu müssen und ihn aus- und wieder anzuschalten habe ich mir das folgende kleine Skript gebastelt, das den Job automatisch erledigt.


#!/bin/bash
ROUTERIP=192.168.1.1
NAME=admin
PW=admin
TESTIP=8.8.8.8
if ping -c 1 -w 1 $TESTIP > /dev/null
then
exit
else
(sleep 7; echo "$NAME"; sleep 2; echo "$PW"; sleep 2; echo "reboot") | telnet $ROUTERIP
fi
exit
Ausgeführt wird es alle 5 Minuten per Eintrag in /etc/crontab: 
*/5 * * * * Benutzer /Pfad/zum/Skript/router_reboot.sh > /dev/null 2>&1 

Angepasst werden müssen ggf. noch NAME, PW und IP.

Donnerstag, 27. August 2015

Standby und Wakeup für Tvheadend - Bash-Skript für Ubuntu 14.04

Bei uns zu Hause läuft seit geraumer Zeit ein TV-/MySQL-/Fileserver unter Ubuntu 14.04, der drei OpenELEC-Clients sowie diverse mobile Geräte mit Live-TV und Filmen/Serien/Musik versorgt.

Dank recht energiesparender Hardwareauswahl liegt der Verbrauch zwar nur bei knapp 25 Watt im idle (wenn alle HDD's schlafen), trotzdem summiert sich der Verbrauch aufs Jahr gerechnet dennoch. Dazu kurz folgende Überschlagsrechnung: 0,2625 €/kWh * 0,025 kW Verbrauch * 24 Stunden * 365 Tage = ca. 60€/Jahr.

Das ist sicherlich nicht wahnsinnig viel, bietet aber dennoch Raum für Einsparungen - gerade nachts und mittags wird bei uns oft weder ferngesehen noch aufgenommen.

Das wiki auf ubuntuusers.de bietet dafür allerlei vorbereitete Skripte, u.a.  dieses, dieses und dieses. Alles diese Skripte haben gemein, dass sie natürlich keine Abfrage für Tvheadend über aktive Verbindungen/Streams zu den Clients sowie anstehende Aufnahmen beinhalten und keine Timer setzen.

Für dieses Problem finden sich auf der Homepage von Tvheadend diese, diese und diese Lösungen.

Einiges in den oben verlinkten Skripten war mir schlicht zu hoch, weshalb ich mir per copy/paste ein eigenes Skript erstellt habe, das ich auch verstehe und an meine Ansprüche anpassen kann.

#!/bin/sh
# This script uses curl. Install curl on ubuntu/debian using the command "sudo apt-get install curl"
#Replace "yes" with "no" to deactivate auto suspend
AUTO_SUSPEND=yes
if [ "$AUTO_SUSPEND" = "no" ]
then
echo "Automatic suspend deactivated"
exit
fi
#Set time in seconds to prevent this script from running during boot
sleep 60s
#Check for users logged in
echo "Checking logged in users"
USERCOUNT=`who | wc -l`
if [ "$USERCOUNT" -gt 0 ]
then
echo $USERCOUNT user/users logged in
echo "Stay Awake"
exit
else
echo "No users logged in"
fi
echo "Checking online Clients"
#Check 192.168.1.5
if ping -c 1 -w 1 192.168.1.5 > /dev/null
then
echo "192.168.1.5 is online"
echo "Stay Awake"
exit
else
echo "192.168.1.5 is offline"
fi
#Check 192.168.1.6
if ping -c 1 -w 1 192.168.1.6 > /dev/null
then
echo "192.168.1.6 is online"
echo "Stay Awake"
exit
else
echo "192.168.1.6 is offline"
fi
#Check 192.168.1.7
if ping -c 1 -w 1 192.168.1.7 > /dev/null
then
echo "192.168.1.7 is online"
echo "Stay Awake"
exit
else
echo "192.168.1.7 is offline"
fi
echo "No clients online"
#Query Tvheadend for subsciptions
echo "Checking subcriptions"
SUBS="`curl -s --user USER:PASSWORD http://127.0.0.1:9981/status.xml | grep "subscriptions" | awk -F '>' '{print $2}' | awk -F '<' '{print $1}'`"
#Checking subscriptions
if [ "$SUBS" -gt 0 ]
then
echo "$SUBS subscriptions"
echo "Stay awake"
exit
elif [ "$SUBS" -eq 0 ]
then
echo "No subscriptions"
fi
#Query Tvheadend for next recording
echo "Checking recordings"
RECN="`curl -s --user USER:PASSWORD 127.0.0.1:9981/status.xml | grep "next" | awk -F '>' '{print $2}' | awk -F '<' '{print $1}'`"
echo Next recording starts in $RECN minutes
#Convert $RECN to seconds
RECNS=$(($RECN * 60))
echo Next recording starts in $RECNS seconds
#Query Unix time
DATE=`date +%s`
echo Unix Time is $DATE
#Check pending recordings and set wakup timer
if [ -z "$RECN" ]
then
echo "No recordings scheduled"
echo "Going to sleep"
WAKEUP2DAYS=$(($DATE + 172800))
echo 0 > /sys/class/rtc/rtc0/wakealarm
echo Setting $WAKEUP2DAYS in /sys/class/rtc/rtc0/wakealarm
echo $WAKEUP2DAYS > /sys/class/rtc/rtc0/wakealarm
sleep 5
/usr/sbin/pm-suspend
elif [ "$RECN" -lt 15 ]
then
echo "Next recording in less than 15 minutes"
echo "Stay awake"
exit
else
echo "Next recording in more than 15 minutes"
echo "Going to sleep"
WAKEUPTIMER=$(($DATE + $RECNS - 60))
echo 0 > /sys/class/rtc/rtc0/wakealarm
echo Setting $WAKEUPTIMER in /sys/class/rtc/rtc0/wakealarm
echo $WAKEUPTIMER > /sys/class/rtc/rtc0/wakealarm
sleep 5
/usr/sbin/pm-suspend
exit
fi
view raw tvhsuspend.sh hosted with ❤ by GitHub
 
Das Skript prüft, ob
- "no" in Zeile 7 gesetzt wurde
- User eingeloggt sind (bspw. per ssh)
- die PC's mit den IP's 192.168.1.[5,6,7] online sind
- Tvheadend gerade streamt oder aufnimmt
- Innerhalb der nächsten 15 Minuten eine Aufnahme beginnt

Sollte keine der Bedingungen erfüllt sein, schreibt es entweder den passenden RTC-Timer für die nächste Aufnahme (abzüglich 60 Sekunden Vorlauf zum Hochfahren) oder - wenn keine Aufnahme programmiert wurde - einen Timer in 2 Tagen zur EPG Aktualisierung und schickt den Server dann in den Standby.

Das Skript benötigt das Paket curl, zu installieren per "sudo apt-get install curl". 

Ferner muss die Hardware-Uhr in UTC laufen, vgl. das wiki von mythtv oder vdrwiki.

Angepasst werden müssen zwingend noch "USER" und "PW" in den Zeilen 72 und 89. Ersetzt diese durch euren Benutzernamen nebst Passwort , das ihr auch im Tvheadend Webinterface benutzt. 

Ausgeführt wird es alle 5 Minuten per Eintrag in /etc/crontab: 
*/5 * * * * Benutzer /Pfad/zum/Skript/tvhsuspend.sh > /dev/null 2>&1

Man könnte das Skript sicher noch etwas verschönern, bspw. durch eine separate Konfigurations-Datei. Anmerkungen und Verbesserungen sind daher herzlich willkommen!