
TIO es una herramienta de dispositivo en serie que presenta una línea de comandos sencilla y una interfaz de archivo de configuración para conectarse fácilmente a dispositivos TTY seriales para operaciones básicas de E/S.

Para hacer una herramienta de dispositivo serial más simple para trabajar con dispositivos TTY seriales con menos enfoque en las características clásicas de terminal/módem y más enfoque en las necesidades de los desarrolladores y piratas informáticos integrados.
TIO se creó originalmente como una alternativa a la pantalla para conectarse a dispositivos serie cuando se usa en combinación con TMUX.
Para obtener más detalles de uso, consulte la documentación de la página del hombre aquí.
La interfaz de línea de comandos es directa como se refleja en la salida 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.
Por defecto, TIO se conecta automáticamente al dispositivo TTY proporcionado. Si el dispositivo no está presente, TIO esperará a que aparezca y luego se conecte. Si se pierde la conexión (por ejemplo, el dispositivo no está en lugar), esperará a que el dispositivo vuelva a aparecer y luego se vuelva a conectar. Sin embargo, si se proporciona la opción --no-reconnect , TIO saldrá si el dispositivo no está presente o se pierde una conexión establecida.
El uso típico es sin opciones:
$ tio /dev/ttyUSB0
Que corresponde a las opciones predeterminadas de uso común:
$ tio --baudrate 115200 --databits 8 --flow none --stopbits 1 --parity none /dev/ttyUSB0
Lista de dispositivos serie 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
Se recomienda conectar dispositivos TTY seriales por ID:
$ tio /dev/serial/by-id/usb-FTDI_TTL232R-3V3_FTCHUV56-if00-port0
Nota: El uso de dispositivos seriales por ID ayuda a garantizar que TIO se vuelva a conectar automáticamente al mismo dispositivo en serie cuando se vuelve a colocar, incluso cuando enumera de manera diferente.
Si no está disponible un dispositivo serie por ID, se recomienda conectarse a través de Topology ID (TID):
$ tio bCC2
Nota: El TID es único y permanecerá igual siempre que su dispositivo de puerto serie USB se conecta a la misma topología USB (mismos puertos, mismos centros, mismas conexiones, etc.). De esta manera, es posible que TIO reconecte con éxito al mismo dispositivo.
Conéctese automáticamente al primer dispositivo serie de aparición en el primer nuevo:
$ tio --auto-connect new
Conecte automáticamente al último dispositivo serie registrado:
$ tio --auto-connect latest
Es posible utilizar opciones de exclusión para afectar qué dispositivos serie están involucrados en la estrategia de conexión automática:
$ tio --auto-connect new --exclude-devices "/dev/ttyACM?,/dev/ttyUSB2"
Y para excluir a los conductores por patrón:
$ tio --auto-connect new --exclude-drivers "cdc_acm,ftdi_sio"
Nota: La coincidencia de patrones admite '*' y '?'. Use la separación de coma para definir múltiples patrones.
Para incluir controladores por patrón específico, simplemente niegue la opción de exclusión:
$ tio --auto-connect new --exclude-drivers !("cp2102")
Iniciar sesión para archivar con el nombre de archivo Autogenerado:
$ tio --log /dev/ttyUSB0
Iniciar sesión para archivar con nombre de archivo específico:
$ tio --log --log-file my-log.txt
Habilite las marcas de tiempo ISO8601 por línea:
$ tio --timestamp --timestamp-format iso8601 /dev/ttyUSB0
Salida a hexadecimal con ancho 16:
$ tio --output-mode hex16 /dev/ttyUSB0
Redirige la E/S al enchufe de red IPv4 en el puerto 4242:
$ tio --socket inet:4242 /dev/ttyUSB0
Datos de tubería al dispositivo serie:
$ cat data.bin | tio /dev/ttyUSB0
Manipule las líneas de módem en Connect:
$ tio --script "set{DTR=high,RTS=low}; msleep(100); set{DTR=toggle,RTS=toggle}" /dev/ttyUSB0
Comando de tubería al dispositivo en serie y espere la respuesta de línea dentro de 1 segundo:
$ echo "*IDN?" | tio /dev/ttyACM0 --script "expect('rn', 1000)" --mute
KORAD KD3305P V4.2 SN:32475045
Se admiten varios comandos de clave en sesión. Cuando se inicia TIO, presione Ctrl-T? Para enumerar los comandos de clave 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 es necesario, la tecla de prefijo (CTRL-T) se puede reasignar a través del archivo de configuración.
Las opciones se pueden establecer a través del archivo de configuración que se encuentra primero en cualquiera de las siguientes ubicaciones en el pedido enumerado:
El archivo de configuración admite perfiles utilizando secciones con nombre que se pueden activar a través de la línea de comandos por nombre o patrón. Un perfil especifica a qué dispositivo TTY conectarse y otras opciones.
Ejemplo de archivo de configuración:
[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
Para usar un perfil específico por nombre, simplemente comience a TIO así:
$ tio rpi3
O por coincidencia de patrones:
$ tio usb12
Otro ejemplo de archivo de configuración más elaborado está disponible aquí.
TIO Supongs Lua Scripting para automatizar fácilmente la interacción con el dispositivo TTY.
Además de Lua API TIO, hace que las siguientes funciones estén disponibles:
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.
Los paquetes para varias distribuciones GNU/Linux están disponibles. Consulte su herramienta de Administrador de paquetes para encontrar e instalar TIO.
Si desea ver TIO incluido en su distribución favorita, comuníquese con su equipo de mantenedores de paquetes.
Instale la última versión estable:
$ snap install tio --classic
Nota: Actualmente se requiere el confinamiento clásico debido a las limitaciones del marco Snapcraft. Vea el número 187 para la discusión.
Si ha instalado:
$ brew install tio
Si tiene MSYS2 instalado:
$ pacman -S tio
Los últimos lanzamientos de origen se pueden encontrar aquí.
Antes de ejecutar los pasos de instalación, asegúrese de tener las bibliotecas GLIB y LUA instaladas. Por ejemplo:
$ sudo apt install libglib2.0-dev liblua5.2-dev
Instalar pasos:
$ meson setup build
$ meson compile -C build
$ meson install -C build
Consulte Meson_options.txt para opciones de compilación específicas de TIO.
Nota: Los pasos de instalación de Meson pueden diferir según su sistema específico.
¿Obtener errores de acceso de permiso intentando abrir su dispositivo serie?
Agregue su usuario al grupo que permite el acceso al dispositivo en serie de forma permanente. Por ejemplo, para agregar a su usuario al grupo 'Dialout' Do:
sudo usermod -a -G dialout < username >Cambie al grupo "Dialout", temporal pero inmediatamente para esta sesión.
newgrp dialoutEste es un proyecto de código abierto: todas las contribuciones (informes de errores, código, documento, ideas, etc.) son bienvenidas.
Utilice el rastreador de problemas de GitHub y las funciones de solicitud de extracción.
Además, si encuentra útil este software gratuito de código abierto, no dude en considerar hacer una donación de su elección:

Envíe informes de errores a través de Github: https://github.com/tio/tio/issues
Visite tio.github.io
TIO es GPLV2+. Consulte el archivo de licencia para obtener más detalles.
Mantenido por Martin Lund <[email protected]>
Consulte el archivo de autores para ver la lista completa de contribuyentes.