GUIDE

Comment enregistrer la sortie d’un port série dans un fichier, avec horodatage

Vous avez besoin de la sortie console d’un appareil dans un fichier : pour la partager, la chercher, ou attraper un défaut qui n’apparaît qu’au bout de plusieurs heures. Voici comment faire avec les outils habituels, et à quoi faire attention quand la capture doit tourner plusieurs jours.

Mis à jour en septembre 2026

PuTTY (Windows)

  • Ouvrez PuTTY, choisissez le type de connexion « Serial », puis indiquez le port COM et la vitesse.
  • Allez dans Session → Logging et choisissez « Printable output » (ou « All session output » pour garder les caractères de contrôle).
  • Indiquez le nom du fichier. Des variables comme &Y&M&D-&T donnent un fichier par session, par exemple capture-&Y&M&D-&T.log.
  • Choisissez d’écraser ou de compléter le fichier s’il existe, puis ouvrez la session.

PuTTY écrit la sortie brute. Il n’ajoute pas d’horodatage à chaque ligne : vous ne savez donc quand une ligne est arrivée que si l’appareil affiche lui-même l’heure. Pour un horodatage par ligne, utilisez Tera Term, minicom ou l’un des scripts ci-dessous.

Tera Term (Windows)

  • Connectez-vous au port série (Setup → Serial port pour régler la vitesse).
  • Ouvrez File → Log… et choisissez un nom de fichier. Les variables de date comme %Y%m%d_%H%M%S sont acceptées dans le nom.
  • Cochez « Timestamp » pour ajouter l’heure à chaque ligne, et « Append » pour continuer un fichier existant.

Tera Term est l’option la plus simple sous Windows si vous voulez un horodatage sans écrire de script.

minicom (Linux, macOS)

minicom -D /dev/ttyUSB0 -b 115200 -C capture.log

L’option -C écrit tout dans capture.log. Dans minicom, Ctrl-A L démarre ou arrête la capture, et Ctrl-A N active un horodatage en début de ligne (versions récentes).

Ligne de commande Linux

Pour une capture sans surveillance, un simple pipeline shell est souvent plus fiable qu’un programme de terminal :

# Port à 115200 bauds, mode brut
stty -F /dev/ttyUSB0 115200 raw -echo

# Horodatage de chaque ligne (ts est dans le paquet "moreutils")
cat /dev/ttyUSB0 | ts '%Y-%m-%dT%H:%M:%.S' >> capture.log

Lancez-le dans screen ou tmux, ou comme service systemd, pour qu’il continue après votre déconnexion. Faites tourner le fichier avec logrotate si la capture est longue.

Script Python (tous systèmes)

Quelques lignes avec pyserial donnent un contrôle total sur le format, par exemple un horodatage ISO 8601 avec décalage UTC :

import datetime
import serial  # pip install pyserial

PORT = '/dev/ttyUSB0'  # Windows: 'COM3'
with serial.Serial(PORT, 115200, timeout=1) as port, open('capture.log', 'a', buffering=1) as log:
    while True:
        line = port.readline()
        if line:
            stamp = datetime.datetime.now().astimezone().isoformat(timespec='microseconds')
            log.write(f"{stamp} {line.decode('utf-8', 'backslashreplace').rstrip()}\n")

Les octets binaires ou non UTF-8 sont conservés en séquences \x au lieu de casser le log.

Un Raspberry Pi comme enregistreur

Un Raspberry Pi qui fait tourner la version ligne de commande ou Python est un enregistreur maison courant, que l’on peut laisser sur place. Ça marche, mais vérifiez d’abord ces points :

  • Une coupure de courant peut corrompre la carte SD. Utilisez un système de fichiers en lecture seule, ou au minimum une bonne carte SD et un système journalisé.
  • Sans réseau ni module RTC, l’horloge est fausse après un redémarrage, et vos horodatages aussi.
  • Le RS-232 et le RS-485 demandent un convertisseur de niveau ou un transceiver. L’UART du Pi est uniquement en TTL 3,3 V.
  • Il n’y a pas d’isolation galvanique. Sur des machines avec des écarts de masse, cela peut donner des données corrompues ou du matériel endommagé.

Quand la capture doit durer plusieurs jours

Enregistrer depuis un portable, c’est très bien au labo. Ça devient peu fiable quand on le laisse tourner chez un client ou toute une nuit en salle de test :

  • Le portable se met en veille ou redémarre pour une mise à jour, et le log s’arrête.
  • La gestion d’énergie USB suspend l’adaptateur série, et le port disparaît.
  • Il manque l’horodatage parce que la capture a été lancée sans.
  • Les écarts de masse entre le portable et la machine produisent des caractères parasites, ou pire.
  • Personne ne veut laisser un portable de l’entreprise dans l’armoire d’un client pendant trois semaines.

Si vous choisissez quand même cette solution : désactivez la veille (sous Windows, powercfg /change standby-timeout-ac 0), désactivez la suspension sélective USB dans les options d’alimentation, activez l’horodatage par ligne, découpez le log en fichiers quotidiens, et utilisez un adaptateur USB-série isolé si la cible n’est pas à la même masse.

Un enregistreur autonome à la place

C’est pour cette situation que nous développons le Remora SFL-2 : un petit enregistreur série que l’on branche sur un ou deux ports et que l’on laisse sur site. Il enregistre la sortie UART, RS-232 ou RS-485 sur deux entrées isolées en réception seule, avec un horodatage sur chaque ligne, dans 8 Go de mémoire interne. Sans portable, sans application, sans cloud. À votre retour, vous branchez l’USB-C et copiez de simples fichiers texte.

Le SFL-2 est en développement. Les précommandes sont prévues pour janvier 2027.