Messaging: nodes, send, listen, reply, info, support

nodes

Lists all nodes currently known to the connected device.

mttctl nodes

Output columns:

ColumnDescription
IDUnique node identifier (hex)
NameHuman-readable node name from device config
BatteryBattery level percentage (if reported)
SNRSignal-to-noise ratio of the last packet
HopsNumber of hops from the local node
Last HeardTimestamp of the most recent packet received

Use --fields to select which columns to display. Separate field names with commas.

# Show only ID, name, and SNR
mttctl nodes --fields id,name,snr

# Show extended fields including hardware model, role, and position
mttctl nodes --fields id,name,hw_model,role,position

Available fields:

FieldDescriptionDefault
idNode identifier (hex)Yes
nameNode long nameYes
batteryBattery level percentageYes
snrSignal-to-noise ratioYes
hopsNumber of hops from local nodeYes
last_heardTimestamp of last received packetYes
hw_modelHardware model nameNo
roleDevice role (CLIENT, ROUTER, etc.)No
positionLast known GPS coordinatesNo

send

Sends a text message to the mesh network. By default the message is broadcast to all nodes.

# Broadcast a message to all nodes
mttctl send "hello mesh"

# Send to a specific node by hex ID
mttctl send "hello node" --dest 04e1c43b

# Send to a node by name (searches known nodes, case-insensitive)
mttctl send "hello!" --to Pedro

# Send on a specific channel (0-7)
mttctl send "hello channel" --channel 1

# Combine destination and channel
mttctl send "direct message" --dest 04e1c43b --channel 2

# Wait for delivery confirmation (ACK) before returning
mttctl send "confirmed message" --dest 04e1c43b --ack

# Wait for ACK with custom timeout
mttctl send "confirmed message" --to Pedro --ack --timeout 60

# Send as a private message (PRIVATE_APP port instead of text port)
mttctl send "private payload" --dest 04e1c43b --private

Shell note: The ! prefix is optional. If you include it, quote or escape it to prevent shell history expansion: --dest '!04e1c43b' or --dest \!04e1c43b.

OptionDescription
<MESSAGE>The text message to send (required, positional)
--destDestination node ID in hex (e.g. 04e1c43b). The ! prefix is optional. Cannot be combined with --to.
--toDestination node name (e.g. Pedro). Searches known nodes by name (case-insensitive). If multiple nodes match, shows the list and asks you to use --dest instead. Cannot be combined with --dest.
--channelChannel index 0-7 (default: 0)
--ackWait for delivery ACK before returning. Requires --dest or --to (cannot ACK a broadcast).
--timeoutSeconds to wait for ACK when --ack is set (default: 30).
--privateSend on PRIVATE_APP port (port 256) instead of the standard text message port.

listen

Streams all incoming packets from the mesh network in real time. Runs continuously until interrupted with Ctrl+C.

mttctl listen

# Write all received packets as JSON Lines to a log file
mttctl listen --log packets.jsonl

# Continue displaying packets in the terminal while also writing to a log file
mttctl listen --log /var/log/meshtastic/packets.jsonl

Decodes and displays the following packet types:

Packet TypeDisplay
Text messageFull message text
PositionLatitude, longitude, altitude, satellite count
TelemetryBattery, voltage, channel utilization, env data
Node infoLong name, short name
RoutingACK/NAK status, route requests/replies
OtherPort type and payload size
OptionDescription
--logFile path to write received packets as JSON Lines (one JSON object per line). The terminal display continues in parallel. Omit to disable file logging.

Example output:

-> Listening for packets... Press Ctrl+C to stop.

[15:30:00] !04e1c43b (Pedro) -> broadcast      | Text: Hello everyone!
[15:30:05] !a1b2c3d4 (Maria) -> !04e1c43b      | Position: 40.41680, -3.70380, 650m, 8 sats
[15:30:10] !04e1c43b (Pedro) -> broadcast       | Telemetry: battery 85%, 3.90V, ch_util 12.3%
[15:30:15] !a1b2c3d4 (Maria) -> !04e1c43b      | Routing: ACK

reply

Auto-reply mode. Listens for incoming text messages and automatically replies to each sender with signal information (SNR, RSSI, hops). Useful for range testing and network debugging. Runs continuously until interrupted with Ctrl+C.

mttctl reply

Example output:

-> Reply mode active. Listening for messages. Press Ctrl+C to stop.

[15:30:00] Message from Pedro (!04e1c43b): "hello"
-> Replied: "Heard you! SNR: 8.5 dB, RSSI: -85 dBm, Hops: 2"

info

Displays detailed information about the local node and connected device.

mttctl info

Example output:

Node
  ID:              !04e1c43b
  Name:            Pedro
  Short name:      PD
  Hardware:        HELTEC V3
  Role:            CLIENT

Firmware
  Version:         2.5.6.abc1234
  Reboots:         12

Capabilities
  Features:        WiFi, Bluetooth, PKC

Device Metrics
  Battery:         85%
  Voltage:         3.90V
  Channel util.:   12.3%
  Uptime:          2d 5h 30m

Channels
  Ch 0:            Default (Primary, AES-256)
  Ch 1:            Team (Secondary, AES-256)

  Nodes in mesh:   8

support

Displays a diagnostic summary of the connected device and CLI. Useful for troubleshooting and for sharing device context in bug reports.

mttctl support

Example output:

mttctl v0.3.0

Device
  Node ID:        !04e1c43b
  Firmware:       2.5.6.abc1234
  Hardware:       HELTEC_V3
  Role:           CLIENT
  Region:         EU868
  Modem preset:   LongFast
  Capabilities:   WiFi, Bluetooth, PKC

Channels
  [0] Default (Primary)
  [1] Team (Secondary)

Known nodes: 8