Meshtastic Web Client and Python CLI
Meshtastic Web Client
The Meshtastic Web Client (client.meshtastic.org) provides a browser-based interface for configuring Meshtastic nodes without installing a mobile app. It supports WebSerial (Chrome/Edge) for USB connections and WebBluetooth for BLE connections on supported platforms.
Use Cases for the Web Client
- Configuring nodes on a desktop computer without a phone
- Full configuration access on laptops where the mobile app isn't practical
- Quick configuration of multiple nodes at a deployment event
- Advanced configuration options that may appear in the web client before the mobile apps
Connecting via Web Serial
- Open client.meshtastic.org in Chrome or Edge (not Firefox)
- Click "New Connection" → "Serial"
- Select your device's COM port or /dev/tty device
- The full configuration interface loads directly in the browser
Meshtastic Python CLI
The Python CLI is the most powerful configuration interface — it provides access to every configurable parameter and supports automation scripting.
Installation
pip install meshtastic
Requires Python 3.8+. Works on Windows, macOS, and Linux.
Essential Commands
# Connect to a serial node and show device info
meshtastic --info
# List all nodes in the node database
meshtastic --nodes
# Set a configuration value
meshtastic --set lora.modem_preset MEDIUM_SLOW
# Set multiple values at once
meshtastic --set device.role ROUTER --set bluetooth.enabled false
# Export full configuration to JSON
meshtastic --export-config > config-backup.json
# Import configuration from JSON
meshtastic --import-config config-backup.json
# Send a test message
meshtastic --sendtext "Test message from CLI"
# Listen to all incoming packets
meshtastic --listen
# Connect to a node via TCP (WiFi/network)
meshtastic --host 192.168.1.100 --info
# Factory reset
meshtastic --factory-reset
Scripting with Python API
import meshtastic
import meshtastic.serial_interface
# Connect
iface = meshtastic.serial_interface.SerialInterface()
# Get device info
info = iface.localNode.localConfig
print(info)
# Send a message
iface.sendText("Hello mesh!")
# Listen for messages
from pubsub import pub
def on_receive(packet, interface):
print(f"Received: {packet}")
pub.subscribe(on_receive, "meshtastic.receive")
iface.close()
Specifying a Connection
# Serial (auto-detect)
meshtastic --info
# Serial (specific port - Windows)
meshtastic --port COM3 --info
# Serial (specific port - Linux/Mac)
meshtastic --port /dev/ttyUSB0 --info
# TCP (WiFi connection)
meshtastic --host 192.168.1.100 --info
# BLE (by node name)
meshtastic --ble "Meshtastic_ABCD" --info
No comments to display
No comments to display