DVB-Cube BETA <<< Das deutsche PC und DVB-Forum >>>
Diverse DVB Software für verschiedene Karten => # ARM Boxen (Raspberry Pi ect.) => Thema gestartet von: mtron am 30 August, 2013, 11:36
-
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 (http://www.raspberrypi.com/mpeg-2-license-key/)](08/2013)
Speicherkarte (16 GB calss 10 SDHC) : 12 € [geizhals.at (http://geizhals.at/?fs=sdhc+16+GB+class+10&in=)] (08/2013)
Programmierbare Fernbedienung z.B Philips SRP 5004: 24 € [amazon.de (http://www.amazon.de/gp/product/B002M9GW6S)](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 (http://2013-07-26-wheezy-raspbian.zip) aktuelle Version von 08/2013. Das Image dann entpacken und von Windows aus mit dem win32diskimager (http://sourceforge.net/projects/win32diskimager/) auf die Speicherkarte schreiben. [elinux.org Howto (http://elinux.org/RPi_Easy_SD_Card_Setup)]
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 (http://en.wikipedia.org/wiki/Comparison_of_SSH_clients)) 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 (https://github.com/Hexxeh/rpi-update) 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
- VDR
Eine 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
- XBMC
Ebenso gibt es für XBMC eine Online Quelle für vorkompilierte Pakete (http://michael.gorven.za.net/raspberrypi/xbmc) 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.rulesSUBSYSTEM=="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-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 (http://michael.gorven.za.net/raspberrypi/xbmc) Wer andere Programmversionen einsetzt muss sich die beiden Programme (jeweils eins. für VDR: vdr-plugin-xvdr (https://github.com/pipelka/vdr-plugin-xvdr) und XBMC: xbmc-addon-xvdr (https://github.com/pipelka/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-xvdr
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
Konfiguration:
- DVB Karte
dmesg | 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 (http://i.imgur.com/VY0FCBU.jpg)
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.confDie 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 stopmittels "top" schauen ob der xbmc.bin Prozess wirklich weg ist (kann ein paar Sekunden dauern)
und dann xbmc neu starten
DISPLAY=:0.0 xbmc &
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 ;)
-
Wow!!!
Ich wäre nicht mal auf so eine superidee gekommen.
-
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
-
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/
(http://www.fdm-ware.de/Raspi-VDR/raspi10.jpg)
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.
(http://www.fdm-ware.de/Raspi-VDR/raspi6.jpg)
Die Dokumentation (incl. Schaltungsbeschreibung) hat Argus (http://www.vdr-portal.de/user/393-argus/) auf dieser Website (http://www.fdm-ware.de/Raspi-VDR/index.html) 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 :)
-
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
-
Hallo und Willkommen im Cube!
Seit ich das Howto geschrieben habe ist ganz schön was weitergegangen. Mittlerweile gibt es ein eigenes VDR Video Ausgabedevice mit HW Accel Support für den Pi, also wirds zeit das Howto zu überarbeiten.
Ich habe leider nicht mehr das damalige image hier (mein Pi werkelt seit über 1 Jahr als Homeserver), aber spätestens nächste Woche habe ich Urlaub und dann werde ich das Howto überarbeiten.
Zu deinen Problemen
- streamdev: ok, dann baue ich instruktionen zum eigenen build ein.
- da habe ich mir eine eigene .lircrc gebastelt (oder aus dem I-Net geklaut ;) ) ich schau mich mal um ob ich irgendwo ein Backup habe.
- auch bei xbmc hat sich sehr viel getan. Aktuellere Builds bieten HW Accel des XBMC Guis und sind um Welten schneller. Update wie man so eine xbmc Version für wheezy installiert folgen.
- Ich nehme an, dass du das Webif in xbmc Settings aktiviert hast? Falls eine Firewall installiert hast (oder falls du iptables verwendest) musst du natürlich entsprechende inbound und outbound Rules für Port 80 und 443 erstellen.
-
Also das fehlende streamdev VDR plugin habe ich nun mit
sudo apt-get install vdr-plugin-streamdev-server
nachinstalliert. Per Browser komme ich aber immer noch nicht an den VDR, mag aber auch daran liegen, dass ich ihn bis jetzt noch nicht über xbmc konfigurieren konnte, da einfach eine Navigation per FB, Maus oder keyboard immer stockt. :(