Setserial

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
Fiche express
Domaine Configuration des ports série (UART)
Commande setserial
Contexte Usage aujourd'hui niche — consoles série d'équipements réseau/industriels, anciens modems
Voir aussi stty, udev

setserial configure les paramètres bas niveau d'un port série (UART) sous Linux : adresse d'E/S, IRQ, type d'UART, horloge de référence (baud_base)... Il ne sert pas à piloter une communication série (ça, c'est le rôle de stty ou de l'application qui ouvre le port), mais à déclarer au noyau comment le matériel est câblé ou cadencé quand l'autodétection est absente ou insuffisante.

C'est un outil aujourd'hui niche : les ports série RS-232 classiques ont quasiment disparu des machines grand public, mais setserial reste pertinent pour les consoles série d'équipements réseau ou industriels (switches, automates, onduleurs), les cartes multiport série PCI/USB, et les vieux modems externes qui nécessitent un baud_base non standard pour atteindre certaines vitesses.

Afficher la configuration

setserial -g /dev/ttyS0        # config actuelle (résumé)
setserial -a -g /dev/ttyS0     # config détaillée (tous les champs, dont baud_base et flags UART)
setserial -G /dev/ttyS0        # format compact, une ligne, pensé pour être réinjecté tel quel

-G est utile en script : sa sortie a la même syntaxe que les arguments acceptés par setserial, ce qui permet de sauvegarder puis restaurer une configuration (setserial -G /dev/ttyS0 > /tmp/ttyS0.conf puis rejouer la ligne obtenue).

Paramètres courants

Paramètre Rôle
port Adresse d'E/S du port (ex. 0x03f8 pour COM1)
irq Interruption matérielle associée au port
baud_base Fréquence de référence de l'UART, divisée pour obtenir le débit réel — à ajuster pour atteindre des vitesses non standard
uart Type d'UART détecté ou forcé (16550A, 16650...)

Configurer un port

setserial /dev/ttyS0 baud_base 57600   # fixe la fréquence de référence de l'UART à 57600
setserial -a -g /dev/ttyS0             # relit la config détaillée pour vérifier le changement

⚠️ baud_base fixe la référence utilisée pour calculer les diviseurs, ce n'est pas la vitesse de la liaison elle-même : la vitesse effective de la connexion (celle vue par le terminal ou le modem) se règle séparément, typiquement avec stty sur le même périphérique.

Persistance au démarrage

Une configuration setserial appliquée en ligne de commande ne survit pas à un redémarrage : elle doit être réappliquée à chaque boot. Historiquement, cela passait par un script /etc/init.d/setserial (Debian, lisant /etc/serial.conf) ou un service dédié équivalent sur les distributions RHEL/CentOS, exécuté tôt dans la séquence SysV init. Sur les systèmes modernes basés sur systemd, ce mécanisme est largement remplacé par des règles udev déclenchant setserial/stty à la détection du périphérique, éventuellement combinées à un service systemd dédié (à vérifier selon la distribution).

Voir aussi

  • stty — réglage de la vitesse de transmission et des paramètres de ligne (parité, bits d'arrêt) sur un périphérique série
  • udev — mécanisme moderne de configuration automatique des périphériques série à la détection