Console série sur Mac avec screen et /dev/tty.usbserial

Branchez l'adaptateur USB série et lancez ls /dev/cu.* pour trouver son port, par exemple /dev/cu.usbserial-1420. Lancez ensuite screen /dev/cu.usbserial-1420 9600 avec la vitesse de l'appareil, souvent 9600 ou 115200, puis appuyez sur Entrée. Pour quitter screen, appuyez sur Ctrl-A, puis K, puis Y.

Mis à jour le . Exécuté sur macOS 27 avec screen 4.00.03 et cu fournis avec le système : ports listés avec ls /dev/cu.*, screen ouvert en arrière-plan sur un port interne avec des options stty, listé puis fermé avec screen -X quit, et cu lancé sans sudo pour montrer l'erreur de verrou.

Trouver le port série

Un adaptateur USB série apparaît sous forme de deux fichiers dans /dev. Listez-les avant et après l'avoir branché : le nouveau nom est votre port.

ls /dev/cu.*
/dev/cu.Bluetooth-Incoming-Port
/dev/cu.debug-console
/dev/cu.usbserial-1420

Les noms habituels sont cu.usbserial-XXXX pour les adaptateurs FTDI et Prolific et cu.usbmodemXXXX pour les cartes qui se présentent comme un modem USB, comme beaucoup de cartes à microcontrôleur. Le numéro change selon la prise USB utilisée.

Chaque port a aussi un jumeau /dev/tty.*. Utilisez celui en cu. Le périphérique tty sert aux appels entrants et attend un signal de porteuse qu'un câble console envoie rarement, donc la session peut rester figée sans sortie.

Si aucun nouveau port n'apparaît, vérifiez que macOS voit bien l'adaptateur :

ioreg -p IOUSB

S'il est listé mais n'a pas de port, la puce a besoin d'un pilote de son fabricant. S'il n'est pas listé, essayez un autre câble : certains câbles USB ne transportent que le courant.

Se connecter avec screen

screen est fourni avec macOS et c'est le terminal série le plus rapide. Donnez-lui le port et la vitesse :

screen /dev/cu.usbserial-1420 9600

L'écran devient vide. C'est normal : une console n'affiche rien tant que vous ne lui envoyez rien, appuyez donc sur Entrée et l'invite apparaît. Après la vitesse, vous pouvez ajouter des réglages de ligne au format de stty, séparés par des virgules :

screen /dev/cu.usbserial-1420 115200,cs8,-ixon,-ixoff

Ici cs8 signifie 8 bits de données, et -ixon,-ixoff coupent le contrôle de flux logiciel.

Pour quitter screen, appuyez sur Ctrl-A, puis K, puis Y. Ctrl-A puis D ne fait que détacher : la session continue et garde le port. Pour retrouver et fermer une session détachée :

screen -ls
screen -r
screen -X -S 98339 quit

Pour garder une copie de tout ce qu'affiche l'appareil, lancez screen avec -L. Il écrit un fichier nommé screenlog.0 dans le dossier courant.

Se connecter avec cu

cu est l'autre outil intégré. Sur Mac, il lui faut sudo, car il écrit un fichier de verrou dans /var/spool/uucp. Sans cela, cu s'arrête sur Line in use même quand le port est libre. C'est exactement ce qui s'est produit pendant notre test.

sudo cu -l /dev/cu.usbserial-1420 -s 9600

Pour quitter cu, tapez ~. en début de ligne, c'est-à-dire Entrée, puis tilde, puis point. Si vous êtes connecté au Mac en SSH, ssh intercepte d'abord la même séquence : tapez alors ~~.. Le guide des séquences d'échappement SSH explique pourquoi.

Vitesse, parité et contrôle de flux

Les deux côtés doivent avoir les mêmes réglages, sinon vous obtenez des caractères aléatoires ou rien du tout. La notation habituelle est la vitesse suivie de 8N1 : 8 bits de données, pas de parité, 1 bit de stop.

AppareilRéglage courant
Switchs, routeurs, pare-feu9600 8N1, sans contrôle de flux
Raspberry Pi, la plupart des cartes Linux115200 8N1, sans contrôle de flux
Cartes à microcontrôleurCelui du firmware, souvent 115200 ou 9600
Anciens modems et certains équipements industrielsParfois 7E1 (7 bits de données, parité paire) ou RTS/CTS

Les signes d'un mauvais réglage : des symboles aléatoires indiquent une mauvaise vitesse ; un texte avec quelques caractères faux fait penser à la parité ou aux bits de données ; une sortie qui s'arrête après un écran fait penser au contrôle de flux. Pour voir le réglage actuel du port :

stty -f /dev/cu.usbserial-1420

Sur un Raspberry Pi, la console série doit aussi être activée dans le système. Le guide SSH pour Raspberry Pi couvre l'accès réseau une fois que la console a fait son travail.

Problèmes courants

  • Resource busy ou Line in use. Un autre programme tient le port, souvent un screen détaché. Trouvez-le avec lsof /dev/cu.usbserial-1420 et fermez-le, ou lancez screen -ls.
  • Un écran vide. Appuyez sur Entrée. Toujours rien : vérifiez la vitesse, puis si l'appareil demande un câble null modem (croisé) ou un câble console rollover.
  • Des lignes en escalier, ou aucun retour à la ligne. L'appareil traite CR et LF autrement. Beaucoup de consoles attendent seulement CR quand vous appuyez sur Entrée.
  • Flèches ou menus plein écran mal affichés. Réglez TERM sur l'appareil en conséquence, voir unknown terminal type.

screen ou un terminal série dédié

screen et cu suffisent pour un coup d'œil rapide. Un terminal série pour Mac dédié aide quand vous revenez souvent sur les mêmes appareils : il retient le port et les réglages de ligne de chaque appareil, liste les ports pour vous et tient bon quand le câble se débranche. Dans tous les cas, une fois l'appareil sur le réseau, passez à SSH pour le travail courant.

Questions

Sur Mac, faut-il utiliser /dev/tty.usbserial ou /dev/cu.usbserial ?

Utilisez /dev/cu. Le périphérique tty attend un signal de porteuse que la plupart des câbles console n'envoient pas, et screen peut rester bloqué sans rien afficher. Le périphérique cu s'ouvre tout de suite.

Comment quitter screen sur un port série ?

Appuyez sur Ctrl-A, puis K, et répondez Y. Si vous fermez la fenêtre du Terminal à la place, screen peut continuer en arrière-plan et garder le port, qui répond alors Resource busy.

Pourquoi ma console série affiche des caractères bizarres ?

La vitesse est fausse. Fermez la session et essayez les autres vitesses courantes, d'abord 9600 et 115200, puis 19200, 38400 et 57600.

Un Mac a-t-il besoin d'un pilote pour un adaptateur USB série ?

Les versions récentes de macOS incluent les pilotes des puces courantes. Si l'adaptateur apparaît dans ioreg -p IOUSB mais qu'aucun port /dev/cu. n'apparaît, installez le pilote du fabricant de la puce.

Sources

Autres guides : SSH sur chaque système

Tous les guides