CLI toolkit for probing, inspecting, and interacting with Meshtastic networks over MQTT.
- Listen to and decode Meshtastic MQTT traffic with hex dumps
- Send text messages, positions, node info, and telemetry
- Publish to map reporting topics
- Decrypt packets with channel PSK or OpenSSL encryption
- Filter and analyze specific packet types
- Track and log node database locally
- Python 3.10+
- Packages:
paho-mqtt,meshtastic(protobufs) - Optional:
argcomplete(for tab completion)
pip install paho-mqtt meshtastic argcomplete-
Create default configs:
python3 meshprobe.py --create-configs # Or run as module: python3 -m meshprobe --create-configsThis creates
server_config.json,node_config.json, andclient_config.json. -
Edit
node_config.jsonand set a valid node ID (e.g.,"!da548c90"). Optionally configure channel PSKs. -
Listen to messages:
python3 meshprobe.py listen --duration 60 # Or run as module: python3 -m meshprobe listen --duration 60
Meshprobe can be run in two ways:
- As a script:
python3 meshprobe.py <command> - As a module:
python3 -m meshprobe <command>
Listen and inspect MQTT traffic:
python3 meshprobe.py listen --hex-dump decrypted --colored --filter text,positionHex dump modes: full, payload, encrypted, decrypted, raw
Filter types: text, position, nodeinfo, telemetry, routing, neighbor, map, encrypted, ascii
Send text message:
python3 meshprobe.py text @da548c90 "hello" --channel 0 --hops 3Optional encryption: --openssl-password <pwd>, --pbkdf2-iter 10000, --base64
Publish to map:
python3 meshprobe.py map --hex-dumpSend position:
python3 meshprobe.py position @da548c90 --randomizeBroadcast node info or telemetry:
python3 meshprobe.py nodeinfo
python3 meshprobe.py telemetry
python3 meshprobe.py telemetry:env--root-topic msh/US- Override MQTT root topic (e.g.,msh/EU_868)--psk <base64>- Override PSK for all channels
server_config.json - MQTT broker settings (host, port, credentials)
node_config.json - Node identity and channel configuration
node_idmust start with!(e.g.,"!12345678")- Define channels:
{ "0": { "name": "LongFast", "psk": "AQ==" } }
client_config.json - Local behavior (node DB flush interval, nodes/ directory)
Messages display with clear separators showing:
- MQTT topic
- From/to node IDs
- Channel and packet ID
- Message type and parsed content
- Optional hex dumps (when enabled)
On exit, a summary shows packet counts by type and decryption success/failure statistics.
- Tab completion is available with
argcompletefor--root-topicand filter options - Node data is automatically logged to the
nodes/directory - Use
--coloredfor ANSI color output in hex dumps
Import errors:
pip install meshtastic paho-mqttConnection failures:
- Verify broker settings in
server_config.json - Check network access to MQTT host/port
- Ensure credentials are correct