[Fli4l_dev] fli4l (4.0.0-r59480) und serielle Console

Thomas Grunenberg tho_gru at gmx.de
Do Dez 24 22:20:22 CET 2020


Am 24.12.2020 um 10:53 schrieb Thomas Grunenberg:
> Moin, moin,
> 
> Ich betreibe meinen fli4l seit vielen Versionen auf Embedded Hardware 
> (erst Soekris 5501 und 6501, aktuell PC Engines - apu) mit einer 
> seriellen Console.
> 
> Dafür habe ich folgende Zeilen in der Config:
> ###################################################
> SER_CONSOLE='yes'
> SER_CONSOLE_IF='0'
> SER_CONSOLE_RATE='115200'
> SYSLOGD_DEST_1='*.* /dev/console'
> ###################################################
> 
> Mit dieser Konfiguration gab es in allen bisherigen fli4l Versionen 
> keine Probleme: Wenn ein Terminal an der seriellen Schnittstelle hängt, 
> geht alles langsam (Zeichenübertragung braucht seine Zeit). Wenn kein 
> Terminal angeschlossen ist, geht alles schnell.
> 
> Diese Zeilen habe ich auch in die config für meine aktuelle 4.0.0-r59480 
> Software eingetragen. Grundsätzlich funktioniert damit der Router.
> 
> Es gibt aber zwei Probleme:
> 1) Das Booten dauert sehr lange, wenn ich an die seriellen Schnittstelle 
> ein Terminal anschließe. Nach dem Booten arbeitet die APU wieder normal 
> schnell (keine/wenig Ausgabe auf dem Terminal)
> 2) Wenn ich _kein_ Terminal anschließe bleibt der Bootprozess hängen.
> 
> Hat jemand eine Idee für eine Lösung? Wieso blockiert die serielle 
> Schnittstelle wenn kein Terminal dranhängt (das war bei den 3.10.xx 
> Versionen nicht so)? Muss ich nur meine config ändern? Brauche ich einen 
> anderen Kernel?
> 
> Mit freundlichen Grüßen
> Thomas

Nach langem Testen habe ich herausgefunden, dass der Hänger nicht mit 
der fli4l-Version zusammen hängt, da zwischenzeitlich auch meine 
ursprüngliche 3.10.18-Version hing. Die Ausgaben von "stty -F /dev/ttyS0 
-a" ist in den verschiedenen fli4l-Versionen identisch.

Bevor ich mit 4.0.0-r59480 anfing, habe ich die Firmware des APU von 
4.11.0.1 auf 4.11.0.6 gebracht. Aber auch das scheint mir nicht die 
Ursache zu sein.


Inzwischen bin ich der Überzeugung, dass eine der beiden folgenden 
Ursachen zu dem Hänger mit der seriellen Schnittstelle führen kann:

1) Die serielle Verbindung wird zum falschen Zeitpunkt getrennt
Wenn der Puffer im Terminal voll ist, sendet es ein CTRL-S. Wenn der 
Puffer wieder leer ist, ein CTRL-Q. Wenn jetzt nun die Verbindung 
getrennt wird, nach dem ein CTRL-S gesendet wurde, erhält der fli4l nie 
ein CTRL-Q und hängt.

2) Lange Leitung
Ich nutze eine etwa 7 m lange Verbindung zwischen dem Terminal und dem 
fli4l. Die Verbindung habe ich mit LEDs beschaltet, so dass ich die 
Pegel auf den Drähten sehen kann. Aus Bequemlichkeit habe ich die 
Verbindung am Terminal getrennt, so dass die lange Leitung noch mit dem 
APU verbunden war. Ich konnte sehen, dass der fli4l keine Daten gesendet 
hat. Nachdem ich die Leitung vom APU getrennt habe und LEDs direkt 
direkt neben der APU angeschlossen habe, konnte fli4l auf der seriellen 
Leitung senden.

Gruß
Thomas


Mehr Informationen über die Mailingliste Fli4l_dev