Subsections


1.1 LCD - Anzeige von Statusinformationen über LC-Display

1.1.1 Einleitung

Mit diesem Paket ist es möglich, ein LCD-Modul an den Parallelport des fli4l Rechners anzuschließen. Auch können nun serielle LCD-Module der Firma Matrix-Orbital verwendet werden. Es gibt ausserdem Filter für spezielle Displays.

Auf diesem Display werden Informationen wie Datum, Uhrzeit, die aktuellen Loadwerte und natürlich auch der ISDN- oder DSL-Durchsatz für Up- und Download in kb/s und ein Balken angegeben.


1.1.2 Konfiguration

Möchte man das LCD-Paket einsetzen, sind noch folgende Variablen zu setzen:

        OPT_LCD='yes'  (Standard-Einstellung: OPT_LCD='no')

LCD_COLS
- Anzahl der Zeichen pro Zeile. Das Kernelmodul unterstützt momentan Werte von 16, 20, 24, 32 und 40. Module mit 8 oder 27 Zeichen funktionieren üblicherweise ebenfalls. Am Kernelmodul wird dann von fli4l 16 bzw. 40 übergeben.

LCD_LINES
- Anzahl der Zeilen.

Mögliche Werte: 1, 2 und 4.

Achtung: Displays am Parallelport mit zwei Controllerchips (4x16, 4x40 etc.) müssen hier mit 2 Zeilen definiert werden! Die Koordinaten der anzuzeigenden Werte können normal angegeben werden. Der LCD-Treiber entscheidet anhand der Koordinate und der Anzahl der Zeilen, welcher der beiden Kontroller anzusprechen ist.

LCD_ADDRESS

Die IO-Adresse des LPT-Ports, z.B. '0x278'

Wird ein serielles Display von Matrix-Orbital verwendet, ist hier die verwendete serielle Schnittstelle einzutragen, z.B. 'com1' oder 'com2'. Mit 'none' kann man LAN-Only einstellen, siehe: LCD_LANIP

Es ist möglich, die Ausgabe auf den Bildschirm auszugeben: 'console' oder tty1 wählen den Hauptbildschirm. Dies kann allerdings zur Vermischung mit den normalen Ausgaben führen und ist daher nicht zu empfehlen. 'tty2', 'tty3' ... 'tty9' selektieren andere virtuelle Konsolen, die mit ALT-F2 ... zu erreichen sind. ALT-F1 schaltet dann wieder auf den Hauptbildschirm zurück.


Wichtig: Bisher wurden nur parallele Schnittstellen auf dem Mainboard oder auf ISA-Schnittstellenkarten unterstützt. PCI-Karten mit parallelen Schnittstellen konnten nicht verwendet werden. Diese Version hier erlaubt auch die Konfiguration von parallelen Schnittstellen auf bestimmten PCI-Karten mit NETMOS-Chips. Hier zu muss man sich mittels

        cat /proc/pci

die erkannten PCI-Geräte anzeigen lassen. Hier sucht man das Gerät mit der passenden Vendor-ID und Device-ID und wählt als io-Adresse den oder die folgenden Einträge aus:

Die Konfigurationsmöglichkeit wurde eingebaut, ohne entsprechende Hardware zum Testen zur Verfügung zu haben. Daher ist das als experimentelles Feature zu betrachten. Bei Fehlern bitte ausführliche Informationen in die Newsgroup posten!

LCD_LANIP
(optionale Variable)

Die IP-Adresse eines 16x2 Displays an einem Pollin AVR-NET-IO im LAN oder andere Displays an ethersex - siehe weitere Variablen (experimentell)

LCD_LANTYPE
(optionale Variable)

Typ der Firmware. Zur Auswahl stehen: 'pollin' (default) - Original-Firmware AVR-NET-IO 'ethersex' - Firmware von www.ethersex.de mit aktivem LCD

LCD_LANUSER
(optionale Variable)

