
TIO est un outil de périphérique série qui dispose d'une ligne de commande et d'une interface de fichier de configuration simple pour se connecter facilement aux périphériques TTY série pour les opérations d'E / S de base.

Pour créer un outil de périphérique série plus simple pour travailler avec des appareils TTY série avec moins de concentration sur les fonctionnalités classiques de terminal / modem et plus de concentration sur les besoins des développeurs et des pirates intégrés.
TIO a été créé à l'origine comme alternative à l'écran pour se connecter aux périphériques série lorsqu'il est utilisé en combinaison avec TMUX.
Pour plus de détails d'utilisation, veuillez consulter la documentation de la page de l'homme ici.
L'interface de ligne de commande est simple comme le reflète la sortie de tio --help :
Usage: tio [<options>] <tty-device|profile|tid>
Connect to TTY device directly or via configuration profile or topology ID.
Options:
-b, --baudrate <bps> Baud rate (default: 115200)
-d, --databits 5|6|7|8 Data bits (default: 8)
-f, --flow hard|soft|none Flow control (default: none)
-s, --stopbits 1|2 Stop bits (default: 1)
-p, --parity odd|even|none|mark|space Parity (default: none)
-o, --output-delay <ms> Output character delay (default: 0)
-O, --output-line-delay <ms> Output line delay (default: 0)
--line-pulse-duration <duration> Set line pulse duration
-a, --auto-connect new|latest|direct Automatic connect strategy (default: direct)
--exclude-devices <pattern> Exclude devices by pattern
--exclude-drivers <pattern> Exclude drivers by pattern
--exclude-tids <pattern> Exclude topology IDs by pattern
-n, --no-reconnect Do not reconnect
-e, --local-echo Enable local echo
--input-mode normal|hex|line Select input mode (default: normal)
--output-mode normal|hex|hexN Select output mode (default: normal)
-t, --timestamp Enable line timestamp
--timestamp-format <format> Set timestamp format (default: 24hour)
--timestamp-timeout <ms> Set timestamp timeout (default: 200)
-l, --list List available serial devices, TIDs, and profiles
-L, --log Enable log to file
--log-file <filename> Set log filename
--log-directory <path> Set log directory path for automatic named logs
--log-append Append to log file
--log-strip Strip control characters and escape sequences
-m, --map <flags> Map characters
-c, --color 0..255|bold|none|list Colorize tio text (default: bold)
-S, --socket <socket> Redirect I/O to socket
--rs-485 Enable RS-485 mode
--rs-485-config <config> Set RS-485 configuration
--alert bell|blink|none Alert on connect/disconnect (default: none)
--mute Mute tio messages
--script <string> Run script from string
--script-file <filename> Run script from file
--script-run once|always|never Run script on connect (default: always)
--exec <command> Execute shell command with I/O redirected to device
-v, --version Display version
-h, --help Display help
Options and profiles may be set via configuration file.
In session you can press ctrl-t ? to list available key commands.
See the man page for more details.
Par défaut, Tio se connecte automatiquement au périphérique TTY fourni. Si l'appareil n'est pas présent, TIO attendra qu'il apparaît, puis se connecte. Si la connexion est perdue (par exemple, le périphérique est débranché), il attendra que l'appareil réapparaît, puis reconnecte. Cependant, si l'option --no-reconnect est fournie, TIO quittera si le périphérique n'est pas présent ou si une connexion établie est perdue.
L'utilisation typique est sans options:
$ tio /dev/ttyUSB0
Qui correspond aux options par défaut couramment utilisées:
$ tio --baudrate 115200 --databits 8 --flow none --stopbits 1 --parity none /dev/ttyUSB0
Liste des dispositifs en série disponibles:
$ tio --list
Device TID Uptime [s] Driver Description
----------------- ---- ------------- ---------------- --------------------------
/dev/ttyS4 BaaB 19526.576 port 16550A UART
/dev/ttyS5 eV0Z 19525.845 port 16550A UART
/dev/ttyUSB1 bCC2 1023.274 ftdi_sio TTL232R-3V3
/dev/ttyUSB0 SPpw 978.527 ftdi_sio TTL232RG-VREG3V3
/dev/ttyACM0 i5q4 2.079 cdc_acm ST-Link VCP Ctrl
By-id
--------------------------------------------------------------------------------
/dev/serial/by-id/usb-FTDI_TTL232R-3V3_FTCHUV56-if00-port0
/dev/serial/by-id/usb-FTDI_TTL232RG-VREG3V3_FT1NELUB-if00-port0
/dev/serial/by-id/usb-STMicroelectronics_STLINK-V3_004900343438510234313939-if02
By-path
--------------------------------------------------------------------------------
/dev/serial/by-path/pci-0000:00:14.0-usb-0:8.1.3.1.4:1.0-port0
/dev/serial/by-path/pci-0000:00:14.0-usbv2-0:8.1.3.1.4:1.0-port0
/dev/serial/by-path/pci-0000:00:14.0-usbv2-0:6.4:1.0-port0
/dev/serial/by-path/pci-0000:00:14.0-usb-0:6.4:1.0-port0
/dev/serial/by-path/pci-0000:00:14.0-usbv2-0:6.3:1.2
/dev/serial/by-path/pci-0000:00:14.0-usb-0:6.3:1.2
Configuration profiles (/home/lundmar/.config/tio/config)
--------------------------------------------------------------------------------
rpi3 stm32 esp32 am64-evm
imx8mp-evk nucleo-h743zi2 usb-devices
Il est recommandé de connecter les périphériques TTY série par ID:
$ tio /dev/serial/by-id/usb-FTDI_TTL232R-3V3_FTCHUV56-if00-port0
Remarque: L'utilisation de périphériques série par ID aide à garantir que TIO se reconnecte automatiquement au même périphérique série lorsqu'il est remis, même lorsqu'il énumère différemment.
Si aucun appareil série par ID n'est disponible, il est recommandé de se connecter via Topology ID (TID):
$ tio bCC2
Remarque: Le TID est unique et restera le même tant que votre périphérique de port série USB se branche sur la même topologie USB (mêmes ports, mêmes moyeux, mêmes connexions, etc.). De cette façon, il est possible pour TIO de se reconnecter avec succès au même appareil.
Connectez-vous automatiquement au premier nouveau périphérique série d'apparaisse:
$ tio --auto-connect new
Connectez-vous automatiquement au dernier périphérique série enregistré:
$ tio --auto-connect latest
Il est possible d'utiliser des options d'exclusion pour affecter les dispositifs de série impliqués dans la stratégie de connexion automatique:
$ tio --auto-connect new --exclude-devices "/dev/ttyACM?,/dev/ttyUSB2"
Et exclure les conducteurs par schéma:
$ tio --auto-connect new --exclude-drivers "cdc_acm,ftdi_sio"
Remarque: la correspondance du modèle prend en charge '*' et '?'. Utilisez la séparation des virgules pour définir plusieurs modèles.
Pour inclure les pilotes par motif spécifique, nier simplement l'option Exclude:
$ tio --auto-connect new --exclude-drivers !("cp2102")
Journal pour fichier avec nom de fichier AutoGeener:
$ tio --log /dev/ttyUSB0
Log au fichier avec nom de fichier spécifique:
$ tio --log --log-file my-log.txt
Activer les horodatages ISO8601 par ligne:
$ tio --timestamp --timestamp-format iso8601 /dev/ttyUSB0
Sortie à Hex avec Largeur 16:
$ tio --output-mode hex16 /dev/ttyUSB0
Rediriger les E / S vers la prise réseau IPv4 sur le port 4242:
$ tio --socket inet:4242 /dev/ttyUSB0
Données de tuyau au périphérique série:
$ cat data.bin | tio /dev/ttyUSB0
Manipuler les lignes de modem sur la connexion:
$ tio --script "set{DTR=high,RTS=low}; msleep(100); set{DTR=toggle,RTS=toggle}" /dev/ttyUSB0
COMMANDE DE PIPE À DÉPIRES SÉRIE ET ATTENDRE POUR LA RÉPONSE DE LA LIGNE en 1 seconde:
$ echo "*IDN?" | tio /dev/ttyACM0 --script "expect('rn', 1000)" --mute
KORAD KD3305P V4.2 SN:32475045
Diverses commandes de clés de session sont prises en charge. Lorsque TIO est démarré, appuyez sur Ctrl-T? Pour répertorier les commandes clés disponibles.
[15:02:53.269] Key commands:
[15:02:53.269] ctrl-t ? List available key commands
[15:02:53.269] ctrl-t b Send break
[15:02:53.269] ctrl-t c Show configuration
[15:02:53.269] ctrl-t e Toggle local echo mode
[15:02:53.269] ctrl-t f Toggle log to file
[15:02:53.269] ctrl-t F Flush data I/O buffers
[15:02:53.269] ctrl-t g Toggle serial port line
[15:02:53.269] ctrl-t i Toggle input mode
[15:02:53.269] ctrl-t l Clear screen
[15:02:53.269] ctrl-t L Show line states
[15:02:53.269] ctrl-t m Change mapping of characters on input or output
[15:02:53.269] ctrl-t o Toggle output mode
[15:02:53.269] ctrl-t p Pulse serial port line
[15:02:53.269] ctrl-t q Quit
[15:02:53.269] ctrl-t r Run script
[15:02:53.269] ctrl-t R Execute shell command with I/O redirected to device
[15:02:53.269] ctrl-t s Show statistics
[15:02:53.269] ctrl-t t Toggle line timestamp mode
[15:02:53.269] ctrl-t v Show version
[15:02:53.269] ctrl-t x Send file via Xmodem
[15:02:53.269] ctrl-t y Send file via Ymodem
[15:02:53.269] ctrl-t ctrl-t Send ctrl-t character
Si nécessaire, la touche de préfixe (CTRL-T) peut être remappée via le fichier de configuration.
Les options peuvent être définies via le fichier de configuration trouvé d'abord dans l'un des emplacements suivants dans l'ordre indiqué:
Le fichier de configuration prend en charge les profils à l'aide de sections nommées qui peuvent être activées via la ligne de commande par nom ou modèle. Un profil spécifie à quel périphérique TTY à connecter et à d'autres options.
Exemple de fichier de configuration:
[default]
baudrate = 115200
databits = 8
parity = none
stopbits = 1
color = 10
[rpi3]
device = /dev/serial/by-id/usb-FTDI_TTL232R-3V3_FTGQVXBL-if00-port0
no-reconnect = true
log = true
log-file = rpi3.log
line-pulse-duration = DTR=200,RTS=150
color = 11
[svf2]
device = /dev/ttyUSB0
baudrate = 9600
script = expect("login: "); write("rootn"); expect("Password: "); write("rootn")
color = 12
[esp32]
device = /dev/serial/by-id/usb-0403_6014-if00-port0
script = set{DTR=high,RTS=low}; msleep(100); set{DTR=low,RTS=high}; msleep(100); set{RTS=low}
script-run = once
color = 13
[usb-devices]
pattern = ^usb([0-9]*)
device = /dev/ttyUSB%m1
color = 14
Pour utiliser un profil spécifique par son nom, démarrez simplement TIO comme tel:
$ tio rpi3
Ou par correspondance de modèle:
$ tio usb12
Un autre exemple de fichier de configuration plus élaboré est disponible ici.
TIO Suppots Lua Scripting Pour automatiser facilement l'interaction avec le périphérique TTY.
En plus de l'API LUA TiO met les fonctions suivantes:
expect(string, timeout)
Expect string - waits for string to match or timeout before continueing.
Supports regular expressions. Special characters must be escaped with '\'.
Timeout is in milliseconds, defaults to 0 meaning it will wait forever.
Returns 1 on successful match, 0 on timeout, or -1 on error.
On successful match it also returns the match string as second return value.
read(size, timeout)
Read from serial device. If timeout is 0 or not provided it will wait
forever until data is ready to read.
Returns number of bytes read on success, 0 on timeout, or -1 on error.
On success, returns read string as second return value.
read_line(timeout)
Read line from serial device. If timeout is 0 or not provided it will
wait forever until data is ready to read.
Returns number of bytes read on success, 0 on timeout, or -1 on error.
On success, returns the string that was read as second return value.
Also emits a single timestamp to stdout and log file per options.timestamp
and options.log.
write(string)
Write string to serial device.
Returns number of bytes written on success or -1 on error.
send(file, protocol)
Send file using x/y-modem protocol.
Protocol can be any of XMODEM_1K, XMODEM_CRC, YMODEM.
tty_search()
Search for serial devices.
Returns a table of number indexed tables, one for each serial device
found. Each of these tables contains the serial device information accessible
via the following string indexed elements "path", "tid", "uptime", "driver",
"description".
Returns nil if no serial devices are found.
set{line=state, ...}
Set state of one or multiple tty modem lines.
Line can be any of DTR, RTS, CTS, DSR, CD, RI
State is high, low, or toggle.
sleep(seconds)
Sleep for seconds.
msleep(ms)
Sleep for miliseconds.
exit(code)
Exit with exit code.
Des packages pour diverses distributions GNU / Linux sont disponibles. Veuillez consulter votre outil de gestionnaire de packages pour trouver et installer TIO.
Si vous souhaitez voir Tio inclus dans votre distribution préférée, veuillez contacter son équipe de maintenance de package.
Installez la dernière version stable:
$ snap install tio --classic
Remarque: Un confinement classique est actuellement requis en raison des limites du cadre Snapcraft. Voir le numéro 187 pour la discussion.
Si vous avez l'installation d'installation:
$ brew install tio
Si vous avez installé MSYS2:
$ pacman -S tio
Les dernières versions de source peuvent être trouvées ici.
Avant d'exécuter les étapes d'installation, assurez-vous que les bibliothèques GLIB et LUA sont installées. Par exemple:
$ sudo apt install libglib2.0-dev liblua5.2-dev
Installer les étapes:
$ meson setup build
$ meson compile -C build
$ meson install -C build
Voir meson_options.txt pour les options de construction spécifiques à TIO.
Remarque: Les étapes d'installation de Meson peuvent différer en fonction de votre système spécifique.
Obtenir des erreurs d'accès à l'autorisation essayant d'ouvrir votre appareil série?
Ajoutez votre utilisateur au groupe qui permet à l'accès de périphérique série en permanence. Par exemple, pour ajouter votre utilisateur au groupe «Dialout», faites:
sudo usermod -a -G dialout < username >Passez au groupe "Dialout", temporaire mais immédiatement pour cette session.
newgrp dialoutIl s'agit d'un projet open source - toutes les contributions (rapports de bogues, code, doc, idées, etc.) sont les bienvenues.
Veuillez utiliser les fonctionnalités du suivi du problème GitHub et de la demande.
De plus, si vous trouvez ce logiciel open source gratuit utile, n'hésitez pas à envisager de faire un don de votre choix:

Soumettre les rapports de bogues via GitHub: https://github.com/tio/tio/issues
Visitez tio.github.io
Tio est gplv2 +. Voir le fichier de licence pour plus de détails.
Entretenu par Martin Lund <[email protected]>
Voir le fichier des auteurs pour la liste complète des contributeurs.