C't-VDR - GraphLCD mit Serdisplib

Aus VDR Wiki
Wechseln zu: Navigation, Suche

Serielle Displays (z.B. Optrex323) über die Bibliothek "Serdisplib" ansprechen
- getestet unter folgenden Versionen: vdrdevel-plugin-graphlcd_0.1.1-28 / serdisplib-1.95
- an einer neuen Version der Serdisplib (1.96) und der Debianisierung der graphlcd_0.1.2 wird derzeit gearbeitet


Optrex323-Besitzer: Hier empfehle ich trotz nun schon vorhandener Version 0.1.3 bei Version 0.1.1 zu bleiben, weil es dort NICHT zu folgendem Anzeigefehler kommt: Ist der Zeitbalken aktiv, ist keine freie Pixelreihe mehr zwischen der Zeit, von wann bis wann eine Sendung geht und dem Sendernamen. Der Grund hierfür ist, dass offenbar seit Version 0.1.2 der Rahmen um den Sendernamen unten eine Pixelreihe mehr hat (vier statt drei), was bei 128x64 Displays kein Problem darstellt. Desweiteren hat man viel mehr Einstellmöglichkeiten für dieses Display im OSD als bei den neueren Versionen.


HowTo

Tobi's Source-Repositories in die Datei /etc/apt/sources.list eintragen: (auch möglich über "apt-setup")

deb-src  http://www.e-tobi.net/vdrdevel/sarge/experimental/ source vdr/
deb-src  http://www.e-tobi.net/vdrdevel/sarge/experimental/ source addons/
deb-src  http://www.e-tobi.net/vdrdevel/sarge/experimental/ source backports/
deb-src  http://www.e-tobi.net/vdrdevel/sarge/experimental/ source base/

Wenn die Datei von Hand editiert wurde "apt-get update" nicht vergessen.


Benötigte Pakete installieren:

apt-get install libgd-dev
apt-get install wget
apt-get install vdrdevel-dev
apt-get install vdrdevel-plugin-graphlcd
apt-get build-dep vdrdevel-plugin-graphlcd


Ordner für die Quellen anlegen:

cd
mkdir graphlcd_serdisplib
cd graphlcd_serdisplib


Benötigte Quellen downloaden und Serdisplib-Bibliothek installieren:

wget http://mesh.dl.sourceforge.net/sourceforge/serdisplib/serdisplib-1.95.tar.gz
tar -xvzf serdisplib-1.95.tar.gz
cd serdisplib-1.95
./configure
make all
make install
cd ..
apt-get source vdrdevel-plugin-graphlcd
dpkg-source -x vdrdevel-plugin-graphlcd_0.1.1-28.dsc


Makefiles des GraphLCD-Plugins bearbeiten:

cd vdrdevel-plugin-graphlcd-0.1.1
vi ./Makefile
...
# uncomment this for dynamic linking
STATIC_DRIVERS=1


### Allow user defined options to overwrite defaults:

--> Hier muss noch rein:  INCLUDE_SERDISPLIB=1

-include $(VDRDIR)/Make.config
ifdef INCLUDE_SERDISPLIB
DEFINES += -DINCLUDE_SERDISPLIB
endif # INCLUDE_SERDISPLIB
...
cd drivers
vi Makefile
...
INCLUDES += -I$(VDRDIR)/include

OBJS = device.o drivers.o fct.o port.o simlcd.o gu140x32f.o ...

--> Hier muss ebenfalls rein:  INCLUDE_SERDISPLIB=1

-include $(VDRDIR)/Make.config
ifdef INCLUDE_SERDISPLIB
DEFINES += -DINCLUDE_SERDISPLIB
...
cd ..


Kompilieren und Installieren des GraphLCD-Plugins:

dpkg-buildpackage -us -uc -tc -fakeroot
dpkg -i ../vdrdevel-plugin-graphlcd_0.1.1-28_i386.deb

Falls nicht auf dem VDR-System kompiliert wird, muss die .deb Datei natürlich erst mit "scp" auf den VDR-PC kopiert und dort installiert werden!


Konfiguration mittels /etc/vdrdevel/plugins/plugin.graphlcd.conf:

Hier wird dem Plugin mitgeteilt, welchen Treiber es laden muss. Mit "Optrex323" (Groß- und Kleinschribung ist egal) übergibt das Plugin die
Ansteuerung des LCDs an die /usr/local/lib/libserdisp.so.

-c optrex323 -d /dev/parport0

Die Angabe weiterer Parameter (x=117 y=62 etc.) ist hier nicht nötig, weil diese als defaults gesetzt sind
(siehe ./drivers/serdisp.c: "if (strcasecmp("OPTREX323", drivername) == 0) {dsizex = 117; dsizey = 62; ...").
Bitte ebenfalls beachten, dass evtl. die Module "parport", "parport_pc" und "ppdev" noch geladen bzw. in die
Datei /etc/modules.conf (automatisches Laden beim Booten) eingetragen werden müssen.


Neustart des vdrdevel:

/etc/init.d/vdrdevel restart

Die in der conf-Datei eingetragenen Parameter sollten dem vdrdevel nun beim Laden des GraphLCD-Plugins eins-zu-eins übergeben worden sein.
Überprüft werden kann dies mit dem Aufruf:

ps -elf | grep vdrdevel

Mögliche Fehler werden ggf. hier ausgegeben:

/var/log/syslog
/var/log/messages
/tmp/vdrdevel-err.*



Vielen Dank an Tobias Grimm und Wolfgang Astleitner für ihre hervorragende Arbeit!