MeshCore • Beginner resource

MESHCORE MQTT BEGINNER GUIDE.

Make a working MeshCore repeater useful to your community: connect it to a Raspberry Pi, send packet reports to LetsMesh, and check that the reports arrived.

Last checked: September 21, 2026. Firmware and installer details can change; use the original project links below before you flash or install.

What is MQTT?

MQTT is a lightweight way for programs to pass messages. A publisher sends data to a broker under a named topic; a subscriber can read it. Here, meshcoretomqtt publishes packet reports from your repeater to a broker used by LetsMesh. You do not need to run your own broker for this setup.

MeshCore repeater→USB→Raspberry Pi→meshcoretomqtt→MQTT broker→LetsMesh Analyzer

MQTT does not increase radio range or make ordinary MeshCore messaging depend on the internet. This path only reports what your repeater hears for network analysis.

The bridge's default packet topic looks like meshcore/{IATA}/{PUBLIC_KEY}/packets. The three-letter IATA code identifies an area; the device public key is detected automatically. A separate /status topic reports connection status.

Before you start

  • A working MeshCore repeater with packet logging. The upstream bridge calls for firmware built with -D MESH_PACKET_LOGGING=1. Optional debug output uses -D MESH_DEBUG=1. Standard repeater firmware may not provide the needed packet logs.
  • A Raspberry Pi with internet, power, and USB. Raspberry Pi OS is a straightforward choice. The bridge project lists Pi Zero, 2, 3, and 4; a Pi 4 is suitable.
  • A USB data cable. A charge-only cable will not carry serial data.
  • A verified three-letter IATA airport code. LetsMesh warns that an incorrect code can affect your ability to change observer region later. Check the code before entering it.

Start with the LetsMesh repeater onboarding page. It offers current packet logging firmware for supported board variants and links to the MeshCore web flasher. Choose your exact board and follow the current flashing instructions. This guide covers a repeater; LetsMesh provides separate paths for Room Servers and Companions, and the Companion path uses a different installer.

Official Project Resource: LetsMesh Observer onboarding is the source for supported firmware, board selection, and observer behavior. LetsMesh owns its service and documentation; No Bars Club does not claim affiliation or endorsement.

Connect, install, configure

1. Plug the repeater into the Pi

Make sure the repeater works with your local MeshCore settings and has a unique name. Connect it to the Pi with the USB data cable. Open a terminal on the Pi, either on its desktop or through your usual SSH connection. Keep the repeater plugged in while the bridge runs.

2. Install meshcoretomqtt

Read the current Cisien/meshcoretomqtt README first. Its documented quick install command is:

curl -fsSL https://raw.githubusercontent.com/Cisien/meshcoretomqtt/main/install.sh | sudo bash

This runs the project's installer with administrator privileges. It creates a dedicated service user, installs the bridge under /opt/mctomqtt/, stores settings under /etc/mctomqtt/, and sets up a Linux service.

Official Project Resource: Cisien/meshcoretomqtt is the original software and setup source. Its maintainers own the project; No Bars Club links to it for learning and does not claim ownership, affiliation, approval, or endorsement.

3. Answer the installer questions

Choose the current LetsMesh Packet Analyzer preset; in the United States, choose its U.S. option. Enter your verified IATA code and let the bridge detect the connected radio and public key. Follow the current installer and LetsMesh onboarding if a prompt differs from this guide.

The bridge README currently documents LetsMesh U.S. as mqtt-us-v1.letsmesh.net on port 443 using WebSockets and TLS with token authentication. Use the preset; do not copy passwords or tokens from old tutorials.

4. Change local settings only when needed

Put your own overrides in /etc/mctomqtt/config.d/99-user.toml. Do not edit /etc/mctomqtt/config.toml, because updates overwrite that defaults file. For example, if your serial port was detected incorrectly:

[general]
iata = "SEA" # Example only; use your verified code

[serial]
ports = ["/dev/ttyACM0"] # Example only; use your radio's port

After a change, run sudo systemctl restart mctomqtt.

How to know it worked

Check the service on the Pi:

sudo systemctl status mctomqtt

Look for active (running); press q to exit the status view. Then look at recent messages:

sudo journalctl -u mctomqtt -n 50 --no-pager

A running service proves the program started. It does not prove the broker received packets. Open the LetsMesh Analyzer and check its observer or region views for your device. LetsMesh says a new observer may take up to five minutes to appear and must hear an advert before it shows in the observer list; it may still send reports to the region before appearing there.

Success: the Pi service stays running, the log shows a healthy radio and broker connection, and LetsMesh receives reports from your observer.

When something goes wrong

What you seeWhat to check
Service failedRead sudo journalctl -u mctomqtt -n 50 --no-pager for the first serial, settings, or broker error.
Radio not foundTry another USB data cable and port. Check which serial device the Pi sees, then correct [serial].ports in 99-user.toml if needed.
Service runs, no packet reportsConfirm the exact repeater firmware has packet logging enabled and that it is hearing local traffic.
Broker authentication failsRecheck the current LetsMesh preset and onboarding instructions. Avoid old credentials and copied tokens.
Observer absent from the listVerify your IATA code, wait several minutes, and check whether the repeater heard an advert. Review the Pi log for connection or publish errors.

Once you fix a setting, restart with sudo systemctl restart mctomqtt, then check status and LetsMesh again.

Share useful data with your community

An observer sends packet data it hears over the internet to the broker you select. Decide whether this fits your local community's expectations before enabling it. Keep private channel keys private. Coordinate with nearby MeshCore operators so new observers help answer coverage questions instead of duplicating effort.

No Bars Club is rooted in the Naugatuck Valley, including Orange and Woodbridge. If you are building locally, bring your results and questions to the No Bars Club community. If you are elsewhere, ask the operators of your own regional mesh which observer region and reporting approach they use.

Sources and ownership

Official Project Resources: Cisien/meshcoretomqtt and LetsMesh Observer onboarding. Their respective maintainers own the software, service, and documentation. No Bars Club does not claim ownership, affiliation, approval, or endorsement. Check these original sources for current firmware, installer behavior, broker settings, and corrections.

Request a correction if this guide falls behind.