Wissensdatenbank
Buehl, Kevin
15 April 2016
4.444

Wissensdatenbank

Debian Console an RS232 Schnittstelle weiterleiten und mit einem Raspberry Pi auslesen

Vorwort

ILO Debian Kernel PanicILO Debian Kernel Panic

ILO Debian Kernel Panic

Mein Linux Debian 8 Jessie ist nach einigen Tagen nicht mehr erreichbar da ein Kernel Panic ausgelöst wird.

Da Kernel Panic Nachrichten nur noch in der Konsole ausgegeben werden, gibt es keinen anderen Weg also diese von der Konsole auszulesen. Allerdings habe ich in der HP ILO RemoteConsole nur eine Auflösung von 640x480 Pxiel. Da ich nur ein Teil der Ausgabe sehe, möchte ich die Gesamte Ausgabe über die Serielle-Schnittstelle (RS232) ausgeben und mit einem anderen Linux System abfangen und in eine Datei schreiben.

Voraussetzungen

- RS232 Schnittstelle an dem System mit den Problemen
- RS232 Null-Modem Kabel
- RS232 Schnittstelle oder USB zu RS232 Adapter

Konfiguration


Server

Zuerst sollten Sie die Ausgabe über die RS232 auf dem fehlerhaften System aktiveren. Prüfen Sie ob Ihr System eine TTY Schnittstelle erkannt hat:
dmesg | grep tty
[    0.000000] console [tty0] enabled
[ 0.983201] 00:02: ttyS0 at I/O 0x3f8 (irq

4, base_baud

115200) is a 16550A

Öffnen Sie nun die Datei grub und fügen Sie die folgenden Zeilen am Ende ein:
nano /etc/default/grub
# 2016-04-09 KB
GRUB_CMDLINE_LINUX_DEFAULT="console=tty0 console=ttyS0,115200n8"
GRUB_TERMINAL=console
GRUB_SERIAL_COMMAND="serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1"
Passen Sie ggfs. die erste Zeile an und ändern Sie ttyS0.

Starten Sie nun Ihren Server neu:
reboot
[  161.084671] reboot: Restarting system


Client

Ich verwende hier einen Rasperry Pi um die Daten über ein USB zu RS232 Kabel auszulesen. Um die Funktion zu Testen installieren Sie am besten das Paket minicom:
apt install minicom

Fragen Sie nun die Daten an dem RS232 Ports ab:
minicom -D /dev/ttyUSB0 -b 115200 -o -8


Geben Sie nun folgenden Befehl auf dem Server ein:
echo -e "Test der RS232 Schnittstelle www.4b42.com" > /dev/ttyS0
.
Nun sollten Sie folgende Meldung auf dem Client erhalten:
Willkommen zu minicom 2.7

Optionen: I18n
Übersetzt am Jan 12 2014, 05:42:53.
Port /dev/ttyUSB0, 19:08:17

Drücken Sie CTRL-A Z für Hilfe zu speziellen Tasten
Test der RS232 Schnittstelle www.4b42.com


Skript

Folgendes Script liest die Daten der RS232 Schnittstelle aus und schreibt diese in die Logdatei /var/log/syslog.
apt install python-serial

touch serial_read.py
chmod +x serial_read.py
nano serial_read.py
#!/usr/bin/env python
import time
import serial
import sys
import syslog
ser = serial.Serial(
port='/dev/ttyUSB0',
baudrate = 115200,
parity=serial.PARITY_NONE,
stopbits=serial.STOPBITS_ONE,
bytesize=serial.EIGHTBITS,
timeout=1
)
while 1:
x=ser.readline()
if x:
syslog.syslog(x)
sys.stdout.write(x)

In der Syslog steht dann folgendes:
Apr  9 19:56:26 10.48.42.1 serial_read.py: Test der RS232 Schnittstelle www.4b42.com

Manuell


minicom -D /dev/ttyUSB0 -b 115200 -o -8 -C /tmp/serial.log