Apparaatjes, zoals een Raspberry of BeagleBone, belanden vaak in de meterkast, bijvoorbeeld als domotica-controller. Is je Pi plotseling niet meer bereikbaar via het netwerk? Dan hoef je niet meteen een beeldscherm en toetsenbord naar de meterkast te slepen. De seriële console is een handig troubleshooting alternatief.

Auteur: Filip Vervloesem

Een klassieke seriële kabel met DB9-stekker is uiteraard te groot voor apparaatjes, zoals een Raspberry Pi of BeagleBone Black. Daarvoor heb je een speciale kabel nodig, waarvan je de individuele draadjes aansluit op pinnetjes op het moederbord. Aan de andere kant sluit je de kabel via een usb-connector aan op je PC of laptop. Wij gingen aan de slag met de Adafruit USB to TTL Serial Cable (https://www.adafruit.com/product/954). Deze kabel is zowel geschikt voor de BeagleBone Black als voor de Raspberry Pi. Op de BeagleBone sluit je de draadjes als volgt aan:

  • pin 1 (met de witte stip ernaast): zwart
  • pin 4: groen
  • pin 5: wit

En op de Raspberry GPIO header:

  • pin 6: zwart
  • pin 8: wit
  • pin 10: groen

(Het rode draadje hoef je niet aan te sluiten.)

Minicom

Op je PC verschijnt een device /dev/ttyUSB0 zodra je de kabel aansluit. Installeer het pakket minicom, voeg jouw gebruikersaccount toe aan de dialout-group en log even uit en terug in. Daarna start je minicom om de seriële verbinding te openen:

minicom -w -D /dev/ttyUSB0

De sneltoets Ctrl-A Z toont een overzicht van beschikbare commando’s. Controleer even of zowel hardware als software flow control uitgeschakeld zijn. Dat doe je via het configuratiemenu (Ctrl-A O), in het submenu ‘Serial port setup’ met de opties F en G. Vergeet na afloop ook niet je aanpassingen op te slaan met de optie ‘Save setup as dfl’ in het configuratiemenu. Minicom afsluiten doe je met Ctrl-A X.

Krijg je geen login-prompt te zien in minicom, dan moet je die nog activeren in de distributie op je Raspberry of BeagleBone. Daarvoor zijn twee mogelijke oplossingen:

  • in distributies met sysvinit open je het bestand /etc/inittab en voeg je volgende regel toe aan het einde:
    T0:23:respawn:/sbin/getty -L ttyS0 115200 vt102

waarna je het commando telinit q uitvoert.

  • in distributies met systemd volstaat het om de volgende optie aan de kernel toe te voegen bij het booten (we leggen verderop uit hoe je dat precies doet):
    console=ttyS0,115200n8

Bootlog

Kan je inloggen op de seriële console? Reboot dan eens en kijk wat er gebeurt. Zie je daarbij alleen de output van de bootloader zelf, maar niet die van het Linux-bootproces? Dan moet je de configuratie van de U-Boot bootloader aanpassen. Die vind je terug in /boot/uEnv.txt. Zoek daarin de regel die begint met ‘cmdline=’ en verwijder daaruit de optie ‘quiet’. Op dezelfde regel voeg je de hierboven vermelde ‘console’-optie toe als je helemaal geen login-prompt krijgt te zien.

Vanaf de volgende reboot krijg je nu zowel bij het opstarten als het afsluiten een zeer gedetailleerde bootlog te zien. Heb je twee apparaatjes in de meterkast staan? Sluit dan de seriële kabel van het ene apparaatje aan op een usb-poort van het andere en vice versa. In geval van problemen, log je via ssh in op het ene apparaatje om de seriële console van het andere te openen. Zo hoef je zelfs niet eens meer met je laptop naar de meterkast te lopen!