Bevor der Pi eine neue Aufgabe übernimmt (Router in einer Wlan Richtfunkstrecke) muss ich noch mein vergangenes Porjekt dokumentieren.
Ziel: der Pi soll mithilfe eines USB Sticks ein vollwertiger sehr stromsparender DVB-S Reciever werden.
Hardware: 1x Raspberry pi model B (512 MB Ram)
1x min. 4 GB (besser 16) SDHC calss 10 Speicherkarte
1x DVB-S2 USB Box (mit externer Stromversorgung). Ich habe eine 'Terratec Cinergy S2 USB HD' mit eingebautem Infrarot-Empfänger für die Fernbedienung verwendet. Jede andere vom Linux Kernel unterstützte USB box geht auch. Externe Stromversorgung ist bei DVB-S immer nötig!
1x Ethernet Kabel (gespeichert werden aufnahmen via Network File Sharing (NFS) auf einem im lokalen Netz stehendem NAS.
Software- Raspbian Wheezy Desktop Image
- VDR für die DVB Aufgaben
- XBMC zur Wiedergabe
- xvdr Plugin für VDR und XBMC damit die beiden Programme miteinander Daten austauschen können.
Kosten: Raspberry PI: 34 € (08/2013)
Cinergy S2 USB: 44 € (vor kurzem im lokalen MediaMarkt gesehen)
Mpeg 2 Lizenz: 2,81 € [
raspberry store](08/2013)
Speicherkarte (16 GB calss 10 SDHC) : 12 € [
geizhals.at] (08/2013)
Programmierbare Fernbedienung z.B Philips SRP 5004: 24 € [
amazon.de](08/2013) Der Pi unterstützt auch HDMI-CEC!
Ehernetkabel & Netzteil für den Pi: 10 €
Comfort: 126 € für alles,
Mindestens (PI & Mpeg2): 37€
Statt einer DVB-S Box kann man auch einen von Linux unterstützen DVB-T Stick nehmen. Diese können dann teilweise auch ohne externe Stromversorgung funktionieren. Es ist hier aber vom Modell abhängig wieviel Strom dieser zeiht. Die nötigen Einstellungen werde ich in der Anleitung erwähnen.
Software Installieren:- wheezy image von
http://www.raspberrypi.org/downloads herunterladen. Auf der Website wird das image als "Raw Image Raspbian “wheezy”" bezeichnet.
2013-07-26-wheezy-raspbian.zip aktuelle Version von 08/2013. Das Image dann entpacken und von Windows aus mit dem
win32diskimager auf die Speicherkarte schreiben. [
elinux.org Howto]
Von Linux aus gehts mit 'dd':
sudo dd bs=1m if=2013-07-26-wheezy-raspbian.img of=/dev/sd<x>
- raspi-config: Beim ersten Boot muss an den Pi Tastatur, Maus, Ethernet (IP via DHCP) & Bildschirm angeschlossen sein. Es wird das 'raspi-config' Script aufgerufen mithilfe dessen sich grundlegende Einstellungen am Pi vornehmen lassen.
Den ersten Punkt den man ausführen sollte ist ironischerweise ganz unten:
update Try to upgrade raspi-config
Falls es kein update gibt kann man jetzt das Dateisystem auf die gesamte Speicherkarte ausweiten:
expand_rootfs Expand root partition to fill SD card
Ganz wichtig ist es dem Video Dekoder genügend Ram zu spedieren. Für HD sollten es 256 MB sein.
memory_split Change memory split
Jetzt die restlichen Punkte abarbeiten:
configure_keyboard Set keyboard layout => Germany nodeadkeys
change_pass Change password for 'pi' user => Eigenes Passwort wählen, je länger desto besser!
change_locale Set locale => DE_de.UTF8
change_timezone Set timezone => CET (Central European Time)
ssh Enable or disable ssh server => ssh einschalten
boot_behaviour Start desktop on boot? => Ausschalten (xbmc startet später selbst von einer framebuffer Konsole aus)
Nach Abschluss des raspi-config scripts muss der pi neu gestartet werden damit die Einstellungen wirksam werden. Von nun an braucht man keine Maus & Tastatur mehr am Pi, da er über ssh (von windows via z.b via putty oder
vielen anderen) ferngesteuert werden kann.
Also von nun an arbeiten wir nicht mehr am pi selbst sondern an einem anderen Rechner im lokalen LAN. Ich habe dem Pi auf meinem Router eine fixe IP zugeteilt. In Gnome oder Kde kann man über den Dateimanager eine Verbindung zu einem ssh server herstellen und bekommt dan direkten grafischen zugriff auf das Dateisystem. Daneben öffnet man gelich noch eine Terminal Verbindung zum Pi:
ssh <username>@<IP des Pi>
ssh pi@192.168.1.105
- rpi-update: Der nächste Schritt ist nun die Firmware des Pi selbst upzudaten. Abererstmal das System auf den aktuellen Stand bringen.
sudo apt-get update && sudo apt-get dist-upgrade
Das Firmware upgrade selbst wird vom
rpi-upgrade Script von Hexxeh erledigt. Um das Scrpit zu installieren:
sudo apt-get install git-core
sudo wget https://raw.github.com/Hexxeh/rpi-update/master/rpi-update -O /usr/bin/rpi-update && sudo chmod +x /usr/bin/rpi-update
Das eigentliche Upgrade startet man jetzt endlich mit:
sudo rpi-update
- VDREine ausreichend aktuelle VDR Version wird in Raspbian Wheezy bereitgestellt. Also verläuft die VDR Installation einfach
sudo apt-get install vdr vdr-dev vdr-plugin-epgsearch vdr-plugin-femon vdr-plugin-live vdr-plugin-svdrposd
- XBMCEbenso gibt es für XBMC eine Online Quelle für
vorkompilierte Pakete von michael gorven:
Um diese Quelle zu verwenden via nano die datei /etc/apt/sources.list.d/mene.list anlegen
sudo nano /etc/apt/sources.list.d/mene.list
und folgendes hineinkopieren:
deb http://archive.mene.za.net/raspbian wheezy contrib
mit 'STRG+O' die Textdatei schreiben und 'STRG+X' um nano zu beenden.
zurück im Terminal den Archiv signing key importieren:
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-key 5243CDED
und die Packet Liste aktualisieren:
sudo apt-get update
XBMC installieren:
sudo apt-get install xbmc
Damit es keine Rechteprobleme mit der bei der Cinergy mitgelieferten Fernbedienung gibt folgende udev Regel erstellen
sudo nano /etc/udev/rules.d/99-input.rules
SUBSYSTEM=="input", GROUP="input", MODE="0660"
KERNEL=="tty[0-9]*", GROUP="tty", MODE="0660"
und den user Pi zu den Systemgruppen hinzufügen damit dieser die nötigen Rechte hat:
sudo useradd -G audio pi
sudo useradd -G video pi
sudo useradd -G input pi
- vdr-plugin-xvdrFür die Kommunikation zwischen VDR und XBMC habe ich das xvdr Plugin verwendet auf aus dem aktuellen Sourcecode folgende Packete für den Raspberry kompiliert: Diese Packete passen nur zu den nach diesem Howto installierten VDR von den Rasbian wheezy Repositories (VDR 1.7.28) und
XBMC Frodo von michael gorven Wer andere Programmversionen einsetzt muss sich die beiden Programme (jeweils eins. für VDR:
vdr-plugin-xvdr und XBMC:
xbmc-addon-xvdr selbst aus dem Sourcecode kompilieren)
cd $HOME
wget http://ubuntuone.com/2ahTLXTVB61mTovlgv2TPR -O vdr-plugin-xvdr_0.9.8-1_armhf.deb
sudo dpkg -i vdr-plugin-xvdr_0.9.8-1_armhf.deb
sudo apt-get install -f
- xbmc-addon-xvdrwget http://ubuntuone.com/6iViFYAt0yWhVdkBVIR7pe -O xbmc-addon-xvdr_0.9.5-1_armhf.deb
sudo dpkg -i xbmc-addon-xvdr_0.9.5-1_armhf.deb
sudo apt-get install -f
Konfiguration:- DVB Kartedmesg | grep -i dvb
lsusb
geben Auskunft welche Hardware in dem USB Device verbaut ist. Meist werden heute schon automatisch die richtigen Treiber geladen und man benötigt eventuell nur noch die Firmware. Zur genauen Identifikation wie die Karte zum laufen zu bringen ist ein Zitat aus dem LinuxTV Wiki:
If the Modules load correctly:
Provided that the modules were loaded correctly into system memory:
1. They should be listed in /proc/modules: you can use either cat /proc/modules or, even better, lsmod to see this content.
Which modules should you be looking for? Well, the answer to that question depends entirely upon the chipsets used by your device -- see the relevant wiki article for your device for a listing of such components and required drivers (or search the web if such information does not exist.)
2. They should provide some indication within your system log: you can consult the output from the "dmesg" command or directly review your system log file (typically housed within the /var/log directory) for indication that they have been successfully loaded and that the device is now correctly configured for operation. Examples of successful module loads are provided by users under the "Sample kernel output" section in many device articles witin the wiki.
3. The device manager udev will "automagically" create appropriate device nodes on /dev:
(a) For a DVB device, you should now have a non-empty /dev/dvb directory. You can check on whether this is true for you with the following command:
ls -l /dev/dvb/
(alternatively, you can browse your directory structure with the graphical file manager of your choice). If you have a single DVB device installed in your system, then the output of the above command should reveal that /dev/dvb/ is populated by adapter0. Digging further,
ls -l /dev/dvb/adapter0
reveals the character devices associated with adapter0 for which the drivers have control. If you have more then one DVB device, you can see the same for all with
ls -l /dev/dvb/adapter*
- Firmware:dmesg gibt Auskunft welche firmware die DVB USB Box benötigt. In meinem Fall kam
ds3000_firmware_ondemand: Waiting for firmware upload (dvb-fe-ds3000.fw)...
also beötigte ich für meine Karte die Datei dvb-fe-ds3000.fw. Diese Firmware bekommt man in der Regel von
https://github.com/BjornLee/linux-firmware/tree/master. Mittels wget im ssh terminal unter $HOME am Pi speichern:
cd $HOME
wget https://github.com/BjornLee/linux-firmware/blob/master/dvb-fe-ds3000.fw
sudo cp dvb-fe-ds3000.fw /lib/firmware/dvb-fe-ds3000.fw
- VDR Konfiguration - Empfangsart (dvb-s, dvb-t oder dvb-c) wählen:
sudo dpkg-reconfigure vdr
In diesem textmenü die VDR Empfangsart (DVB-S/T/C) wählen
- Die mitgelieferte Kanalliste ist veraltet. Darum löschen wir sie:
sudo rm /var/lib/vdr/channels.conf
und befüllen sie wieder mit aktuellen Einträgen von der channelpedia.
sudo wget http://channelpedia.yavdr.com/gen/DVB-S/S19.2E/S19.2E_complete_sorted_by_groups.channels.conf -O /var/lib/vdr/channels.conf
- VDR Streaming für das lokale Subnetz freischalten. 192.168.1.0/24 auf deine Gegebenheiten anpassen
sudo nano /var/lib/vdr/plugins/streamdev-server/streamdevhosts.conf
#
# streamdevhosts This file describes a number of host addresses that
# are allowed to connect to the streamdev server running
# with the Video Disk Recorder (VDR) on this system.
# Syntax:
#
# IP-Address[/Netmask]
#
127.0.0.1 # always accept localhost
192.168.1.0/24 # any host on the local net
#204.152.189.113 # a specific host
#239.255.0.0/16 # uncomment for IGMP multicast streaming
#0.0.0.0/0 # any host on any net (DON'T DO THAT! USE AUTHENTICATION)
- VDR Kommandos aus dem lokalen Subnetz freischalten. 192.168.1.0/24 auf deine Gegebenheiten anpassen
sudo nano /etc/vdr/svdrphosts.conf
#
# svdrphosts This file describes a number of host addresses that
# are allowed to connect to the SVDRP port of the Video
# Disk Recorder (VDR) running on this system.
# Syntax:
#
# IP-Address[/Netmask]
#
127.0.0.1 # always accept localhost
192.168.1.0/24 # any host on the local net
#204.152.189.113 # a specific host
#0.0.0.0/0 # any host on any net (USE THIS WITH CARE!)
- Fernbedienung:
sudo nano /etc/vdr/remote.conf
Die bei der Cinergy mitgelieferte Fernbedienung wird vom kernel automatisch als linux input device erkannt. Man muss nur die Tastenbelegungen dem VDR zuweisen. Um den VDR notfalls auch über eine angesteckte Tastatur bedienen zu können:
XKeySym.Up Up
XKeySym.Down Down
XKeySym.Menu space
XKeySym.Ok Return
XKeySym.Back b
XKeySym.Left Left
XKeySym.Right Right
XKeySym.Red F5
XKeySym.Green F6
XKeySym.Yellow F7
XKeySym.Blue F8
XKeySym.0 0
XKeySym.1 1
XKeySym.2 2
XKeySym.3 3
XKeySym.4 4
XKeySym.5 5
XKeySym.6 6
XKeySym.7 7
XKeySym.8 8
XKeySym.9 9
XKeySym.Volume+ +
XKeySym.Volume- -
XKeySym.Mute m
XKeySym.Info i
XKeySym.Pause p
XKeySym.FastFwd f
XKeySym.FastRew r
XKeySym.Power v
- Startoptionen
kann man dem VDR in der datei /etc/default/vdr mitgeben. Du musst erstmal das Init script selbst aktivieren und habe den watchdog deaktiviert und das vdr loglevel auf 1 runtergestellt. Zum testen sollte man das loglevel aber auf 3 belassen!
sudo nano /etc/default/vdr
# /etc/default/vdr
#
# See also /usr/share/doc/vdr/README.Debian.gz
#
# Change to 1 to enable vdr's init-script
ENABLED=1
# Change this to 1 if you want vdr to be able to shutdown the
# computer
ENABLE_SHUTDOWN=0
# Options that will be passed to vdr's commandline
# for example: OPTIONS="-w 15"
OPTIONS="-w 0 --lirc=/dev/null --log=1"
- VDR Webfrontend
.. heißt "Live" und wird über die Datei plugin.live.conf konfiguriert. Dort werden die Fixe IP des Pi eingetragen und der gewünschte Port auf dem das Webfrontend erreichbar sein soll.
sudo nano /etc/vdr/plugins/plugin.live.conf
#
# Command line parameters for vdr-plugin-live
#
# For more details see:
# - /usr/share/doc/vdr-plugin-live/README
# - `vdr --help -Plive`
--port=8008
--ip=192.168.1.105
# When retrieving EPG data with images from external sources, enabling
# this option allows those images to be shown by the Live plug-in.
#
# --epgimages=/var/cache/vdr/epgimages
Jetzt solle der VDR soweit konfiguriert sein dass er gestartet werden kann:
sudo service vdr start
Debug und Logmeldungen bekommt man am einfachsten indem man über ein neues Terminal Fenster eine weitere ssh Verbindung zum pi aufbaut und dort mit:
tail -f /var/log/syslog
die Logs betrachtet. Sollte der VDR nicht starten bitte diese logausgabe posten!
- XBMC & XVDR
Autostart für xbmc einrichten:
sudo nano /etc/default/xbmc
# Set this to 1 to enable startup
ENABLED=1
# The user to run XBMC as
USER=pi
# Adjust niceness of XBMC (decrease for higher priority)
NICE=-
5
In XBMC zu guter letzt noch unter 'System - Addons - XVDR' die feste IP des PI angeben (auf der ja auch der VDR läuft) und LiveTV aktivieren. Jetzt sollten die Sender geladen werden und LiveTV über VDR funktionieren. Falls keine Sender geladen werden hilft es eventuell xbmc neu zu starten:
sudo service xbmc stop
mittels "top" schauen ob der xbmc.bin Prozess wirklich weg ist (kann ein paar Sekunden dauern)
und dann xbmc neu starten
DISPLAY=:0.0 xbmc &
FazitDamit ist der PI DVB-S Reciever komplett einsatzbereit. DVB-S LiveTV (SDTV) funktioniert mit VDR und XBMC sehr gut und die Umschaltzeiten sind überraschend schnell. Bei HDTV hapert es mit XBMC leider noch ziemlich, aber vielleicht bringt die Zukunft ja hier Verbesserungen. Lokale Medienquellen wie ein NAS oder der Desktop PC lassen sich über das XBMC Gui sehr einfach einbinden. Da kommt freude auf
XBMC selbst ist im Menüaufbau teilweise etwas träge aber für meine Bedürfnisse noch brauchbar. Die ganzen video Addons sind natürlich großartig
Bei bedarf könnte ich das komplett vorkonfigurierte Image zur Verfügung stellen. Falls ihr dieselbe DVB-S2 Box besitzt heißt das dann nur noch image auf die Karte schreiben, DVB Box anstecken Starten und fertig ist der low cost, ultra low power DVB Reciever!
Da aber wie so oft beim Basteln der Weg das Ziel ist, denke ich, dass es mehr Spass macht die Sache selbst durchzuspielen. Dafür hast du ja den Pi gekauft, oder