Setting up a MeshCore Observer¶
What is a MeshCore Observer?¶
A MeshCore Observer is a MeshCore node (repeater, room server, or companion device) that listens to nearby mesh traffic and reports what it hears to an MQTT broker over the internet. ChiMesh uses observer data to power network analysis, coverage mapping, and reliability reporting across the Chicagoland area via CoreScope, Chicagoland MeshCore Live Map, and the ChiMesh Discord MeshCore MQTT Feed. Observers can be configured to share only advertisement packets, enough to appear on the node map, without exposing the contents of other traffic. You can stop sharing data at any time.
Note
Observer firmware is only available for supported devices. Check that your hardware is compatible before proceeding. Not all MeshCore devices support the packet logging firmware required for this setup.
Use Repeater mode whenever possible
Do not use Room Server unless you have a specific reason. It limits mesh participation and provides no benefit over Repeater in most scenarios. If you are unsure which role is right for your setup, ask in the ChiMesh Discord before proceeding.
Choose Your Setup Method¶
There are three ways to run an Observer:
| Method | Best for |
|---|---|
| Native Observer Firmware | Devices that support the MQTT observer firmware natively |
| Computer Bridge (mctomqtt) | Repeater or Room Server connected to a Raspberry Pi or Linux device via USB |
| Companion Bridge | Companion nodes, uses different bridge software configured via the Observer Flasher |
Method 1: Native Observer Firmware¶
Step 1: Download and Flash the Firmware¶
Fresh Install¶
Use the MeshCore MQTT Observer Flasher to find, download, and flash the correct firmware for your device. This is an online flasher, select your device variant and follow the prompts to flash directly from your browser.
Merged files will erase everything on your device
Files labeled -merged perform a full flash erase and are for fresh installs only. Flashing a merged file onto a device that already has MeshCore will wipe all settings, keys, and configuration. If you are updating an existing install, always select the non-merged variant.
Updating via OTA¶
If you already have MeshCore running, you can update wirelessly using the companion app and a web browser instead of the web flasher and USB:
- Download the App Firmware
- Before starting the OTA process, visit the MeshCore Observer Flasher
- Select your device, and use the Download button to download the app firmware option
Do not use a merged file
This variant does not erase your flash and is safe for updating an existing install. Do not use a merged file, it will wipe all your settings.
- Open Remote Management
- Open the MeshCore companion app
- Select your node from the contacts list or map
- Scroll down and tap Remote Management
- Enter the admin password when prompted
- Launch the Command Line
- Tap Command Line in the middle of the bottom footer
- Enter
start ota - Click Enter on your keyboard
- Navigate to the OTA Upload Page
- If your node is not connected to Wi-Fi, it will broadcast a
MeshCore-OTAhotspot instead, connect to that and go tohttp://192.168.4.1/update - If your node is already connected to Wi-Fi, it will stay on your existing network:
- Check your node's display for the IP address or if your node does not have a screen, check your router's DHCP table to find the IP address assigned to your node
- Open a browser and go to
http://<node-ip>/update(e.g.http://192.168.1.42/update)
- If your node is not connected to Wi-Fi, it will broadcast a
- Upload the Firmware
- Select and upload your downloaded
.binfile - Wait for the update to complete
- Select and upload your downloaded
- Verify the Update
- Reopen the companion app
- Confirm the firmware version under Remote Management
Step 2: Apply ChiMesh Observer Settings¶
Once your firmware is installed, open the Command Line under Remote Management and enter the following commands:
set timezone America/Chicago
set path.hash.mode 2
set advert.interval 240
set mqtt.iata ORD
set mqtt1.preset analyzer-us
set mqtt2.preset chimesh
If the chimesh preset isn't working, set the connection details manually:
If your firmware version does not have presets or you wish to manually configure the connection details, use the following commands. Run get mqtt2.diag to verify the connection after setup.
set mqtt2.server wss://mqtt.chimesh.org
set mqtt2.port 443
set mqtt2.audience mqtt.chimesh.org
set mqtt2.preset custom
set mqtt.rx on
set mqtt.tx advert
set wifi.ssid your-wifi-network
set wifi.pwd your-wifi-password
Note
Replace your-wifi-network and your-wifi-password with your real Wi-Fi credentials. Do not wrap them in quotes.
set bridge.enabled on
set flood.advert.interval 72
If this node is a dedicated observer only (does NOT repeat):
Turning repeat off is for dedicated observers only. If this node is also serving as a mesh repeater, make sure you run the set repeat on command and consider using a lower flood.advert.interval value (72 or 48).
set repeat off
set flood.advert.interval 168
Optional (but encouraged), set to your companion device's public key:
Replace your-primary-companion-device-pub-key with your companion device's actual public key. This helps to correlate repeaters with their owner for better analytics in the analyzers.
set mqtt.owner your-primary-companion-device-pub-key
reboot
Method 2: Computer Bridge (USB + Raspberry Pi)¶
Requirements¶
- Any supported MeshCore repeater or room server node with existing firmware
- A Linux device (Raspberry Pi or similar) with internet access
- USB connection between the node and the Linux device
Step 1: Get Compatible Firmware¶
Your node needs firmware that includes packet logging support. Use the MeshCore Observer Flasher to find and flash the appropriate firmware for your device variant.
Step 2: Connect and Run the Install Script¶
With your node connected to your Linux device via USB, run the following from your terminal:
curl -fsSL https://raw.githubusercontent.com/Cisien/meshcoretomqtt/main/install.sh | bash
When prompted by the install script, select the LetsMesh and ChiMesh presets.
Note
During setup, you will be asked to enter an IATA airport code for your region. For the Chicago area, use ORD. Make sure to use the correct IATA code, it is not the same as an ICAO code.
Note
It may take up to 5 minutes after your observer first connects before it appears in the Observers list. Your node must have an advertisement heard before it will show up in the map or dropdown, but packet data will still be recorded in the meantime.
Method 3: Companion Bridge¶
Unlike repeater or room server nodes, companion observers don't require special firmware. Your standard MeshCore companion build supports packet logging. This method uses different bridge software than mctomqtt and runs on a macOS or Linux device connected to your companion via USB, BLE, or Wi-Fi.
Requirements¶
- A macOS or Linux device (e.g., Raspberry Pi) with internet connectivity
- A MeshCore companion device accessible via USB, BLE, or Wi-Fi
Step 1: Install Node.js LTS¶
First, install NVM (Node Version Manager):
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
Close and reopen your terminal, or run the following to activate it immediately:
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"
Then install Node.js LTS:
nvm install --lts
Step 2: Run the Install Script¶
From your macOS or Linux machine, run:
bash <(curl -fsSL https://raw.githubusercontent.com/agessaman/meshcore-packet-capture/main/install.sh)
Note
meshcore-packet-capture is for companion nodes only. If you have a repeater or room server, use Method 2 instead.
The installer will set up packet capture support for BLE, TCP, and Wi-Fi connections to your companion device.
Step 3: Configure ChiMesh MQTT¶
The companion bridge does not currently support preset-based configuration. Enter the following connection details manually when prompted, or in the bridge configuration:
| Setting | Value |
|---|---|
| Server | wss://mqtt.chimesh.org |
| Port | 443 |
| Audience | mqtt.chimesh.org |
Note
It may take up to 5 minutes after your observer first connects before it appears in the Observers list. Your node must have an advertisement heard before it will show up in the map or dropdown, but packet data will still be recorded in the meantime.
For more details, see the meshcore-packet-capture README. For help, reach out on the ChiMesh Discord or the MeshCore Discord.
Additional Notes¶
- These settings are required to appear on ChiMesh(Core) services
set mqtt2.preset chimeshis what connects your observer to the ChiMesh network specifically whileset mqtt1.preset analyzer-usis what connects your observer to the global LetsMesh analyzer and the official MeshCore map- The
mqtt.ownerfield is optional but highly encouraged, it links your observer to your primary companion device
Thank you for supporting ChiMesh.org, we hope to see you on MeshCore MQTT soon!