
O TIO é uma ferramenta de dispositivo serial que possui uma interface de arquivo de comando e configuração direta para se conectar facilmente a dispositivos TTY seriados para operações básicas de E/S.

Para criar uma ferramenta de dispositivo serial mais simples para trabalhar com dispositivos TTY em série, com menos foco nos recursos clássicos do terminal/modem e mais foco nas necessidades de desenvolvedores e hackers incorporados.
O TIO foi originalmente criado como uma alternativa à tela para conectar -se a dispositivos seriais quando usada em combinação com o TMUX.
Para mais detalhes de uso, consulte a documentação da página do homem aqui.
A interface da linha de comando é direta, conforme refletido na saída do 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 padrão, o TIO se conecta automaticamente ao dispositivo TTY fornecido. Se o dispositivo não estiver presente, o TIO esperará que ele apareça e depois se conecte. Se a conexão for perdida (por exemplo, o dispositivo não estiver ligado), ele aguardará o dispositivo reaparecer e se reconectar. No entanto, se a opção --no-reconnect for fornecida, o TIO sairá se o dispositivo não estiver presente ou uma conexão estabelecida for perdida.
O uso típico é sem opções:
$ tio /dev/ttyUSB0
Que corresponde às opções padrão comumente usadas:
$ tio --baudrate 115200 --databits 8 --flow none --stopbits 1 --parity none /dev/ttyUSB0
Listar dispositivos seriais disponíveis:
$ 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
Recomenda -se conectar dispositivos TTY em série por ID:
$ tio /dev/serial/by-id/usb-FTDI_TTL232R-3V3_FTCHUV56-if00-port0
Nota: O uso de dispositivos seriais por ID ajuda a garantir que o TIO se reconecte automaticamente ao mesmo dispositivo serial quando recolocado, mesmo quando enumra de maneira diferente.
Se nenhum dispositivo serial por ID estiver disponível, é recomendável conectar -se por meio de TOPOLOGH ID (TID):
$ tio bCC2
NOTA: O TID é único e permanecerá o mesmo enquanto o seu dispositivo de porta serial USB se conectar à mesma topologia USB (mesmas portas, mesmos cubos, mesmas conexões etc.). Dessa forma, é possível que o TIO se reconecte com êxito ao mesmo dispositivo.
Conecte -se automaticamente ao primeiro novo dispositivo serial que aparece:
$ tio --auto-connect new
Conecte -se automaticamente ao mais recente dispositivo serial registrado:
$ tio --auto-connect latest
É possível usar opções de exclusão para afetar quais dispositivos seriais estão envolvidos na estratégia de conexão automática:
$ tio --auto-connect new --exclude-devices "/dev/ttyACM?,/dev/ttyUSB2"
E excluir os motoristas por padrão:
$ tio --auto-connect new --exclude-drivers "cdc_acm,ftdi_sio"
Nota: A correspondência de padrões suporta '*' e '?'. Use a separação de vírgula para definir vários padrões.
Para incluir os motoristas por padrão específico, simplesmente negue a opção de exclusão:
$ tio --auto-connect new --exclude-drivers !("cp2102")
Faça log para arquivar com o nome do arquivo autogenerado:
$ tio --log /dev/ttyUSB0
Log para arquivar com o nome do arquivo específico:
$ tio --log --log-file my-log.txt
Ativar ISO8601 Timestamps por linha:
$ tio --timestamp --timestamp-format iso8601 /dev/ttyUSB0
Saída para hexadecimal com largura 16:
$ tio --output-mode hex16 /dev/ttyUSB0
Redirecionar E/S para o soquete da rede IPv4 na porta 4242:
$ tio --socket inet:4242 /dev/ttyUSB0
Dados de tubo para o dispositivo serial:
$ cat data.bin | tio /dev/ttyUSB0
Manipular linhas modernas no Connect:
$ tio --script "set{DTR=high,RTS=low}; msleep(100); set{DTR=toggle,RTS=toggle}" /dev/ttyUSB0
Pipe comando para dispositivo serial e aguarde a resposta da linha em 1 segundo:
$ echo "*IDN?" | tio /dev/ttyACM0 --script "expect('rn', 1000)" --mute
KORAD KD3305P V4.2 SN:32475045
Vários comandos de chave de sessão são suportados. Quando o TIO for iniciado, pressione Ctrl-T? Para listar os comandos de chave disponíveis.
[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
Se necessário, a tecla Prefix (CTRL-T) pode ser remapeada via arquivo de configuração.
As opções podem ser definidas através do arquivo de configuração encontrado primeiro em qualquer um dos seguintes locais na ordem listada:
O arquivo de configuração suporta perfis usando seções nomeadas que podem ser ativadas através da linha de comando por nome ou padrão. Um perfil especifica qual dispositivo TTY se conectar e outras opções.
Exemplo de arquivo de configuração:
[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 um perfil específico por nome, basta iniciar o TIO como assim:
$ tio rpi3
Ou por correspondência de padrão:
$ tio usb12
Outro exemplo de arquivo de configuração mais elaborado está disponível aqui.
Tio supots lua script para automatizar facilmente a interação com o dispositivo TTY.
Além da Api Tio Lua, disponibiliza as seguintes funções:
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.
Pacotes para várias distribuições GNU/Linux estão disponíveis. Consulte sua ferramenta de gerenciador de pacotes para encontrar e instalar o TIO.
Se você deseja ver o TIO incluído em sua distribuição favorita, entre em contato com a equipe de mantenedores de pacotes.
Instale a versão estável mais recente:
$ snap install tio --classic
Nota: Atualmente, o confinamento clássico é necessário devido a limitações da estrutura do Snapcraft. Veja a edição #187 para discussão.
Se você instalou a Brew:
$ brew install tio
Se você tiver MSYS2 instalado:
$ pacman -S tio
Os lançamentos mais recentes de fonte podem ser encontrados aqui.
Antes de executar as etapas de instalação, verifique se você possui as bibliotecas Glib e Lua instaladas. Por exemplo:
$ sudo apt install libglib2.0-dev liblua5.2-dev
Instale as etapas:
$ meson setup build
$ meson compile -C build
$ meson install -C build
Consulte Meson_Options.txt para opções de compilação específicas do TIO.
NOTA: As etapas de instalação do Meson podem diferir dependendo do seu sistema específico.
Obtendo erros de acesso à permissão tentando abrir seu dispositivo serial?
Adicione seu usuário ao grupo que permite o acesso ao dispositivo serial permanentemente. Por exemplo, para adicionar seu usuário ao grupo 'Dialout':
sudo usermod -a -G dialout < username >Mude para o grupo "Dialout", temporário, mas imediatamente para esta sessão.
newgrp dialoutEste é um projeto de código aberto - todas as contribuições (relatórios de bug, código, documento, idéias etc.) são bem -vindos.
Use o rastreador de problemas do GitHub e os recursos de solicitação de puxar.
Além disso, se você achar útil este software de código aberto gratuito, sinta -se à vontade para considerar fazer uma doação de sua escolha:

Envie relatórios de bug via github: https://github.com/tio/tio/issues
Visite tio.github.io
O TIO é GPLV2+. Consulte o arquivo de licença para obter mais detalhes.
Mantido por Martin Lund <[email protected]>
Consulte o arquivo dos autores para obter uma lista completa de colaboradores.