Enigma2: Dreambox Plugin mit Python auf virtuellem PC zum Debug

Mi, 23.11.2011 - 09:13 -- Daniel Espendiller

enigma2 ubuntu vmwareZum besseren Entwickeln (Plugins für Dreambox / Enigma2 mit Python erstellen) und Debuggen lässt sich das Enigma2 System der Dreambox und ähnlichen Geräten auch auf normalen PC und virtuellen Maschinen ausführen. Logischerweise bekommen wir nur die reine GUI ans laufen (Wer auch Bild benötigt: Enigma2PC), was aber für reine Plugin Programmierung völlig ausreichend ist. Am einfachsten gestaltet es sich die ganze Geschichte mit VMware und Ubuntu aufzuziehen.

Pakete

Alle benötigten Pakete zum kompilieren sollten mittels apt-get installiert werden. Ich habe mal alle in einer Zeile zusammengefasst:

apt-get install git autoconf automake build-essential gettext libdvdnav-dev libfreetype6-dev libfribidi-dev libgif-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libjpeg62-dev libpng12-dev libsdl1.2-dev libsigc++-1.2-dev libtool libxml2-dev libxslt1-dev python-dev swig

Sources

Da sich die Lizenzbedienungen zu Enigma2 geändert haben, stehen die neuesten Quellen nicht mehr direkt öffentlich zur Verfügung. Sources findet man zum Beispiel unter: git.cweiske.de. Ein einfaches Auschecken sollte reichen, somit kann man dann nach der Anleitung in der README Datei anfangen zu kompilieren. (Eventuell noch den Patch von unten anwenden).

git clone git://git.cweiske.de/enigma2.git

Patch

Enigma ist für Fernbedienung als Eingabegerät ausgelegt, so ist die Steuerung am PC teilweise etwas holprig. Damit sich es sich trotzdem Kompilieren lässt einfach den Patch aus dem Anhang ausführen. Er legt eine Datei lib/base/etrace.h an und patcht die Keymaps, so dass die nötigsten Funktion mit der Tastatur durchgeführt werden können.

git apply enigma2-pc-20111110.diff

Starten

enigma2 ubuntu vmwareNach erfolgreichem Kompilieren von Enigma2 liegt ein komplettes System quasi als Chroot-Umgebung bereit, dies muss beachtet werden, da Pfade intern wieder komplett aufgelöst werden, viele Plugins nehmen feste Pfadangaben. Zum Starten von Enigma2 einfach ./bin/enigma2 ausführen. Sofern man nicht mit root Rechten arbeitet wird noch ein sudo vorne dran gehangen. Sollte sich Enigma aufhängen, so einmal eine Kanallisten ins Verzeichnis /etc/enigma2. Ein Beispiel Liste findet sich hier: Matze Settings Astra und Astra+Hotbird.

Stuerung

Zur Steuerung sollte man den Fokus nicht auf das Enigma Fenster legen, sonst wird jeder Tastendruck doppelt ausgewertet. Den Fokus einfach auf die Konsole legen. Die üblichen Tasten der Fernbedienung findet man auf der Tastatur wie folgt wieder:

  • Menü: Leertaste
  • Extensionmenü: b
  • rote Taste: r
  • blaue Taste: b
  • gelbe Taste: y
  • grüne Taste: g
  • OK: enter
  • Exit: ESC

Installation

Inhalt der README Datei

To build enigma2 on Ubuntu 10.04, follow these steps:
 
0.) Consider using OE to build it for a Dreambox instead.
 
    To build this version for a Dreambox, you will need
    a recent OE (branch "opendreambox-1.6" will do, but "3.0" won't)
    or at least a backported BitBake recipe from there.
 
    See http://opendreambox.org/.
 
    Stop reading here. It's not very useful for most people
    to build enigma2 for a PC.
 
1.) Install these packages:
 
autoconf
automake
build-essential
gettext
libdvdnav-dev
libfreetype6-dev
libfribidi-dev
libgif-dev
libgstreamer0.10-dev
libgstreamer-plugins-base0.10-dev
libjpeg62-dev
libpng12-dev
libsdl1.2-dev
libsigc++-1.2-dev
libtool
libxml2-dev
libxslt1-dev
python-dev
swig
 
2.) Build and install libdvbsi++:
 
git clone git://git.opendreambox.org/git/obi/libdvbsi++.git
cd libdvbsi++
dpkg-buildpackage -uc -us
cd ..
sudo dpkg -i libdvbsi++*.deb
 
3.) Build and install libxmlccwrap:
 
git clone git://git.opendreambox.org/git/obi/libxmlccwrap.git
cd libxmlccwrap
dpkg-buildpackage -uc -us
cd ..
sudo dpkg -i libxmlccwrap*.deb
 
4.) Build and install libdreamdvd:
 
git clone git://schwerkraft.elitedvb.net/libdreamdvd/libdreamdvd.git
cd libdreamdvd
dpkg-buildpackage -uc -us
cd ..
sudo dpkg -i libdreamdvd*.deb
 
5.) Build and install enigma2:
 
git clone git://git.opendreambox.org/git/enigma2.git
cd enigma2
autoreconf -i
./configure --prefix=$HOME/enigma2 --with-libsdl
make
make install

Disqus - noscript

Nice commenting system

Hallo, schönes Tutorial.

Nur bei mir bricht make hiermit ab:
servicemp3.cpp: In member function âvoid eServiceMP3::gstBusCall(GstBus*, GstMessage*)â:servicemp3.cpp:1396: error: invalid conversion from âconst GstStructure*â to âGstStructure*âservicemp3.cpp:1396: error:   initializing argument 1 of âgboolean gst_structure_get(GstStructure*, const char*, ...)âmake[3]: *** [servicemp3.o] Fehler 1make[2]: *** [all-recursive] Fehler 1make[1]: *** [all-recursive] Fehler 1make: *** [all] Fehler 2

bis dahin läuft alles top. Weiß jemand Hilfe?

Ich habe es schon auf zwei Systemen versucht, jedoch immer mit diesem Fehler hier:
In file included from ../../lib/base/ebase.h:12:0,                 from ebase.cpp:1:../../lib/base/eptrlist.h: In Instanziierung von »ePtrList<t>::iterator ePtrList<t>::insert_in_order(T*) [with T = eTimer]«:ebase.cpp:309:32:   von hier erfordert../../lib/base/eptrlist.h:177:96: Fehler: »insert« wurde in diesem Gültigkeitsbereich nicht deklariert, und bei argumentabhängiger Suche am Ort der Instanziierung wurden keine Deklarationen gefunden [-fpermissive]../../lib/base/eptrlist.h:177:96: Anmerkung: Deklarationen in abhängiger Basis »std::list<etimer*, std::allocator<etimer*=""> >« wurden bei unqualifizierter Suche nicht gefunden../../lib/base/eptrlist.h:177:96: Anmerkung: stattdessen »this->insert« verwendenmake[3]: *** [ebase.o] Fehler 1

Hat irgendwer eine Lösung für das Problem?</etimer*,></t></t>