CT Mesh

MeshCore Observer Setup

An observer listens to local MeshCore radio traffic and reports it to CT Mesh’s MQTT broker for the map, analyzer, and other community tools. CTMesh MQTT is uplink-only: it reports local activity for visibility and analysis; it does not bridge or extend RF mesh coverage. This role is best suited to stable, well-placed fixed nodes with reliable local coverage.

Recommended: run the dedicated Observer Firmware directly on a Wi-Fi-capable MeshCore node. It is easier to set up, keeps the system time synchronized on the MeshCore node, and reports directly to CTMesh. Use the Linux USB-serial method when a separate Linux host is the better fit for your installation.
Observer placement: If the observer is near another repeater, especially when it uses grid power, it should usually not repeat traffic itself. Run set repeat off on the observer to avoid redundant RF forwarding. Leave repeating enabled only when the observer’s location provides useful independent coverage. Solar-powered repeaters remain an important part of resilient, decentralized off-grid mesh coverage.

1. Dedicated Observer Firmware (Recommended)

This mode runs observer software directly on a compatible MeshCore device with Wi-Fi. It is the recommended option because it is self-contained, simpler to configure, and keeps the MeshCore node's system time synchronized. Flash it using the Observer Firmware flasher, then follow the official Observer setup guide for your hardware, Wi-Fi, and radio configuration.

In the Observer Firmware console, set the device name, Wi-Fi credentials, NTP server, CT public-mesh regions, reporting options, and CTMesh MQTT broker. The firmware includes CTMesh as a broker preset, so use slot 3 to preserve its default analyzer slots:

set name <observer-name>
set mqtt.iata BDL
set wifi.ssid <your-wifi-network>
set wifi.pwd <your-wifi-password>
set mqtt.ntp pool.ntp.org
set mqtt3.preset ctmesh
set mqtt.status on
set mqtt.packets on
set mqtt.raw on
set mqtt.rx on
set mqtt.tx on
set mqtt.neighbors on
set mqtt.neighbors.interval 24
# If this observer is near another repeater, especially when grid-powered:
# set repeat off

region put ct
region allowf ct
region put northeast
region allowf northeast
region put east
region allowf east
# Add these two lines only when your site is in the ct-rv area:
# region put ct-rv
# region allowf ct-rv
region allowf *
region save
set flood.max.unscoped 12
get mqtt.status

The ctmesh preset already supplies mqtt.ctmesh.org, port 1883, and its required credentials. The reporting commands enable status, packet, raw packet, RX, TX, and neighbor/scope data; the 24-hour neighbor interval is a reasonable default. Use get mqtt.status after the device joins Wi-Fi to check that the CTMesh slot connects, and get mqtt.ntp.diag to verify NTP. CT observers should use ct, northeast, and east; add ct-rv only where the New England Mesh region map shows it applies. The 12-hop unscoped limit is recommended for every public repeater/observer. Match your radio settings to the local public mesh; do not use the example radio values in third-party firmware documentation unless they match your region.

2. Linux USB-Serial Observer

This alternative connects a MeshCore node over USB serial to a Raspberry Pi or other Linux computer running meshcoretomqtt (also called mctomqtt). Use it when the node has no network connection of its own or when you want the observer service on a separate Linux host.

  1. Install and configure meshcoretomqtt on the Linux computer according to its project documentation.
  2. In the existing [general] section of /etc/mctomqtt/config.d/00-user.toml, set iata = "BDL".
  3. Add the CTMesh broker block below. It is an uplink destination for the observer service.
  4. Restart the service and confirm it connects and begins reporting packets.
[[broker]]
name = "ctmesh"
enabled = true
server = "mqtt.ctmesh.org"
port = 1883
transport = "tcp"
keepalive = 60
qos = 0
retain = true

[broker.auth]
method = "password"
username = "meshdev"
password = "large4cats"

Note: The shared meshdev/large4cats credentials are intentionally public for this broker. Contact CT Mesh if you need individual credentials.

Which Mode Should I Use?

More MeshCore Guides Repeater Setup Guide Join CT Mesh Discord
Back to CT Mesh