Anleitung UART Debugging

Benötigte Hardware:

  Router
  USB-Seriell-Adapter
  Raspberry Pi, mit Tastatur und Monitor, 8GB SD-Karte, 
  (statt dem Raspberry kann auch ein beliebiger anderer Rechner mit USB und Terminalprogramm zum Einsatz kommen.
   Der Raspberry wird hier vorgeschlagen, da es vorkommen kann, das man das Debugging auch mehrere Tage 
   unbeaufsichtigt laufen lassen muss)
  Ethernet-Kabel
  
  Gegebenenfalls kann man das auch mit einem PC oder Laptop machen. Dann braucht man natürlich keinen Raspi. Allerdings muss der PC die ganze Zeit an bleiben und vor Ort stehen. 

1. Raspbian installieren

2. Raspbian konfigurieren

Einloggen in Raspbian mit: User „pi“ und Passwort „raspberry“
Root werden: sudo -i
Tastaturlayout umstellen: dpkg-reconfigure keyboard-configuration
Außer der Sprache können alle Einstellungen auf default stehen bleiben.

Konsole einstellen: dpkg-reconfigure console-setup
(Auswählen: UTF-8 dann Latin1 und Latin5 den Rest unverändert lassen)

Locale konfigurieren: dpkg-reconfigure locales
Es sollte de_DE@UTF-8 zusätzlich angewählt werden und dann auch als Default eingestellt werden.

Zeitzone einstellen mit: dpkg-reconfigure tzdata

Programme installieren:
apt-get update
apt-get install mc screen

Der Filemanager mc ist nicht zwingend erforderlich, aber macht das Leben für Windows-User einfacher (ähnlich Total Commander). Am besten gleich mc starten und noch den Editor in der Konfiguration umstellen (F9-Options-Configuration) auf intern und die Konfiguration speichern (sonst wird vi als Standard genutzt).

Unbedingt das default Passwort ändern mit dem Befehl „passwd“ wenn der RasPi später am Netz hängen soll! Wer will kann noch seinen public SSH-Schlüssel im Unterverzeichnis /home/pi/.ssh in der Datei „authorized_keys“ ablegen und ssh aktivieren mit „systemctl enable ssh“. Wenn man sich jetzt noch die IPv6-Adresse des RasPi im Freifunk-Netz aufschreibt (wird angezeigt mit ifconfig), kann man sich später auch von fern per ssh/Putty einloggen (geht auch ohne SSH-Schlüssel mit dem neu vergebenen Passwort).

Der ssh-Server muss noch aktiviert werden:
systemctl enable ssh
service ssh start

3. Seriell-Anschluss zum Router herstellen

Wie man die serielle Schnittstelle anschließt steht für den TL-WR1043 z.B. hier: https://www.loggn.de/tl-wr1043nd-bricked-wlan-router-wieder-zum-leben-erwecken/ hier: https://wiki.freifunk-franken.de/w/Unbricken_eines_TP-Link_1043ND oder hier: https://wiki.openwrt.org/toh/tp-link/tl-wr1043nd.

Für den TL-WR841: https://wiki.openwrt.org/toh/tp-link/tl-wr841nd//

Es brauchen nur 3 Pins angeschlossen werden (Rx, Tx und Ground). Den Pin für 3,3V bzw. 5V nicht anschließen! Spannung bekommt der Adapter über die USB-Schnittstelle vom RasPi.

5. Logging starten

Am Raspi einloggen (entweder über ssh oder mit angeschlossener Tastatur und Monitor)

Ggf. eine neue Konsole öffnen (wenn man nicht ohnehin auf der Konsole eingeloggt ist).
USB-Adapter anstecken und mit dem Befehl „dmesg“ prüfen ob er erkannt wurde. Die letzten 3 Zeilen sollten die erforderlichen Daten anzeigen. Der Schnittstellenname ist in der Zeile „converter now attached …..“ zu erkennen (in der Regel ttyUSB0). Falls das nicht angezeigt wird muss erst der Fehler gefunden werden, bevor es weitergeht.

Folgenden Befehl eingeben (ggf. ist im Folgenden der Schnittstellenname ttyUSB0 durch den oben angezeigten zu ersetzen):
screen -L <logfilename> /dev/ttyUSB0 115200
Es sollte sich eine Terminalsession zum Router öffnen.

Weiter in der neuen Terminalsession:
logread -f (damit werden Logmeldungen im Terminalfenster ausgegeben)

In screen sind die wichtigsten Tastenkombinationen:
Ctrl-a d …. Damit verläßt man screen. Screen läuft im Hintergrund weiter, und damit auch das Logging.
Ctrl-a K …. Damit beendet (killt) man screen
Ctrl-a H …. startet das Logging (falls es mit dem Parameter oben nicht funktioniert hat)

Man kann den RasPi alleine lassen und den Absturz/Neustart abwarten.

Falls alles geklappt hat kann man nach einem Neustart des Routers sich wieder im RasPi anmelden und die Screen-Session anzeigen lassen mit dem Befehl „screen -r“. Das geht auch von einem anderen Terminal als das von dem screen gestartet wurde.

Um das Logging automatisch beim Booten des Raspi zu starten, kann man als root die Datei /etc/rc.local bearbeiten
(also z.B. mit „sudo mcedit /etc/rc.local“) und vor der Zeile „exit 0“ folgenden Befehl eintragen:

screen -dm -L <logfilename> /dev/ttyUSB0 115200

Screen wird im Hintergrund gestartet und man kann sich später mit „sudo screen -r“ darauf verbinden (geht in dem Fall nur als root).

Wenn man ohnehin einen PC neben dem Router stehen hat, kann der natürlich auch verwendet werden. Für PCs mit Linux kann man sich an obiger Anleitung orientieren.

5. Logging unter Windows

Für Windows PCs geht man folgendermaßen vor:
1. Putty downloaden unter http://www.putty.org/
2. Herausfinden wie der Name der Schnittstelle ist. Das steht im Windows Geräte-Manager unter dem Abschnitt „Anschlüsse (COM & LPT)“. In der Regel hat eine eingebaute Schnittstelle die Bezeichnung COM1. USB-Adapter können aber auch eine beliebige andere Nummer haben, z.B. COM3 oder COM7
3. Putty starten. Bei „Connection type“ den Punkt „Serial“ auswählen. Unter „Serial line“ den gefundenen Schnittstellennamen eingeben. Unter „Speed“ 115200 eintragen und OPEN anklicken.
4. Wenn das Fenster sich geöffnet hat „logread -f“ eingeben und mit der ENTER-Taste bestätigen. Dann werden die Meldungen ausgegeben.
5. Oben links auf das Putty-Icon im Fensterrahmen klicken und auf „Change Settings“ klicken.
6. In dem Einstellungsfenster unter „Session“/„Logging“ rechts auf „Printable output“ klicken und den „Log file-Name“ eingeben. Danach auf „Apply“ gehen.
7. Um das Logfile zu speichern dann wieder diese Einstellungen aufrufen, unter „Session logging“ auf „none“ klicken und „Apply“.