
TiO ist ein serielles Geräte-Tool mit einer einfachen Befehlszeile und Konfigurationsdateischnittstelle, mit der sich für grundlegende E/A-Operationen einfach eine Verbindung zu seriellen TTY-Geräten herstellen können.

Um ein einfacheres serielles Geräte -Tool für die Arbeit mit seriellen TTY -Geräten mit weniger Fokus auf klassische Terminal-/Modemmerkmale und mehr Fokus auf die Bedürfnisse eingebetteter Entwickler und Hacker zu erstellen.
TiO wurde ursprünglich als Alternative zum Bildschirm erstellt, um eine Verbindung zu seriellen Geräten herzustellen, wenn sie in Kombination mit TMUX verwendet wurden.
Weitere Verwendungsdetails finden Sie in der MAN -Seitendokumentation hier.
Die Befehlszeilenschnittstelle ist unkompliziert, wie in der Ausgabe von 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.
Standardmäßig stellt TIO automatisch eine Verbindung zum bereitgestellten TTY -Gerät her. Wenn das Gerät nicht vorhanden ist, wartet TiO darauf, dass es angezeigt wird, und dann eine Verbindung hergestellt. Wenn die Verbindung verloren geht (z. B. das Gerät ist nicht ausgestattet), wartet es, bis das Gerät wieder auftaucht und dann wieder anschließt. Wenn jedoch die Option --no-reconnect -Option bereitgestellt wird, wird TiO beendet, wenn das Gerät nicht vorhanden ist oder eine festgelegte Verbindung verloren geht.
Die typische Verwendung ist ohne Optionen:
$ tio /dev/ttyUSB0
Dies entspricht den häufig verwendeten Standardoptionen:
$ tio --baudrate 115200 --databits 8 --flow none --stopbits 1 --parity none /dev/ttyUSB0
Listen Sie die verfügbaren Seriengeräte auf:
$ 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
Es wird empfohlen, serielle TTY -Geräte mit ID zu verbinden:
$ tio /dev/serial/by-id/usb-FTDI_TTL232R-3V3_FTCHUV56-if00-port0
HINWEIS: Die Verwendung von seriellen Geräten durch ID hilft sicherzustellen, dass TiO beim Wiederanbau automatisch das gleiche serielle Gerät verbindet, selbst wenn es unterschiedlich auflistet.
Wenn kein serielles Gerät nach ID verfügbar ist, wird empfohlen, eine Verbindung über Topology ID (TID) herzustellen:
$ tio bCC2
HINWEIS: Der TID ist einzigartig und bleibt so lange wie Ihr USB -serieller Port -Geräte -Gerät in dieselbe USB -Topologie (gleiche Ports, gleiche Hubs, gleiche Verbindungen usw.). Auf diese Weise ist es möglich, dass TiO erfolgreich mit demselben Gerät verbunden ist.
Stellen Sie sich automatisch mit dem ersten neuen seriellen Gerät an:
$ tio --auto-connect new
Stellen Sie sich automatisch mit dem neuesten registrierten seriellen Gerät an:
$ tio --auto-connect latest
Es ist möglich, ausschließende Optionen zu verwenden, um zu beeinflussen, welche seriellen Geräte an der automatischen Verbindungsstrategie beteiligt sind:
$ tio --auto-connect new --exclude-devices "/dev/ttyACM?,/dev/ttyUSB2"
Und Treiber nach Muster auszuschließen:
$ tio --auto-connect new --exclude-drivers "cdc_acm,ftdi_sio"
HINWEIS: Muster -Matching unterstützt '*' und '?'. Verwenden Sie die Komma -Trennung, um mehrere Muster zu definieren.
Um Treiber nach spezifischem Muster einzubeziehen, negieren Sie einfach die Ausschlussoption:
$ tio --auto-connect new --exclude-drivers !("cp2102")
Anmelden bei der Datei mit autogenerischem Dateiname:
$ tio --log /dev/ttyUSB0
Anmelden bei der Datei mit einem bestimmten Dateinamen:
$ tio --log --log-file my-log.txt
Aktivieren Sie ISO8601 Zeitstempel pro Linie:
$ tio --timestamp --timestamp-format iso8601 /dev/ttyUSB0
Ausgabe von Hex mit Breite 16:
$ tio --output-mode hex16 /dev/ttyUSB0
Umleiten Sie die E/A in IPv4 -Netzwerk -Socket auf Port 4242:
$ tio --socket inet:4242 /dev/ttyUSB0
Rohrdaten an das serielle Gerät:
$ cat data.bin | tio /dev/ttyUSB0
Manipulieren Sie Modemleitungen auf Connect:
$ tio --script "set{DTR=high,RTS=low}; msleep(100); set{DTR=toggle,RTS=toggle}" /dev/ttyUSB0
Pipe -Befehl zum seriellen Gerät und warten Sie auf eine Leitungsantwort innerhalb von 1 Sekunde:
$ echo "*IDN?" | tio /dev/ttyACM0 --script "expect('rn', 1000)" --mute
KORAD KD3305P V4.2 SN:32475045
Verschiedene Sitzungsbefehle in Sitzungen werden unterstützt. Wenn TIO gestartet wird, drücken Sie Strg-T? So listen Sie die verfügbaren Schlüsselbefehle auf.
[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
Bei Bedarf kann der Präfixschlüssel (Strg-T) über die Konfigurationsdatei neu gestaltet werden.
Optionen können über die Konfigurationsdatei festgelegt werden, die zuerst in den folgenden Stellen in der aufgeführten Reihenfolge gefunden werden:
Die Konfigurationsdatei unterstützt Profile mit den benannten Abschnitten, die über die Befehlszeile mit Namen oder Muster aktiviert werden können. Ein Profil gibt an, an welchem TTY -Gerät eine Verbindung zu und anderen Optionen hergestellt werden soll.
Beispielkonfigurationsdatei:
[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
Um ein bestimmtes Profil mit dem Namen zu verwenden, starten Sie einfach: SO:
$ tio rpi3
Oder nach Musterübereinstimmungen:
$ tio usb12
Ein weiteres aufwändiges Beispiel für Konfigurationsdatei ist hier verfügbar.
Tio Suppots Lua Scripting, um die Interaktion mit dem TTY -Gerät einfach zu automatisieren.
Zusätzlich zum Lua -API tio ist die folgenden Funktionen verfügbar:
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.
Pakete für verschiedene GNU/Linux -Verteilungen sind verfügbar. Bitte wenden Sie sich an Ihr Paket -Manager -Tool, um TIO zu finden und zu installieren.
Wenn Sie TIO in Ihrer Lieblingsverteilung enthalten möchten, wenden Sie sich bitte an das Paketwartungsteam.
Installieren Sie die neueste stabile Version:
$ snap install tio --classic
HINWEIS: Aufgrund von Einschränkungen des Snapcraft -Frameworks ist derzeit klassische Einschränkungen erforderlich. Siehe Ausgabe #187 zur Diskussion.
Wenn Sie Brauen installiert haben:
$ brew install tio
Wenn Sie MSYS2 installiert haben:
$ pacman -S tio
Die neuesten Quellveröffentlichungen finden Sie hier.
Stellen Sie vor dem Ausführen der Installationsschritte sicher, dass Sie an Glib- und Lua -Bibliotheken installiert sind. Zum Beispiel:
$ sudo apt install libglib2.0-dev liblua5.2-dev
Schritte installieren:
$ meson setup build
$ meson compile -C build
$ meson install -C build
Siehe meson_options.txt für tio -spezifische Build -Optionen.
HINWEIS: Die Installationsschritte von Meson können je nach Ihrem spezifischen System unterschiedlich sein.
Erhalten Sie Erhaltungsfehler, die versuchen, Ihr serielles Gerät zu öffnen?
Fügen Sie Ihren Benutzer in die Gruppe hinzu, die den seriellen Geräteinzug dauerhaft zugreifen kann. Zum Beispiel, um Ihren Benutzer zur Gruppe "Dialout" hinzuzufügen:
sudo usermod -a -G dialout < username >Wechseln Sie vorübergehend zur "Dialout" -Gruppe, aber sofort für diese Sitzung.
newgrp dialoutDies ist ein Open -Source -Projekt - alle Beiträge (Fehlerberichte, Code, Dokument, Ideen usw.) sind willkommen.
Bitte verwenden Sie den GitHub -Issue Tracker- und Pull -Anforderungsfunktionen.
Wenn Sie diese kostenlose Open -Source -Software nützlich finden, können Sie eine Spende Ihrer Wahl in Betracht ziehen:

Senden Sie Fehlerberichte über GitHub: https://github.com/tio/tio/issues
Besuchen Sie tio.github.io
TiO ist GPLV2+. Weitere Informationen finden Sie unter Lizenzdatei.
Pflege von Martin Lund <[email protected]>
In der Authors -Datei finden Sie eine vollständige Liste der Mitwirkenden.