Authentifizierung am ethersex, wenn PAM auf ecmd/tcp konfiguriert wurde. Hier: Benutzername

LCD_LANPASS
(optionale Variable)

Passwort zu LCD_LANUSER

LCD_TIME_LONG LCD_TIME_SHORT

Dieses sind zwei Timer-Werte für den IO-Port zum LCD-Display. Werden die Variablen leer gelassen, gelten folgende Standardwerte:

        LCD_TIME_LONG='100'
        LCD_TIME_SHORT='40'

Sollte es Probleme mit dem LCD-Display geben, z.B. wenn wild verteilte Zeichen erscheinen, sollte man diese Werte erhöhen, z.B.

        LCD_TIME_LONG='120'
        LCD_TIME_SHORT='60'

Bei seriellen Displays von Matrix-Orbital sind diese Variablen ohne Bedeutung

LCD_ADDR_TYPE
- Adressierungsart des LCD-Controllers.

        LCD_ADDR_TYPE='0'     # Fuer HD44780 und kompatible Kontroller
        LCD_ADDR_TYPE='1'     # Fuer HD66712 und kompatible Kontroller
        LCD_ADDR_TYPE='2'     # Obsolet, Funktionalität ist jetzt
                              # in '0' eingebaut

Bei seriellen Displays von Matrix-Orbital ist diese Variable ohne Bedeutung

LCD_WINAMP

Es existieren verschiedene Verdratungsvarianten bei fertig bestückten LCD-Displays von Kernel-Concepts, die normale und die Winamp-Verdrahtung. Neuere Displays kommen mit letzterer Variante, dann muss hier ein yes eingetragen werden.

LCD_FILTER

- Filter für spezielle Displays. Zur Zeit gibt es Filter für - ipc_a78 Displays

        LCD_FILTER='mo2ipc_a78'     # Fuer mo2ipc_a78 Displays

LCD_START_MSG

Die hier eingetragene Meldung wird beim Systemstart kurz nach Laden der Treiber auf das Display ausgegeben. Sie sollte die Länge einer Zeile nicht überschreiten, da anderenfalls die vollständige Ausgabe des Textes nicht garantierte werden kann.

LCD_STOP_MSG

Die hier eingetragene Meldung wird beim Herunterfahren des Systems auf das Display ausgegeben. Sie sollte die Länge einer Zeile nicht überschreiten, da anderenfalls die vollständige Ausgabe des Textes nicht garantierte werden kann.

LCD_REBOOT_MSG

Die hier eingetragene Meldung wird beim Rebooten des Systems auf das Display ausgegeben. Sie sollte die Länge einer Zeile nicht überschreiten, da anderenfalls die vollständige Ausgabe des Textes nicht garantierte werden kann.

LCD_START_ISDN_RATE

Gibt an, ob das Programm isdn_rate gestartet werden soll.

LCD_TYPE_N

Ulf Lanz hat das Ausgabeformat im isdn_rate-Programm so variabel gestaltet, dass jeder Anwender die Anzeige seinen Wünschen gemäß zusammenstellen kann.

Bei LCD_TYPE_N ist die Anzahl der auszugebenden Datentypen anzugeben. Diese Datentypen werden immer angezeigt, egal ob man Online oder Offline ist.

LCD_TYPE_x

LCD_TYPE_x gibt den Datentyp, die Spalte und die Zeile an, wo die gewünschte Information auf dem Display erscheinen soll. Der Datentyp ist numerisch codiert. Die möglichen Werte sind in Table 1.1 aufgeführt.


