Sources :
- Working with the serial console sur le wiki ArchLinux
- Serial Communication
- serial port sur Wikipedia
- Difference between UART and RS232?
J’ai récemment acheté un APU de PC Engines. Cette machine ne dispose pas de connectique pour y raccorder un écran, seulement un port « serie ».
Voici quelques notes concernant ce type de port et comment l’utiliser sous GNU/Linux.
Un UART est un appareil/device chargé de l’envoie et de la reception des bits. Ils transforment des données en parallèle sous forme « série ». Ils ne font donc transité qu’un bit à la fois (d’ou le nom « port série »). RS-232 est le standard de communication éléctrique et électronique utilisé sur les ports série. Il défini les caractéristique élétrique du signal, le voltage, les fréquence possible, le connecteur ainsi que la démonimation et la fonction de ses pin… Deux appareille muni de UART ne pourront pas forcément communiquer. Deux appareille respectant le standard RS-232 pourront communiquer, au moin au niveau 1 de la couche OSI et encore faut-il qu’il ai la même configuration (voir plus bas).
Le standard RS-232 utilise le connecteur DB-25 (connecteur de type D-sub) et utilise 22 pins mais la plupart n’ont pas d’utilité lors d’une communication normal, aussi IBM a adapté le standard pour utiliser le connecteur DE-9 (souvant appelé à tort DB-9). )). Le standard ne se limite pas à DB-25 et DB-9 il est applicable à d’autre connecteurs/cables (DE-9, RJ25, RJ45…), généralement un adaptateur suffit.
Lorsqu’on parle de « port série », il serait donc plus juste de parler de port RS-232 utilisant un connecteur DE-9 (modification d’IBM).
Dans la terminologie qu’on rencontre lorsqu’on s’intéresse au port série on trouve aussi :
- DTE (Data terminal equipment) : c’est un équipement en bout de réseau : un terminal, une imprimante…
- DCE (Data circuit-terminating equipment) : c’est un équipement de lien dans le réseau, généralement un modem.
- null modem c’est un cable croisé qui permet de faire communiquer directement deux DTE.
- COM : c’est l’appellation Microsoft pour les port série.
Le protocole de communication décrit par le standard RS-232 n’est pas unique. La taille et la structure des paquets ainsi que la fréquence de transmission des bits peut varier d’un appareille à l’autre.
Schéma d’une frame RS-232 :
| Start | Data | Parity | Stop |
|---|---|---|---|
| 1 | 5-9 | 0-1 | 1-2 |
On désigne généralement un protocole de communication RS-232 par ces quatre paramètres :
- la fréquence de transmission des données en bits par seconde, appelée « baud rate »,
- le nombre de bits de donnée dans une frame,
- la présence ou non du bit de parité,
- le nombre de bit de fin.
Le protocole que l’on rencontre le plus fréquemment est le « 9600 8N1 » : 9600 bps, 8 bits de donnée, pas de bit de parité, un seul bit de fin.
Il n’est pas possible de déterminer facilement le protocole utilisé par un appareil. Il est simplement conseillé de faire des essais jusqu’a ce que ça fonctionne. Des programmes existent pour tester les différents « baud rate » sachant qu’il est extraimement rare de tomber sur autre chose que du « 8N1 ».
L’APU de PC-Engines est configuré en « 115200 8N1 ».
Lorsqu’on utilise un adaptateur USB-Serie celui-ci apparait sous /dev/ttyUSB*.
screen permet de s’y connecter facilement via la command screen /dev/ttyUSB0 (il utilise le protocole 9600 8N1).
tmux ne permet pas cela.
Je recommande l’utilisation de picocom ou minicom qui permet de se connecter sur des interface série.
Pour mon APU j’utilise la commande :
root@laptop # picocom -b 115200 /dev/ttyUSB0
Noyau
Lors du démarrage d’une machine, si on veut que le noyau et systemd prennent en charge la console série il faut utiliser le paramètre noyau console=….
Par exemple console=ttyS0,115200n8 active la première console (0) série (S), en utilisant la configuration « 115200 8N1 ».
Par défaut console=ttyS0 utilise une configuration « 9600 8N1 ».