Connectivity Checklist

Mesh-Plug Connectivity Checklist

(Meshtastic + MQTT + WordPress)

This checklist verifies that Meshtastic devices, your MQTT broker, and Mesh-Plug are all connected using the correct transport.

Key rule:
Devices/apps use MQTT over TLS (8883); browsers use MQTT over WebSockets (9001).


1. Port & Transport Map (Read This First)

ComponentPortTransportWhy
Meshtastic Android8883MQTT over TLSNative MQTT client
Meshtastic Devices8883MQTT over TLSStandard IoT transport
Mesh-Plug (WordPress)9001MQTT over WebSockets (WSS)Required by browsers
mosquitto_sub/pub8883 onlyMQTT over TLSCLI does not support WSS

⚠️ mosquitto_sub will never work on port 9001; protocol errors are expected.


2. Android Meshtastic Settings (Publisher)

MQTT Settings

  • Host: mqtt.your-domain.com
  • Port: 8883
  • TLS: ON
  • Username / Password: (your broker creds)
  • Root topic: msh
  • JSON output: ON

After changing settings

  • Toggle MQTT OFF → ON
  • Send:
    • Exchange User Info
    • Send Position
    • Chat message

3. Mesh-Plug Settings (Subscriber)

Broker

  • URL: wss://mqtt.your-domain.com:9001/mqtt

Topics

  • Subscribe topic: msh/#
  • Publish prefix (if enabled): msh

Important stability setting

  • Gateway Hex:
    Set this explicitly (example: !b2a7c7a8)
    Do not rely on auto-learn once your system is stable.

4. Broker Sanity Checks (Server)

Confirm ports are listening

nc -vz mqtt.your-domain.com 8883
nc -vz mqtt.your-domain.com 9001

Both should succeed.


Confirm 9001 is WebSockets

curl -i -k --http1.1 \
  -H "Connection: Upgrade" \
  -H "Upgrade: websocket" \
  https://mqtt.your-domain.com:9001/mqtt

Expected:

HTTP/1.1 101 Switching Protocols

5. Verify Meshtastic Traffic (CLI Test)

Run this before checking WordPress:

mosquitto_sub -v \
  -h mqtt.your-domain.com \
  -p 8883 \
  --cafile /etc/ssl/certs/ca-certificates.crt \
  -u YOUR_USER \
  -P 'YOUR_PASSWORD' \
  -t 'msh/#'

Then trigger actions in the Android app.

You should see messages like:

msh/2/json/... {"type":"nodeinfo"...}
msh/2/json/... {"type":"position"...}
msh/2/json/... {"payload":{"text":"hello"}}

If you see traffic here but not in Mesh-Plug, the issue is browser/WSS config.
If you see nothing, Android is not publishing.


6. Common Failure Modes (and Fixes)

❌ No data anywhere

  • Android accidentally set to 9001
  • Root topic doubled (msh/msh)
  • MQTT toggled on but never reconnected

Fix: Android → port 8883, toggle MQTT off/on.


❌ Mesh-Plug connected but no chat or nodes

  • Gateway Hex auto-learn polluted by client swapping

Fix: Set Gateway Hex explicitly and reload dashboard.


mosquitto_sub protocol error

  • Attempting to test 9001

Fix: Use 8883 only for CLI testing.


7. Golden Rule (Pin This)

Devices publish on 8883.
Browsers subscribe on 9001.
Same broker. Same topics. Different transports.