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.
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.
- Install and configure
meshcoretomqtton the Linux computer according to its project documentation. - In the existing
[general]section of/etc/mctomqtt/config.d/00-user.toml, setiata = "BDL". - Add the CTMesh broker block below. It is an uplink destination for the observer service.
- 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?
- Dedicated Observer Firmware (recommended): best for most Wi-Fi-connected fixed nodes; it is self-contained, keeps node time synchronized through NTP, and can publish the complete observer data set directly.
- Linux USB-serial: use when you already operate a Raspberry Pi/Linux host or the radio itself does not have Wi-Fi.
