Umberto Allievi Soluzioni Informatiche
TheCommunicator

TheCommunicator

Version 0.8.0

Modern serial and TCP terminal application for Linux, built with GTK4 and libadwaita.

C++20GTK4libadwaitaVTE4WinUI — soonVibe Coded
TheCommunicator screenshot

Features

VT100/ANSI Terminal Emulation

Full terminal emulation via VTE4 with ANSI escape sequences, colors, cursor movement, 10,000-line scrollback buffer, and configurable font size (5–24 pt).

Serial & TCP Connections

Connect to serial devices (USB-to-serial adapters, Arduino, STM32) or TCP hosts. Baud rates from 300 to 4,000,000. Auto-detection of /dev/ttyUSB*, /dev/ttyACM*, and virtual ports.

Built-in TCP Server

Bridge serial data to network clients on port 2222. All data forwarded bidirectionally — enables remote access to serial devices from any machine on the network.

Real-time Speed Monitoring

Cairo-rendered RX/TX throughput graphs with three selectable time periods (10 seconds, 1 minute, 5 minutes). Data sampled every 250 ms.

File Transfers

ZMODEM, XMODEM, and YMODEM protocols via lrzsz. Drag-and-drop file sending. Progress popup with speed display and abort support.

Hex Display & Timestamps

Toggle hex dump mode showing offset, hex bytes, and ASCII interpretation. Timestamps in Simple (HH:MM:SS), Extended (ms precision), or Delta (inter-message delay) modes.

Capture to File

Log all received data to a file with optional timestamps. Supports both text and hex output formats.

Multiple Input Formats

Send data as ASCII (with control character tags like <CR>, <LF>, <ESC>), hexadecimal bytes, or decimal byte values. Configurable inter-character delay.

Use Cases

Debugging an Arduino or STM32

Connect the board via USB, select the port and baud rate (typically 115200), enable ECHO and timestamps, then use the send bar for AT commands or debug commands.

Remote Serial Access via TCP Server

Connect to a serial device on one machine, enable the TCP Server, then access it from remote machines using TCP mode — full bidirectional bridge.

Protocol Trace Capture

Enable HEX display and Extended timestamps for millisecond precision, start Capture to File, and log complete protocol exchanges for offline analysis.

Binary Protocol Debugging

Use HEX send mode for raw byte sequences (e.g., Modbus frames), control character tags for mixed text/binary, and inter-character delay for slow UART processors.

Measuring Response Times

Set Delta timestamps to measure exact inter-message delays. Open the Speed Monitor for real-time throughput visualization.

File Transfer to Embedded Devices

Drag and drop files onto the terminal for ZMODEM transfers with error correction and resume capability.

Testing Without Hardware

Create virtual serial port pairs with socat and test communication between two adw-comm instances — a full loopback test environment.

User Manual

Quick Start

  1. Launch TheCommunicator from the terminal or GNOME Activities
  2. Select Serial or TCP from the connection type dropdown
  3. For serial: select a port from the dropdown; for TCP: enter host and port
  4. Click the Connect button
  5. Type in the terminal to send data to the device
  6. Incoming data is displayed with full ANSI/VT100 support

Header Bar

ElementDescription
Connect/DisconnectToggle the connection
Connection typeSwitch between Serial and TCP mode
Port dropdown (serial)Select the serial port with device description
RefreshRescan for available serial ports
Host/Port (TCP)Enter the target host and port number
ECHO toggleEnable local echo
HEX toggleSwitch to hex dump display mode
TCP ServerToggle the TCP server bridge
Speed MonitorToggle the speed graph sidebar
ClearClear the terminal screen and scrollback buffer
MenuSettings, file transfers, capture, about

Send Bar

The send bar lets you compose and send messages in multiple formats:

ElementDescription
HistoryBrowse and reuse previously sent messages (up to 50 entries, persisted across sessions)
Text entryType a message and press Enter to send
Format selectorChoose input format: ASCII, HEX, or Decimal
Delay spinnerInter-character delay in milliseconds (0–1000 ms)
Send buttonSend the message

Input formats:

  • ASCII: Plain text with embedded control character tags. Line ending appended automatically.
  • HEX: Space or comma-separated hexadecimal byte values (e.g., 48 65 6C 6C 6F)
  • Decimal: Space or comma-separated decimal byte values 0–255 (e.g., 72 101 108 108 111)

Control characters in ASCII mode: <NUL> <SOH> <STX> <ETX> <EOT> <ENQ> <ACK> <BEL> <BS> <TAB> <LF> <CR> <ESC> and more.

Serial Configuration

Baud rates: 300, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200 (default), 230400, 460800, 921600, 1000000, 2000000, 4000000.

Line format: Default is 8N1 (8 data bits, no parity, 1 stop bit).

Line endings:

  • CR (\r) — Default, most serial terminals and embedded devices
  • LF (\n) — Linux/Unix convention
  • CR+LF (\r\n) — Windows convention, some modems

Flow control: None, Hardware (RTS/CTS), Software (Xon/Xoff).

TCP Server

Toggle the TCP server with the server icon button. When active, it listens on port 2222 and bridges all serial data bidirectionally to connected network clients.

  • Serial → Network: All received serial data forwarded to every TCP client
  • Network → Serial: Data from any TCP client forwarded to the serial port
  • Status indicator: SRV label shows port and connected client count
  • Persistence: Server auto-restarts when you reconnect

Use tools like nc, telnet, or another TheCommunicator instance in TCP mode for remote access.

Speed Monitor

Real-time RX/TX throughput graphs with three time periods:

PeriodSamplesDescription
10 seconds40Fine-grained burst analysis
1 minute240Medium-term throughput
5 minutes1200Long-term trend monitoring

Data sampled every 250 ms. Graphs auto-adapt to the current light/dark theme.

File Transfers

Supports three protocols via lrzsz:

ProtocolDescription
ZMODEMDefault. Automatic filename, error correction, resume support
XMODEMSimple 128-byte blocks
YMODEMBatch transfers with filenames in protocol

Files can be sent by drag-and-drop onto the terminal window. A transfer popup shows progress, speed, and an abort button.

Keyboard Shortcuts

ShortcutAction
Ctrl+LClear screen
Ctrl+Shift+CCopy selected text
Ctrl+Shift+VPaste from clipboard
Ctrl+Shift+ASelect all
Ctrl+Shift+SSend file
Ctrl+Shift+RReceive file
Ctrl+Shift+LCapture to file
Ctrl+Shift+PlusIncrease font size
Ctrl+Shift+MinusDecrease font size

Port Detection

Automatically detects:

PatternDescription
/dev/ttyUSB*USB-to-serial adapters (FTDI, CH340, CP2102)
/dev/ttyACM*USB CDC ACM devices (Arduino, STM32)
/dev/ttyS*Hardware serial ports
/tmp/vcom*Virtual serial ports (socat)

Permissions: If you cannot open a port, add your user to the dialout group: sudo usermod -aG dialout $USER

Troubleshooting

No ports shown: Plug in a USB-serial adapter and click Refresh. Check ls /dev/ttyUSB* /dev/ttyACM*.

Failed to open: Permission denied — add user to dialout group. Device busy — close other serial terminals. Device disconnected — reconnect and refresh.

No data displayed: Verify baud rate matches the remote device. Check line ending setting. Try enabling local echo. Switch to hex display for binary data.

Garbled text: Baud rate mismatch is the most common cause. Try different baud rates. Check data format (8N1).