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.
| Appareil | Réglage courant |
|---|---|
| Switchs, routeurs, pare-feu | 9600 8N1, sans contrôle de flux |
| Raspberry Pi, la plupart des cartes Linux | 115200 8N1, sans contrôle de flux |
| Cartes à microcontrôleur | Celui du firmware, souvent 115200 ou 9600 |
| Anciens modems et certains équipements industriels | Parfois 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 busyouLine in use. Un autre programme tient le port, souvent un screen détaché. Trouvez-le aveclsof /dev/cu.usbserial-1420et fermez-le, ou lancezscreen -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
TERMsur 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
- screen(1), manuel de GNU Screen
- cu(1), manuel de Taylor UUCP
- stty(1), manuel FreeBSD
- Documentation Raspberry Pi, configuration UART