Table 1.1: Übersicht über mögliche Werte für LCD_TYPE_x
Typ Information Zeichenbreite
0 local date dd.mm.yyyy 10
1 local date dd.mm.yy 8
2 local time hh:mm:ss 8
3 remote date dd.mm.yyyy 10
4 remote date dd.mm.yy 8
5 remote time hh:mm:ss 8
6 isdn status channel 1 7
7 isdn status channel 2 7
8 dsl status 7
9 isdn circuit name channel 1 16
10 isdn circuit name channel 2 16
11 dsl circuit name 16
12 isdn input rate bar 8
13 isdn output rate bar 8
14 dsl input rate bar 8
15 dsl output rate bar 8
16 isdn input rate 5
17 isdn output rate 5
18 dsl input rate 5
19 dsl output rate 5
20 isdn charge channel 1 6
21 isdn charge channel 2 6
22 dsl charge 6
23 isdn ip address channel 1 15
24 isdn ip address channel 2 15
25 dsl ip address 15
26 load 1 5
27 load 2 5
28 phone 16
29 isdn online time channel 1 8
30 isdn online time channel 2 8
31 dsl online time 8
32 isdn quantity in channel 1 8
33 isdn quantity in channel 2 8
34 dsl quantity in 8
35 isdn quantity out channel 1 8
36 isdn quantity out channel 2 8
37 dsl quantity out 8
38 cpu usage 4
39 fixed text max 20
40 text -> /etc/lcd_text1.txt max 20
41 text -> /etc/lcd_text2.txt max 20
42 text -> /etc/lcd_text3.txt max 20
43 text -> /etc/lcd_text4.txt max 20
44 router uptime 10


Die beiden nächsten Zahlen in LCD_TYPE_1 geben die Position an. Format: ``Spalte Zeile'', wobei beide Zahlen bei 0 beginnen.

Beispiel:

        LCD_TYPE_1='4 10 1'   # Status in der 2. Zeile, ab Spalte 11
                    | |  |
                    | |  \--    Zeile im Display 
                    | \-----    Spalte im Display
                    \-------    Anzeigentyp laut Tabelle

Für Type 39 (fixed text) ist obiges Format noch um den Text zu erweitern der angezeigt werden soll.

Beispiel:

        LCD_TYPE_2='39 10 1 Hallo'   # Text "Hallo" in der 2. Zeile 
                                     # ab Spalte 11

Die Typen 40 - 43 holen sich den Text, der angezeigt werden soll, aus den Dateien, die in der Typenliste erwähnt sind. Diese Dateien werden während der Laufzeit jede Sekunde eingelesen und angezeigt. Sie können von anderen Programmen (z.B. telmond) geändert werden. Damit kann man sich z.B. auf dem Display anzeigen lassen, dass man neue E-Mails hat, auch wenn man Offline ist (MyJack). Die Standardtexte für die Datentypen 40-43 werden mit folgenden Variablen definiert (und beim Starten des Systems in temporärren Dateien zwischengespeichert, deren Namen einfach immer durch Einfügen des Indizes in die Zeichenkette ``/etc/lcd_text<Zahl>.txt'' definiert wird):

        LCD_VAR_TEXT_1='Text 1'  # -> /etc/lcd_text1.txt
        LCD_VAR_TEXT_2='Text 2'  # -> /etc/lcd_text2.txt
        LCD_VAR_TEXT_3='Text 3'  # -> /etc/lcd_text3.txt
        LCD_VAR_TEXT_4='Text 4'  # -> /etc/lcd_text4.txt

Ab der Version 1.6.2 ist es auch möglich, in Abhängigkeit vom Onlinestatus verschiedene Texte anzeigen zu lassen. Z.B. kann nun während man Online ist, die aktuelle Onlinezeit angezeigt werden und wenn man Offline ist, wird an gleicher Stelle das Datum und die Uhrzeit angezeigt. Dafür sind folgende Variablen hinzugekommen:

LCD_TYPE_ONLINE_N

Bei LCD_TYPE_ONLINE_N ist die Anzahl der auszugebenden Datentypen anzugeben. Diese Datentypen werden nur angezeigt wenn man Online ist.

LCD_TYPE_ONLINE_x

LCD_TYPE_ONLINE_x gibt den Datentyp, die Spalte und die Zeile an, wo die gewünschte Information auf dem Display erscheinen soll. Der Datentyp ist numerisch codiert. Das Format und die Typen entsprechen denen aus der Tabelle bei 'LCD_TEXT_x'.

Beispiel:

        LCD_TYPE_ONLINE_1=' 8  0 0'     # dsl status

LCD_TYPE_OFFLINE_N

Bei LCD_TYPE_OFFLINE_N ist die Anzahl der auszugebenden Datentypen anzugeben. Diese Datentypen werden nur angezeigt wenn man Offline ist.

LCD_TYPE_OFFLINE_x

LCD_TYPE_OFFLINE_x gibt den Datentyp, die Spalte und die Zeile an, wo die gewünschte Information auf dem Display erscheinen soll. Der Datentyp ist numerisch codiert. Das Format und die Typen entsprechen denen aus der Tabelle bei 'LCD_TEXT_x'.

Beispiel:

        LCD_TYPE_OFFLINE_1=' 0  0 0'  # local date

LCD_DSL_SPEED_IN LCD_DSL_SPEED_OUT
LCD_DSL_SPEED_IN und LCD_DSL_SPEED_OUT dienen zur Skalierung der Balkenanzeige (Typen 14 und 15). Hier werden die maximalen Übertragungsraten der DSL-Verbindung angegeben. Prinzipiell kann jeder ganzzahlige Wert angegeben werden. Es kann sogar sinnvoll sein, etwas höhere Werte anzugeben, um ein '+' in der letzten Stelle zu vermeiden. Bitte auch beachten, dass die tatsächliche Rate etwas höher als der Name des Anschlusses sugeriert, also DSL1000 hat eine Downloadrate (inbound) von 1024 kilobits/s.

Beispiel für DSL-Verbindung mit 1024/128 kilobit/s:

        LCD_DSL_SPEED_IN='1024' # Bitrate for DSL inbound
        LCD_DSL_SPEED_OUT='128' # Bitrate for DSL outbound

Für ISDN sind die Werte nicht relevant.

1.1.3 isdn_rate

Das Programm isdn_rate ist der eigentliche Kern des LCD-Paketes. Es erfasst den Status der Circuits und gibt die in der Konfigurationsdatei festgelegten Datentypen an den entsprechenden Positionen im LCD aus. isdn_rate wird wie folgt aufgerufen:

 isdn_rate [-ip router-ip] [-port imond-port] [-telmond-port telmond-port]
           [-type hitachi|matrix-orbital|tty] [-config configfilename]

Die optionalen Parameter haben folgende Bedeutung:

-ip router-ip

Mit -ip wird die Adresse des Routers bestimmt, dessen IMOND die Daten liefern soll. Wird der Parameter weggelassen, wird 127.0.0.1 (localhost) verwendet. Es ist möglich, statt der Adresse auch den Namen anzugeben.

-port imond-port
-port bestimmt den Port auf dem der IMOND die Daten liefert. Standardmässig wird 5000 verwendet.

-telmond-port telmond-port
-telmond-port bestimmt den Port auf dem der TELMOND die Daten liefert. 5001 ist hier der Defaultwert.

-type hitachi|matrix-orbital|tty
-type legt den Typ des Displays fest. hitachi selektiert Displays mit HD44780 kompatible Anzeigen. matrix-orbital entsprechend für Matrix-Orbital-Displays. tty ermöglicht die Ausgabe auf der Konsole. WICHTIG: Alle Ausgaben des isdn_rate erfolgen immer auf stdout. Eine Ausgabeumleitung auf die entsprechende Schnittstelle ist also notwendig. tty ist der Standardwert.

-config configfilename
-config bestimmt den Pfad und den Namen der lcd.conf-Datei. Diese wird vom rc410.lcd-Script erstellt. Der Normalwert ist /var/run/lcd.conf.

isdn_rate gibt es auch in einer Version die unter Windows lauffähig ist. Hierzu muss die Datei /var/run/lcd.conf entweder nach dem Start des Routers von diesem in das isdn_rate-Verzeichnis kopiert werden oder sie muss von Hand erstellt werden. Der Aufruf könnte dann wie folgt aussehen:

 isdn_rate -ip fli4l -config lcd.conf

