Table of Contents

LCD4Linux-TUTORIAL

(basierend auf lcd4linux 0.10.0)

LCD4Linux ist ein kleines Programm, das Informationen von Kernel und Subsystemen sammelt und auf einem externen Display ausgibt.

Dieses Tutorial ist für den Schnelleinstieg gedacht und soll eine Hilfestellung bei der Installation und Konfiguration von LCD4Linux bieten.


INSTALLATION

Installation von den Sourcen:

Zuerst muss das tar-Paket von einem der Sourceforge-Mirrors heruntergeladen werden, z.B.

http://prdownloads.sourceforge.net/lcd4linux/lcd4linux-0.10.0.tar.gz?download

Anschließend wird das Paket in der Konsole entpackt, dadurch wird ein Ordner namens lcd4linux-0.10.0 angelegt:

tar xvzf lcd4linux-0.10.0.tar.gz

Nachdem man mit “cd lcd4linux-0.10.0” in den neuen Ordner hineingewechselt ist, kompiliert man die Sourcen mit folgenden Befehlen:

./configure
make
make install        *)

Hinweis: Die Angabe von “./” beim Configure-Befehl ist notwendig, wenn das aktuelle Verzeichnis nicht im Pfad ist.

Während des Abarbeitens des Configure-Befehls (das kann eine Zeit lang dauern!), werden einige Status-Meldungen an der Konsole ausgegeben. Kommt es zu Fehlermeldungen, so sind diese zur Fehlersuche in der Datei configure.log nachzulesen.

Der Configure-Befehl versucht, automatisch alle benötigten Bibliotheken und Header zu finden und bei Nichtvorhandensein die entsprechenden Treiber zu deaktivieren. Leider funktioniert das nicht immer zuverlässig. In diesem Fall kann man auch manuell nur den benötigten Treiber einbinden:

./configure –-with-drivers=HD44780

Eine Liste der verfügbaren Treiber erhält man mit

./configure --help

Standardmäßig legt “make install” die Dateien unter “/usr/local/bin”, “/usr/local/lib” etc. ab.

*) unter Debian ist ein “checkinstall” einem “make install” vorzuziehen. Dieses erzeugt aus den Sourcen ein deb-Paket, welches mit “lcd4linux_lcd4linux-1_i386.deb” installiert werden kann und damit einen späteren Löschvorgang des Programms erleichtert.

Installation über SVN (Subversion):

Um Zugriff auf das SVN-Repository zu erhalten, muss im System erst ein Subversion-Client installiert werden. Möchte man die aktuellste LCD4Linux-Version verwenden, kann man anonym (d.h. nur lesend, ohne Schreibrecht) auf die SVN-Quellen zugreifen:

svn co https://ssl.bulix.org/svn/lcd4linux/trunk lcd4linux

Damit wird ein Verzeichnis „lcd4linux“ angelegt, das die aktuelle Version der Sourcen aus dem Subversion-Repository enthält. Um den Inhalt zu aktualisieren (was man regelmässig tun sollte), wechselt man in das Verzeichnis und gibt folgendes ein:

svn up

Nachdem man sich die neuesten Sourcen geholt hat, muß man diese natürlich auch wieder kompilieren:

./configure
make
make install

(Details dazu siehe weiter oben)

