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=val | Einträge der Konfigurationsdatei überschreiben (Schlüssel und Wert angeben) |
-F | Nicht als Dienst starten |
-f config-file | Konfiguration aus 'config-file' holen statt aus /etc/lcd4linux.conf |
-i | nach der Display-Initialisierung zum 'interaktiven Modus' wechseln |
-ii | vor der Display-Initialisierung zum 'interaktiven Modus' wechseln |
-o output | Bild in Datei schreiben (nur Raster-Treiber) |
-q | Begrüßungstext unterdrücken |
-v | Ausgabe von Debug-Informationen |
-vv | Ausgabe von mehr Debug-Informationen |
-h | Ausgabe der Versionsnummer und eines kurzen Hilfetextes |
-l | Anzeige 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:
Pin | Name | Kommentar |
1 | GND | Masse |
2 | VCC | Versorgungsspannung +5V |
3 | LCD_DRIVE | Kontrastspannung |
4 | RS | Register Select |
5 | R/W | Read/Write |
6 | ENABLE | Daten übernehmen |
7 | DB0 | Daten Bit 0 |
8 | DB1 | Daten Bit 1 |
9 | DB2 | Daten Bit 2 |
10 | DB3 | Daten Bit 3 |
11 | DB4 | Daten Bit 4 |
12 | DB5 | Daten Bit 5 |
13 | DB6 | Daten Bit 6 |
14 | DB7 | Daten Bit 7 |
15 | BACKLIGHT | Hintergrundbeleuchtung |
16 | BL GND | Hintergrundbeleuchtung |
Der Parallelport hat 25 Anschlüsse:
Pin | Name | I/O |
1 | STROBE | Out |
2 | DB0 | I/O |
3 | DB1 | I/O |
4 | DB2 | I/O |
5 | DB3 | I/O |
6 | DB4 | I/O |
7 | DB5 | I/O |
8 | DB6 | I/O |
9 | DB7 | I/O |
10 | ACK | In |
11 | BUSY | In |
12 | PAPEROUT | In |
13 | SELECT | In |
14 | AUTOFD | Out |
15 | ERROR | In |
16 | INIT | Out |
17 | SLCTIN | Out |
18-25 | GND | n/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:
LCD | Parallel Port | Stromversorgung | Kontrast-Potentiometer (10k) |
Pin 1 | Pin 18 | Masse | Pin 1 |
Pin 2 | - | +5V | Pin 3 |
Pin 3 | - | Pin 2 (Abgreifer) | |
Pin 4 | Pin 16 | ||
Pin 5 | Pin 14 | ||
Pin 6 | Pin 1 | ||
Pin 7 | Pin 2 | ||
Pin 8 | Pin 3 | ||
Pin 9 | Pin 4 | ||
Pin 10 | Pin 5 | ||
Pin 11 | Pin 6 | ||
Pin 12 | Pin 7 | ||
Pin 13 | Pin 8 | ||
Pin 14 | Pin 9 | ||
Pin 15 | - | 100 Ohm Widerstand an +5V | |
Pin 16 | - | Masse |
TROUBLESHOOTING
Probleme beim Kompilieren:
- Berechtigungsprobleme? als root-Benutzer installieren
- Fehler in der Datei configure.log? andere Configure-Optionen testen
z.B. Fehlermeldung
#error "gd.h not found!" make: *** [[:Raster.o]] Error 1
Abhilfe: configure –with-drivers=all,\!PNG
Probleme beim Aufruf:
- sind die Rechte auf /etc/lcd4linux.conf richtig gesetzt?
- wird das Display beim Aufruf von LCD4Linux initialisiert?
- LCD4Linux mit den Optionen “-Fvvq” aufrufen und Debug-Ausgabe verfolgen
- Syntax in lcd4linux.conf kontrollieren