1.1.4 Anschlußbelegung eines LCD-Moduls am Parallelport

   13 _____________________________ 1 Draufsicht auf den
      \ o o o o o o o o o o o o o /   Parallelport, Rück-
       \ o o o o o o o o o o o o /    seite PC
     25 ------------------------- 14

Der Anschluß eines LCD-Moduls an den Router wird folgendermaßen aufgetrennt:

 
 Parallelport-Pin   Beschreibung   LCD-Modul    LCD-Pin
         18-25      GND                             --|
                    GND                          1  --|- Brücke
                    R/W                          5  --|
                    +5V                          2
             1      STROBE         EN(1)         6
             2      D0             D0            7
             3      D1             D1            8
             4      D2             D2            9
             5      D3             D3           10
             6      D4             D4           11
             7      D5             D5           12
             8      D6             D6           13
             9      D7             D7           14
            14      Autofeed       RS            4
            17      Select In      EN(2)         ? (für LCDs mit 2 Controller)

  Bei Display mit Hintergrundbeleuchtung:
                                   HG+          15 (mit Vorwiderstand ca. 20Ohm)
                                   GND          16

An Pin 3 kann der Abgriff eines >= 20kOhm Potis zwischen +5V und GND geschaltet werden. Damit kann der Kontrast des Displays reguliert werden. Bei meinem Display (Conrad) liegt Pin 3 direkt an Masse und man kann alles einwandfrei erkennen.

  
  +5V ---+
         /
         \ <--+
         /    |
         \    |
  GND ---+    +--- VL (Pin 3 - driver input)

1.1.5 Anschluß eines 4x40 Displays

Da sich der Anschluß eines 4x40 Displays stark von anderen Displays unterscheidet, hier ein Beispiel (Conrad - NLC-40x4x05):

Parallelport-Pin   Beschreibung   LCD-Modul           LCD-Pin
        18-25                                             --|
                   GND                                13  --|- Brücke
                   R/W                                10  --|
                   +5V                                14
            1      STROBE         EU (Enable-Upper)    9
            2      D0             D0                   8
            3      D1             D1                   7
            4      D2             D2                   6
            5      D3             D3                   5
            6      D4             D4                   4
            7      D5             D5                   3
            8      D6             D6                   2
            9      D7             D7                   1
           14      Autofeed       RS                  11
           17      Select In      ED (Enable-Down)    15

An Pin 12 kann der Abgriff eines >= 20kOhm Potis zwischen +5V und GND geschaltet werden. Damit kann der Kontrast des Displays reguliert werden. Es kann aber auch reichen, Pin 12 direkt an Masse zu legen um alles einwandfrei erkennen zu können.

  +5V ---+
         /
         \ <--+
         /    |
         \    |
  GND ---+    +--- VL (Pin 12 - driver input)

Leider gibt es keinen Standard, was die Pinbelegung des Parallelports auf dem Motherboard betrifft. Für die interne Verwendung von LCD-Modulen muß man also die Anschlüsse anhand des zum Motherboard mitgelieferten Slotblechadapters durchmessen.

Die erforderliche Spannungsversorgung kann man leider nicht dem Parallelport entnehmen, da die Stromaufnahme eines LCD-Modules zu hoch ist. Geeignet dafür sind die Anschlüsse für Maus (PS/2), Tastatur (DIN, PS/2), Gameport, USB oder ein freier Anschluß vom PC-Netzteil. Da einige Soundkartenhersteller am Gameport spezielle Signale generieren, kann keine Garantie übernommen, dass es in jeder Kombination funktioniert. Daher gilt hier: Immer vorher messen!

1.1.6 Winamp-Verdrahtung eines LCD-Moduls

Es existieren verschiedene Verdratungsvarianten bei fertig bestückten LCD-Displays von Kernel-Concepts, die normale und die Winamp-Verdrahtung. Neuere Displays kommen mit letzterer Variante.

   13 _____________________________ 1 Draufsicht auf den
      \ o o o o o o o o o o o o o /   Parallelport, Rück-
       \ o o o o o o o o o o o o /    seite PC
     25 ------------------------- 14

Der Anschluß eines LCD-Moduls an den Router wird bei der Winamp-Verdrahtung folgendermaßen aufgetrennt:

 
 Parallelport-Pin   Beschreibung   LCD-Modul    LCD-Pin
         18-25      GND                          1
            14      Autofeed       R/W           5
                    +5V                          2
             1      STROBE         EN(1)         6
             2      D0             D0            7
             3      D1             D1            8
             4      D2             D2            9
             5      D3             D3           10
             6      D4             D4           11
             7      D5             D5           12
             8      D6             D6           13
             9      D7             D7           14
            16      Init           RS            4

  Bei Display mit Hintergrundbeleuchtung:
                    +5V            HG+          15
                                   GND          16 (mit Regelwiderstand 100Ohm)

An Pin 3 kann der Abgriff eines >= 10kOhm Potis zwischen +5V und GND geschaltet werden. Damit kann der Kontrast des Displays reguliert werden.

  
  +5V ---+
         /
         \ <--+
         /    |
         \    |
  GND ---+    +--- VL (Pin 3 - driver input)

1.1.7 Tips und Tricks - Zusammengefasst aus Beiträgen von Robert Resch

Anschluss von 2 Displays

Mit Hilfe des 2. EN Signals ist es möglich, 2 baugleiche Displays parallel zu betreiben. Dabei wird Pin 6 des einen Displays an Pin 1 (EN1) des Par-Ports angeschlossen und an Pin 6 des 2. Display wird Pin 17 (EN2) angeschlossen. Alle anderen Leitungen werden parallel angeschlossen.

Zwei Displayseiten an einem Display

Es sind jetzt auch 2 Displayseiten mit folgender Schaltung möglich:

   25-pol. Sub-D        LCD

   1 -------|
            |
             \
              \-------- Pin 6

            |
   17-------|

          Schalter

Dabei wird der gemeinsame Anschluss des Wechslers an Pin 6 des Displays angeschlossen. An den beiden anderen Kontakten werden die beiden EN-Leitungen angeschlossen.

Ansteuerung beider Varianten

Das EN2-Signal wird generiert, sobald eine Zeile z mit LCD_LINES < z < 2*LCD_LINES angesprochen wird. Wenn eine Zeilenzahl noch größer verwendet wird, werden beide Displays angesprochen (um die definierbaren Zeichen wie z.B. die Balkenanzeige von isdn_rate) auf beiden Displays anzeigen zu können. Beide Display-Seiten können eigene definierte Zeichen haben.

Bei 4x40 wird also in der <config>/lcd.txt ein 2x40 Display angegeben. Die Zeilen werden aber trotzdem mit 0-3 angesprochen. Die Zeilennummern 4 und 5 werden in diesem Fall an beide Display-Hälften geschickt. Zeile 4 geht an Zeile 0 und 2, Zeile 5 an Zeile 1 und 3.

Bei z.B. 2 parallel geschalteten 4x20 Displays sieht die Ansteuerung folgendermassen aus:

Überschwingungen

Bei einem langen Kabel oder auch bei bestimmten Parallelports können überschwingende Signale Probleme verursachen. Entweder das Kabel kürzen oder, wenn das nicht geht, eine Terminierung machen. Dazu nimmt man pro Datenleitung (10 Stück!) je einen 10kOhm Widerstand gegen die +5V. Das sollte die Schwinger stabilisieren.

1.1.8 Danksagung

Dank geht an:

Für Fragen, Anregungen Kritik usw.:

Schreibt eine E-Mail an Gernot Miksch E-Mail: ibgm@gmx.de

© 2001-2016 Das fli4l-Team - February 16, 2016