'''Installation va apt“” Einfach:

sudo apt install lcd4linux

KONFIGURATION

Die Konfiguration von LCD4Linux erfolgt in der Datei /etc/lcd4linux.conf. Mit der Version 0.10 hat sich das Format der Datei sehr verändert und ist damit wesentlich flexibler geworden.\

Hat man von den Sourcen installiert, kopiert man am besten die lcd4linux.conf.sample aus dem Source-Verzeichnis nach /etc/lcd4linux.conf und passt diese an das betreffende Display an.

Aus Sicherheitsgründen darf die Datei lcd4linux.conf nur die Rechte des LCD4Linux-Benutzers haben, denn die Konfiguration könnte Benutzernamen/Passwörter für Mailaccounts beinhalten. Die Gruppe oder Andere dürfen nicht lesen und schreiben, sonst verweigert LCD4Linux den Dienst! \

Wenn das Programm als root gestartet wird, müssen die Rechte also folgendermaßen gesetzt sein:

chmod 600 /etc/lcd4linux.conf
chown root.root /etc/lcd4linux.conf

Beispiel-Konfiguration:

Display HD44780-20x2 {
    Driver  'HD44780'
    Model   'generic'
    UseBusy  1
    Port    '/dev/parport0'	
    Size    '20x2'
    Wire {
	RW      'AUTOFD'
	RS      'INIT'
	ENABLE  'STROBE'
	ENABLE2 'GND'
	GPO     'GND'
    }
}

Widget CPU {
    class      'Text'
    expression  uname('machine')
    prefix     'CPU '
    width       9
    align      'L'
    update      tick
}

Layout Default {
    Row1 {
        Col1 'CPU'
    }
}

Variables {
   tick 500
}

Display 'HD44780-20x2'
Layout  'Default'

Display-Abschnitte definieren Display-Treiber (im Beispiel ein HD44780-Display mit 20×2 Zeichen). \

Widget-Abschnitte definieren, was und wie es angezeigt wird. \

Layout-Abschnitte bestimmen, welches Widget wo angezeigt wird. \

Der Variables-Abschnitt definiert Variablen.\

Die Display-Zeile legt das zu verwendende Display fest. \

Die Layout-Zeile legt das Standard-Layout fest. \

Im obigen Beispiel wird in der ersten Zeile die CPU des Systems angezeigt.

Alle Konfigurationsoptionen sind im LCD4Linux-Manual genau dokumentiert. Des weiteren sind in der Datei lcd4linux.conf.sample schon einige Beispielkonfigurationen (auskommentiert) enthalten.


AUFRUF

Die Befehle “which lcd4linux” bzw. “whereis lcd4linux” zeigen die genauen Pfade zu LCD4Linux an.

LCD4Linux kann zum Testen mit “lcd4linux -Fvv” gestartet werden (die Optionen braucht man später nicht mehr, wenn alles funktioniert).

LCD4Linux-Optionen:

lcd4linux [[:-c|key=val]] [[:-F]] [[:-f|config-file]] [[:-i[i]]] [[:-o|output]] [[:-q]] [[:-v]]
-c key=valEinträge der Konfigurationsdatei überschreiben (Schlüssel und Wert angeben)
-FNicht als Dienst starten
-f config-fileKonfiguration aus 'config-file' holen statt aus /etc/lcd4linux.conf
-inach der Display-Initialisierung zum 'interaktiven Modus' wechseln
-iivor der Display-Initialisierung zum 'interaktiven Modus' wechseln
-o outputBild in Datei schreiben (nur Raster-Treiber)
-qBegrüßungstext unterdrücken
-vAusgabe von Debug-Informationen
-vvAusgabe von mehr Debug-Informationen
-hAusgabe der Versionsnummer und eines kurzen Hilfetextes
-lAnzeige aller verfügbaren Treiber

Automatisches Starten beim Booten:

Man legt einen Startskript “/etc/init.d/lcd4linux” an und erzeugt die gewünschten Runlevel-Einträge per Hand, z.B. mit “ln -s /etc/init.d/lcd4linux /etc/rc5.d/S99lcd4linux”.

Beispiel für einen Startskript:

#! /bin/sh
#
# lcd4linux
#
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin
DAEMON=/usr/local/bin/lcd4linux
NAME=lcd4linux
DESC=lcd4linux
test -f $DAEMON | exit 0
set -e
case "$1" in
  start)
	echo -n "Starting $DESC: "
	start-stop-daemon --start --quiet --pidfile /var/run/$NAME.pid --exec $DAEMON
	echo "$NAME."
	;;
  stop)
	echo -n "Stopping $DESC: "
	start-stop-daemon --oknodo --stop --quiet --pidfile /var/run/$NAME.pid --exec $DAEMON
	echo "$NAME."
	;;
  reload)
	start-stop-daemon --stop --signal 1 --quiet --pidfile /var/run/$NAME.pid --exec $DAEMON
  	;;
  restart|force-reload)
	echo -n "Restarting $DESC: "
	start-stop-daemon --stop --quiet --pidfile /var/run/$NAME.pid --exec $DAEMON
	sleep 1
	start-stop-daemon --start --quiet --pidfile /var/run/$NAME.pid --exec $DAEMON
	echo "$NAME."
	;;
  *)
	N=/etc/init.d/$NAME
	echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2
	exit 1
	;;
esac
exit 0

Alternativ könnte man den Aufruf von LCD4Linux auch in die Datei /etc/init.d/boot.local eintragen.


HD44780 Beschaltung

95% aller Probleme bei Displays am Parallelport sind auf eine falsche Beschaltung zurückzuführen! Es gibt nämlich keinen “Standard”, nach dem die Beschaltung ausgeführt werden soll. Deshalb unterstützt LCD4Linux das sogenannte “Soft-Wiring”, d.h. man kann (fast) jede beliebige Beschaltung verwenden. Man muß diese nur in der lcd4linux.conf angeben. Ein HD44780-Display hat normalerweise 16 Anschlüsse (sind nur 14 vorhanden, fehlen die beiden letzten Anschlüsse für die Hintergrundbeleuchtung). Diese haben folgende Bedeutung:

PinNameKommentar
1GNDMasse
2VCCVersorgungsspannung +5V
3LCD_DRIVEKontrastspannung
4RSRegister Select
5R/WRead/Write
6ENABLEDaten übernehmen
7DB0Daten Bit 0
8DB1Daten Bit 1
9DB2Daten Bit 2
10DB3Daten Bit 3
11DB4Daten Bit 4
12DB5Daten Bit 5
13DB6Daten Bit 6
14DB7Daten Bit 7
15BACKLIGHTHintergrundbeleuchtung
16BL GNDHintergrundbeleuchtung

Der Parallelport hat 25 Anschlüsse:

PinNameI/O
1STROBEOut
2DB0I/O
3DB1I/O
4DB2I/O
5DB3I/O
6DB4I/O
7DB5I/O
8DB6I/O
9DB7I/O
10ACKIn
11BUSYIn
12PAPEROUTIn
13SELECTIn
14AUTOFDOut
15ERRORIn
16INITOut
17SLCTINOut
18-25GNDn/a

Die Datenleitungen DB0 bis DB7 werden immer 1:1 miteinander verbunden (ausser man verwendet den 4-Bit-Modus - aber das ist eher etwas für Experten, und die lesen dieses Tutorial sowieso nicht :-). Interessant ist jetzt, wie die Steuerleitungen vom Display mit den 4 möglichen Ausgängen vom Parallelport verbunden sind:

Display:

Pin 4: RS (Register Select)
Pin 5: R/W (Read/Write)
Pin 6: Enable

Parallelport:

Pin 1: Strobe
Pin 14: AutoFD
Pin 16: Init
Pin 17: SelectIn

Für jede der Display-Steuerleitungen muß man angeben, welches Signal des Parallelports dafür verwendet wird. Dies geschieht mit Hilfe der “Wire.xy”-Einträge.

Wenn man z.B. die weitverbreitete WinAmp-Beschaltung verwendet, sieht das so aus:

Display Pin 4 (RS)     => Parallelport Pin 16 (Init)
Display Pin 5 (R/W)    => Parallelport Pin 14 (AutoFD)
Display Pin 6 (Enable) => Parallelport Pin 1  (Strobe)

Die dazupassenden Soft-Wiring-Einträge müssen lauten:

Wire.RW        'AUTOFD'
Wire.RS        'INIT'
Wire.ENABLE    'STROBE'
Wire.ENABLE2   'GND'
Wire.BACKLIGHT 'GND'
Wire.GPO       'GND'

Anschlussbeispiel:

Wenn du ein Standard-HD44780-Display an deinen Parallelport anschliessen willst, und die WinAmp-Beschaltung verwenden willst, mach's wie folgt:

LCDParallel PortStromversorgungKontrast-Potentiometer (10k)
Pin 1Pin 18MassePin 1
Pin 2-+5VPin 3
Pin 3- Pin 2 (Abgreifer)
Pin 4Pin 16
Pin 5Pin 14
Pin 6Pin 1
Pin 7Pin 2
Pin 8Pin 3
Pin 9Pin 4
Pin 10Pin 5
Pin 11Pin 6
Pin 12Pin 7
Pin 13Pin 8
Pin 14Pin 9
Pin 15-100 Ohm Widerstand an +5V
Pin 16-Masse

TROUBLESHOOTING

Probleme beim Kompilieren:

z.B. Fehlermeldung

#error "gd.h not found!"
make: *** [[:Raster.o]] Error 1

Abhilfe: configure –with-drivers=all,\!PNG

Probleme beim Aufruf: