Serial Monitor over SSH
The Serial Monitor over SSH plugin allows you to monitor all the serial ports activity initiated by applications on a remote machine. It’s just like Serial Monitor, but instead of monitoring a locally attached serial port, you will see requests from applications to serial ports of another machine.
Basic Setup
Prerequisites
Enabling SSH
On most Linux machines, SSH is enabled by default. However, if it is not, you will need to enable it.
On Raspbian and many other popular distros, you can perform the following command:
systemctl enable --now sshd
For other Linux distributions, please refer to their documentation.
Installing Tibbo Device Monitor
For the Serial Monitor over SSH plugin to function properly, the target machine must have the Device Monitor (tdevmon
) service version 3.3.2 or above installed and available via PATH
. Then it’s possible to establish an SSH connection to the target machine, start the tdevmon process in machine interface mode remotely and then read and decode notifications from tdevmon over SSH.
See Installation of Tibbo Device Monitor on Linux for full instructions.
Identifying the Port
Later on, you will need to know what port your serial device is connected to.
On your Linux machine, perform the following command:
ioninja-hwc --ser-enum
The terminal should print a new line, similar to this:
/dev/ttyUSB0
This string of text will be entered into IO Ninja later, so make a note of it.
Alternatively, you can perform the following command:
dmesg --follow | grep -i tty
While the process is running, reconnect your device.
The terminal should print a new line, similar to this:
usb 1‑1.1: FIDI USB Serial Device converter now attached to ttyUSB0
In this case, the output indicates the port used is ttyUSB0
, but yours may be different.
Serial Monitor SSH’ing into your Linux Machine with IO Ninja
In IO Ninja, click “New Session” and select a new “Serial Monitor over SSH” session.

Type the host address of your remote Linux machine into the “Address:” field.

Type the port we identified earlier into the “Port:” field, prefixed by
/dev/
.

Click the “Open” button to the right of the “Port:” field to initiate a connection.
You will be prompted for SSH credentials.

Adjust settings as needed via the “Settings” button (see “Settings” section below for details).
Some of these settings are also available in the “Control” pane for easy access.

Monitor your Serial Device as Usual
See all communications in the Ninja Scroll Engine.
Add a layer such as Modbus Analyzer to make the most out of Modbus communications.
Settings

Setting |
Description |
Default |
---|---|---|
Remote address |
Remote address to connect to. Can be specified via IPv4 ( |
|
Remote port (default) |
Remote port to connect to in cases when a port is not explicitly specified in Remote address. |
80 |
Use local address |
Bind socket to the specified local address. |
False |
Adapter |
Local network adapter to bind to. Pick one from the list of installed network adapters (or bind to all installed |
Auto |
Local port |
Local port to bind to. Setting this to |
8080 |
Reuse address |
Allow multiple sockets to share the same local address. Maps to the |
False |
TCP Nagle algorithm |
Delay transmission to reduce the number of small TCP packets. Maps to the |
False |
TCP reset |
Drop TCP connections abruptly with a TCP RST packet. Maps to the |
False |
TCP keep-alives |
Detect connection loss with TCP keep-alive probes. Maps to the |
False |
User name
|
User name for SSH authentication. |
|
User authentication
|
SSH authentication method (password or private key) |
Password |
Private key file
|
Private key file for SSH authentication (PEM format). |
|
Remember last password
|
Re-use the last entered password during subsequent connect attempts. |
True |
Read block size (B) |
The size of each individual read block submitted to the underlying transport. |
4KB |
RX buffer size (B) |
The full size of the incoming data (RX) buffer. Affects read throughput. |
16KB |
TX buffer size (B) |
The full size of the outbound data (TX) buffer. Affects write throughput.. |
16KB |
Keep read block size |
Don’t merge read blocks in RX buffer. Incoming data blocks coming in quick succession can be merged together so that IO Ninja writes them to log as a whole. When this option is set to |
False |
Keep write block size |
Don’t merge write blocks in TX buffer. Outbound data blocks sent in quick succession can be merged together before submission to the underlying transport. When this option is set to |
False |
RX buffer full notifications |
Toggle warnings in log about the incoming data (RX) buffer getting full. |
False |
Serial setting changes |
Toggle notifications about serial setting (baud rate, data size, parity, stop bits, flow control) changes in the log. |
on |
DTR/RTS changes |
Toggle notifications about control line ( |
on |
DSR/CTS/DCD/RI changes |
Toggle notifications about status line ( |
on |
Serial line errors |
Toggle warning about serial line errors ( |
on |
FAQ (Frequently Asked Questions)
IO Ninja timestamps entire data blocks as they are received from the operating system, not individual bytes. Since bytes within a block arrive in quick succession, the block timestamp provides a reliable indication of when the data was received. Although you cannot assign timestamps to each CR-terminated line directly, the existing timestamps offer millisecond-level accuracy and can be exported for use in test or simulation systems.