Diverse DVB Software für verschiedene Karten > # ARM Boxen (Raspberry Pi ect.)
Howto: Pi-ciever - Rasperry PI powered DVB Reciever
mtron:
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':
--- Code: ---sudo dd bs=1m if=2013-07-26-wheezy-raspbian.img of=/dev/sd<x>
--- Ende Code ---
- 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:
--- Code: ---ssh <username>@<IP des Pi>
ssh pi@192.168.1.105
--- Ende Code ---
- 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:
--- Code: ---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
--- Ende Code ---
Das eigentliche Upgrade startet man jetzt endlich mit:
--- Code: ---sudo rpi-update
--- Ende Code ---
- VDR
Eine ausreichend aktuelle VDR Version wird in Raspbian Wheezy bereitgestellt. Also verläuft die VDR Installation einfach ;)
--- Code: ---sudo apt-get install vdr vdr-dev vdr-plugin-epgsearch vdr-plugin-femon vdr-plugin-live vdr-plugin-svdrposd
--- Ende Code ---
- XBMC
Ebenso 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
--- Code: ---sudo nano /etc/apt/sources.list.d/mene.list
--- Ende Code ---
und folgendes hineinkopieren:
--- Code: ---deb http://archive.mene.za.net/raspbian wheezy contrib
--- Ende Code ---
mit 'STRG+O' die Textdatei schreiben und 'STRG+X' um nano zu beenden.
zurück im Terminal den Archiv signing key importieren:
--- Code: ---sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-key 5243CDED
--- Ende Code ---
und die Packet Liste aktualisieren:
--- Code: ---sudo apt-get update
--- Ende Code ---
XBMC installieren:
--- Code: ---sudo apt-get install xbmc
--- Ende Code ---
Damit es keine Rechteprobleme mit der bei der Cinergy mitgelieferten Fernbedienung gibt folgende udev Regel erstellen
--- Code: ---sudo nano /etc/udev/rules.d/99-input.rules
--- Ende Code ---
--- Zitat ---SUBSYSTEM=="input", GROUP="input", MODE="0660"
KERNEL=="tty[0-9]*", GROUP="tty", MODE="0660"
--- Ende Zitat ---
und den user Pi zu den Systemgruppen hinzufügen damit dieser die nötigen Rechte hat:
--- Code: ---sudo useradd -G audio pi
sudo useradd -G video pi
sudo useradd -G input pi
--- Ende Code ---
- vdr-plugin-xvdr
Fü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) undXBMC 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)
--- Code: ---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
--- Ende Code ---
- xbmc-addon-xvdr
--- Code: ---wget 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
--- Ende Code ---
Konfiguration:
- DVB Karte
--- Code: ---dmesg | grep -i dvb
lsusb
--- Ende Code ---
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:
--- Zitat ---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:
--- Code: ---ls -l /dev/dvb/
--- Ende Code ---
(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,
--- Code: ---ls -l /dev/dvb/adapter0
--- Ende Code ---
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
--- Code: ---ls -l /dev/dvb/adapter*
--- Ende Code ---
--- Ende Zitat ---
- Firmware:
dmesg gibt Auskunft welche firmware die DVB USB Box benötigt. In meinem Fall kam
--- Zitat ---ds3000_firmware_ondemand: Waiting for firmware upload (dvb-fe-ds3000.fw)...
--- Ende Zitat ---
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:
--- Code: ---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
--- Ende Code ---
- VDR Konfiguration
- Empfangsart (dvb-s, dvb-t oder dvb-c) wählen:
--- Code: ---sudo dpkg-reconfigure vdr
--- Ende Code ---
In diesem textmenü die VDR Empfangsart (DVB-S/T/C) wählen
- Die mitgelieferte Kanalliste ist veraltet. Darum löschen wir sie:
--- Code: ---sudo rm /var/lib/vdr/channels.conf
--- Ende Code ---
und befüllen sie wieder mit aktuellen Einträgen von der channelpedia.
--- Code: ---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
--- Ende Code ---
- VDR Streaming für das lokale Subnetz freischalten. 192.168.1.0/24 auf deine Gegebenheiten anpassen
--- Code: ---sudo nano /var/lib/vdr/plugins/streamdev-server/streamdevhosts.conf
--- Ende Code ---
--- Zitat ---#
# 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)
--- Ende Zitat ---
- VDR Kommandos aus dem lokalen Subnetz freischalten. 192.168.1.0/24 auf deine Gegebenheiten anpassen
--- Code: ---sudo nano /etc/vdr/svdrphosts.conf
--- Ende Code ---
--- Zitat ---#
# 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!)
--- Ende Zitat ---
- Fernbedienung:
--- Code: ---sudo nano /etc/vdr/remote.conf
--- Ende Code ---
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:
--- Zitat ---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
--- Ende Zitat ---
- 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!
--- Code: ---sudo nano /etc/default/vdr
--- Ende Code ---
--- Zitat ---# /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"
--- Ende Zitat ---
- 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.
--- Code: ---sudo nano /etc/vdr/plugins/plugin.live.conf
--- Ende Code ---
--- Zitat ---#
# 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
--- Ende Zitat ---
Jetzt solle der VDR soweit konfiguriert sein dass er gestartet werden kann:
--- Code: ---sudo service vdr start
--- Ende Code ---
Debug und Logmeldungen bekommt man am einfachsten indem man über ein neues Terminal Fenster eine weitere ssh Verbindung zum pi aufbaut und dort mit:
--- Code: ---tail -f /var/log/syslog
--- Ende Code ---
die Logs betrachtet. Sollte der VDR nicht starten bitte diese logausgabe posten!
- XBMC & XVDR
Autostart für xbmc einrichten:
--- Code: ---sudo nano /etc/default/xbmc
--- Ende Code ---
--- Zitat ---# 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=-
--- Ende Zitat ---
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:
--- Code: ---sudo service xbmc stop
--- Ende Code ---
mittels "top" schauen ob der xbmc.bin Prozess wirklich weg ist (kann ein paar Sekunden dauern)
und dann xbmc neu starten
--- Code: ---DISPLAY=:0.0 xbmc &
--- Ende Code ---
Fazit
Damit 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 8)
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 ;)
_Immer_Intl_:
Wow!!!
Ich wäre nicht mal auf so eine superidee gekommen.
Jürgen:
Leider scheint derlei immer noch nicht unter Desktop-Systemen für den Pi zu klappen.
Die üblichen Multimedia-Anwendungen dafür finden immer noch keine Hardware-Unterstützung für das Decoding.
Die eine, die es gibt, omxplayer, blockiert dann leider den Desktop.
Ich möchte aber keinesfalls einen großen PC mitlaufen lassen müssen, denn dann ist die schöne Energie-Einsparung sofort wieder verloren.
Dafür müsste ich mir dann wohl eher einen zweiten Pi gönnen.
Vorläufig haben hier aber andere Anschaffungen Vorrang.
Jürgen
mtron:
und das ist die perfekte Hardware Umsetzung um den Pi als VDR Reciever zu nützen.
http://www.vdr-portal.de/board19-verschiedenes/board100-mein-vdr/123021-mein-raspi-vdr/
Hier siehr man ganz rechts den Pi, in der Mitte das Netzteil und ganz links den Audio Splitter. Frontseitig hat er ein OLED Display, Infrarot Sender und Empfänger sowie einen Power Button mit Beleuchtung eingebaut.
Die Dokumentation (incl. Schaltungsbeschreibung) hat Argus auf dieser Website zusammengetragen. Er hat sehr viel Liebe zum Detail was seinen Bericht sehr lesenswert macht. Einen Infrarot Sender einzubauen um vom Pi aus die Hifi Anlage zu steuern ist zum Beispiel eine super Idee.
Großartige Arbeit. Bin wirklich begeistert was für tolle Sachen mit dem Pi gemacht werden :)
dvbs:
Hi Mtron,
Kompliment und Danke für die ausführliche Anleitung.
Ich habe sie exakt befolt mit der gleichen Hardware, bleibe aber irgendwie stecken:
* VDR plugin streamdev ist wohl nicht mehr im Standardpaket mit drin
* von der (Scheckarten-)Fernbedienung der Cinergy werden nur die Pfeiltasten erkannt, sonst nix
* XBMC startet, ich kann aber nicht weiter den VDR einstellen, da, sobald ich einen Menüpunkt wähle, das Bild sich "überlagert" und dann hängen bleibt, keine Navigation mehr möglich ist
* komischerweise (ping auf die IP klappt) ist auch keine Aufruf über den Browser per http://ip:8008 möglich
Könntest du mir mal dein SD-image geben? Da könnte ich mal schauen ob es damit funktioniert und evtl. nach Unterschieden suchen - könnte man dann ja mit der Anleitung zufügen.
Grüße
Stephan
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln