Utilisation du port série du Rasbperry Pi

L'utilisation du port série sur le Rapberry Pi est plutôt aisée car accessible sur le port GPIO, pas besoin de souder comme pour le NSLU2 8-).

Mais pourquoi se connecter sur le port série ? Et bien cela évite de connecter un écran en HDMI au fond du jardin lorsque le wifi n'arrive pas à se connecter par exemple… Ici, un cable USB avec un adaptateur kivabien© connecter à un ordinateur portable permettra de faire du debug sur la machine incriminée via un accès shell, comme avec un ssh. Sauf qu'avec ce type d'accès si la configuration réseau est cassée, l'accès est toujours opérationnel, il faut juste se déplacer IRL

Par contre, il faut activer cette fonctionnalité avant d'en avoir besoin, c'est à dire lorsque le réseau fonctionne ou qu'un écran + clavier sont encore branchés. Par défaut, le port série n'est pas activé.

Raspberry Pi avec cable série

J'utilise un adaptateur USB ↔ Série à base de puce CP2102 qui gère nativement l'interface USB vers RS232 et est compatible 3.3V.

adaptateur USB <-> Série à base de puce CP2102

Mac OS X

Pour brancher cette clé USB sur un mac, il faut commencer par installer les drivers.

Le bon fonctionnement de l'installation et de l'adaptateur s'effectuent en reliant les 2 broches Tx et Rx ensemble : ainsi lorsqu'une donnée est envoyée via Tx elle sera reçue sur Rx et sera affichée sur le terminal. Un simple câble entre les 2 connecteurs fera l'affaire. Brancher l'adaptateur et déterminer le nom du périphérique créé :

ls /dev/cu*
/dev/cu.Bluetooth-Incoming-Port /dev/cu.SLAB_USBtoUART

L'entrée qui nous intéresse est /dev/cu.SLAB_USBtoUART.

Puis lancer screen :

screen /dev/cu.SLAB_USBtoUART 115200

Enfin taper n'importe quel caractère : il doit apparaitre, sinon vérifier l'installation et tester un autre adaptateur.

Pour sortir de Screen

Taper la combinaison de touches : CTRL + a suivi de SHIFT + k puis accepter avec y

Linux

Brancher l'adaptateur sur le port USB, puis consulter les logs du noyau pour déterminer le nom du périphérique créé :

sudo dmesg -T | tail 
[sam. nov. 10 15:04:54 2018] usb 3-1.2: new full-speed USB device number 17 using xhci_hcd
[sam. nov. 10 15:04:55 2018] usb 3-1.2: New USB device found, idVendor=10c4, idProduct=ea60
[sam. nov. 10 15:04:55 2018] usb 3-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[sam. nov. 10 15:04:55 2018] usb 3-1.2: Product: CP2102 USB to UART Bridge Controller
[sam. nov. 10 15:04:55 2018] usb 3-1.2: Manufacturer: Silicon Labs
[sam. nov. 10 15:04:55 2018] usb 3-1.2: SerialNumber: 0001
[sam. nov. 10 15:04:55 2018] cp210x 3-1.2:1.0: cp210x converter detected
[sam. nov. 10 15:04:55 2018] usb 3-1.2: cp210x converter now attached to ttyUSB0

L'adaptateur est correctement reconnu et le /dev/ttyUSB0 lui est assigné. Lancer picocom par exemple :

picocom /dev/ttyUSB0 -b 115200

Pour sortir de Picocom

Taper la combinaison de touches : CTRL + a suivi de CTRL + x

Pour activer le port série du Raspberry Pi, lancer l'outil raspi-config :

Accueil de raspi-config

puis dans la section 8 Advanced options :

Options avancées

puis en A8 Serial :

Options avancées

et enfin valider :

Options avancées

La prise en compte sera effective au prochain reboot.

Cette TUI ajoute les paramètres suivants :

  1. console=serial0,115200 ajouté au fichier /boot/cmdline.txt;
  2. enable_uart=1 dans /boot/config.txt

Passons maintenant à la connectique.

Connecter les broches suivantes du Raspberry Pi vers l'adaptateur USB :
  • Tx de l'adaptateur à la broche GPIO 15. Il faut bien croiser Tx du Raspberry vers Rx de l'adaptateur ;
  • Rx de l'adaptateur à la broche GPIO 14;
  • GND avec la broche GND;
  • Ne pas connecter l'alimentation de l'adaptateur au Raspberry Pi, sinon ce dernier va s'alimenter via l'adaptateur relié au port série de l'ordinateur portable et finir par le griller : en effet, le Raspberry Pi est trop gourmand par rapport aux capacités de l'adaptateur et nécessite un courant important.
Brochage pour utiliser le port série

Lancer screen :

screen /dev/cu.SLAB_USBtoUART 115200

Et finalement re-démarrer le Raspberry Pi.

des traces de démarrage du noyau devraient apparaitre dans la console de l'ordinateur portable : Loggue de démarrage

Lorsque le boot est terminé, il est possible de se loguer :

Raspbian GNU/Linux 9 raspberrypi ttyAMA0
 
raspberrypi login: