Skip to content

Troubleshooting

If your observer doesn't show up on CoreScope, work through these checks based on your setup path.

MQTT Firmware

Run these in the device's admin CLI:

Command What to check
get wifi.status Should show connected to your 2.4 GHz network
get mqtt.status Should show an active broker connection
get mqtt.iata Should return your real 3-letter IATA airport code
get mqtt.packets Should be on for packet publishing
get bridge.enabled Should be on for bridge publishing
get mqtt.rx / get mqtt.tx Should match the firmware guide setup
get mqtt1.preset Should show custom (not none)
get mqtt2.preset Should show custom (not none)
get name Should return the node name you set
Full verify command block
get name
get mqtt.origin
get mqtt.iata
get wifi.status
get mqtt.packets
get bridge.enabled
get mqtt.rx
get mqtt.tx
get mqtt.status
get mqtt1.preset
get mqtt2.preset
get mqtt3.preset

MCtoMQTT / Companion (USB Host)

Check that the systemd service is running:

# Serial host
sudo systemctl status mctomqtt

# Companion
sudo systemctl status meshcore-capture

If the service is running but nothing appears, check the config drop-in:

# Serial host
cat /etc/mctomqtt/config.d/20-meshcore-ca.toml

# Companion
cat ~/.meshcore-packet-capture/.env.local

Confirm the broker hosts are mqtt1.meshcore.ca and mqtt2.meshcore.ca.

Also confirm the observer path is publishing packet payloads, not only status. For companion capture, PACKETCAPTURE_MQTT1_TOPIC_PACKETS and PACKETCAPTURE_MQTT2_TOPIC_PACKETS should use meshcore/{IATA}/{PUBLIC_KEY}/packets.

IATA Code Problems

Use a real 3-letter IATA airport code such as YOW, YKF, or YYZ. The firmware may accept any text, but the public broker rejects placeholders and made-up region names such as XXX or HOME. Do not use CAN as shorthand for Canada; it is a real airport code for Guangzhou and will tag your observer to the wrong region.

If your code is not on the quick list, that does not automatically mean it is unsupported. It can still work if it is a real IATA airport code. Make sure every component uses the same code:

Component Where to check
MQTT firmware get mqtt.iata
MCtoMQTT /etc/mctomqtt/config.d/20-meshcore-ca.toml
Companion capture PACKETCAPTURE_IATA in ~/.meshcore-packet-capture/.env.local
Home Assistant MeshCore integration region/IATA field
RemoteTerm Community MQTT region/IATA field

PyMC

sudo systemctl status pymc-repeater

Check that your mqtt.iata_code is set and the broker block is present in /etc/pymc_repeater/config.yaml.

Home Assistant

Go to Settings > Devices & Services > MeshCore > Configure > Manage MQTT Brokers and confirm both brokers show as connected. Make sure your IATA code is set in the integration.

If the brokers connect but packets never appear, check the packet payload setting. Some Home Assistant MeshCore versions label this as Packets (Lets Mesh); newer versions expose it as Payload Mode. It must be enabled/set to packet for MeshCore.ca packet visibility.

If a code such as YTR is missing from a picker, update the MeshCore Home Assistant integration and type the code into Broker IATA Code. Using a nearby code such as YGK can make data visible, but it tags the observer to the wrong region.

HA symptom Check
Broker connected, no packets Packets (Lets Mesh) enabled or Payload Mode = packet
Cannot enter a real IATA code Update MeshCore-HA; current versions use free text
Backup broker fails Token Audience must match the broker host (mqtt2.meshcore.ca)
Observer appears under the wrong city Both broker entries use the same nearest real IATA code

RemoteTerm

Open Settings -> MQTT & Automation and confirm each Community MQTT entry:

Field Expected value
Broker Host mqtt1.meshcore.ca or mqtt2.meshcore.ca
Broker Port 443
Transport WebSockets
Authentication Token
TLS Enabled and verified
Region Code Your nearest real IATA code
Packet Topic Template meshcore/{IATA}/{PUBLIC_KEY}/packets

If the primary entry works and the backup does not, check the second entry's token audience. It must be mqtt2.meshcore.ca.

Still Not Working?

If everything looks correct but your observer still doesn't appear, double check that your device has internet access and can reach mqtt1.meshcore.ca on port 443. Firewalls or network restrictions on outbound WebSocket connections are the most common blocker.