Connection / Meshtastic MQTT

MQTT

Connect a standalone Meshtastic gateway to your MOVETAIN room through the MQTT broker. Configure the radio, test the broker connection, then verify the encrypted path in the portal.

How this line works

LoRa nodes ↔ MQTT gateway ↔ MOVETAIN MQTT broker and packet handler ↔ portal.

The gateway receives LoRa packets and publishes supported traffic to the broker. The server associates that connection with your room, processes the packets, and sends supported portal commands back through MQTT downlink. A configured standalone gateway does not need a phone connected continuously.

Use firmware that includes the Meshtastic MQTT client. Our dedicated Direct WSS build excludes it; entering a broker address cannot add MQTT to that build. Give the gateway Internet access and configure the correct LoRa region, preset, channels, and keys for your mesh.

Step 01 / Portal

Create your room

Sign in to the Movetain Portal. In the ROOMS panel, select + CREATE ROOM. If your account’s room limit has been reached, check the limit shown above your rooms.

Portal Create Room form with example room name, description, location picker, and CREATE button
Portal interface with demonstration data. Map tiles are omitted in this example; the live portal displays an interactive map. Select an image to view it at full size.
Room Name
A short name your group will recognize, for example ALTAI-BASE-1. The field accepts up to 28 characters; the portal converts the saved name to uppercase. This is a display name, not your Room ID.
Description / Note
A note about your group, route, or camp, up to 140 characters. For example: Base camp · weekend hiking group.
Location
Click the map to set the room’s coordinates, or use My Location and allow location access if you want to use your current position. Confirm the latitude and longitude shown below the map. This places the room on the map; it does not configure the gateway’s GPS or radio frequency.
CREATE
Creates the room and generates its Room ID and keys automatically. You do not enter or invent these credentials in the creation form.
Step 02 / Room card

Find the two values your gateway needs

Example room card showing Room ID, waiting status, masked Relay Key with COPY button, and OPEN MAP
Actual portal room renderer with demonstration values. The example ID and masked key are not credentials to enter into your device.
ROOM ID → Username
Copy the complete Room ID from your own room card. Do not use Room Name, your account email, or the example ID shown here.
RELAY KEY → Password
Use COPY next to RELAY KEY and paste that value into the MQTT Password field. The eye icon shows or hides the key on your screen. Keep the key private; do not substitute a coordinator or spectator invitation key.
STATUS
The room may initially wait for a gateway connection. After setup, check this status again.
OPEN MAP
Opens the room map. It does not by itself connect or configure the hardware.
Step 03 / Gateway settings

Configure the MQTT broker

In the Meshtastic configuration app, open the connected device’s settings, then MQTT. The screenshot labels are translated into English. The table below explains each field and value. Menu wording can vary by app version.

Meshtastic MQTT broker configuration with encryption, JSON output and TLS enabled; Room ID partially hidden and password masked
Broker settings. Use your own complete Room ID and Relay Key; the example ID is partially hidden.
MQTT Root Topic beginning with mvt slash Room ID, with Client Proxy off
Lower settings: Root Topic and Client Proxy. These screenshots were taken from different sessions; do not combine their example identifiers.
Gateway fields and required values
English labelValuePurpose
MQTT EnabledOnEnables the gateway’s MQTT client.
Addressrelay.movetain.app:8883The MQTT broker endpoint. This is not the Direct WSS URL.
UsernameYour complete ROOM IDIdentifies the room. Do not use the room name or your account email.
PasswordYour room’s RELAY KEYAuthenticates the gateway. Copy the key from your room card.
Encryption EnabledOn for the encrypted MQTT pathMakes the gateway publish encrypted radio packets. Enable it before the portal’s encrypted-path check.
JSON Output EnabledOn in the illustrated setupAdds a decoded JSON projection. It does not replace the binary protobuf path or prove that encrypted transport is working.
TLS EnabledOnProtects the gateway-to-broker connection on port 8883. This is separate from MQTT packet encryption.
Root Topicmvt/YOUR_ROOM_IDReplace YOUR_ROOM_ID with the same complete ID used as Username. Do not enter the placeholder literally or use another room’s topic.
MQTT Client ProxyOff for this standalone setupThe gateway uses its own network connection rather than proxying MQTT through the phone.

Save/apply the settings using the controls in your app version, and allow any requested gateway restart.

Step 04 / Required check

Press Test connection

You must press “Test connection” on the MQTT settings page after entering the broker address and credentials. Use the green Test connection button shown in the screenshot. Wait for the result; do not assume that entering an address or enabling MQTT has established a working connection.

If the test fails, recheck the address, port, TLS setting, complete Room ID, Relay Key, and the gateway’s Internet access. Save/apply the corrected configuration and test again. If your app version requires settings to be saved first, do that before repeating the test.

A successful broker connection is the first check. It does not verify LoRa uplink/downlink, the encrypted return path, the public keys of other nodes, or successful delivery of every command. Verify those separately below and check the gateway’s online status in the portal.

Step 05 / Radio channel

Enable the channel’s MQTT directions

Open the gateway’s Channels settings and edit the channel used by your mesh. Check the actual channel name and key; the name shown in the example is LongFast.

Channel settings showing LongFast, PSK AQ equals equals, MQTT uplink and downlink on, position enabled, and reduced position precision
Channel example. The public default key AQ== is shown for interoperability; it is not a private channel secret.
Channel fields explained
LabelMeaning / action
Channel NameThe channel’s name. Check that you are editing the intended channel; the name alone does not establish radio compatibility.
PSKThe shared channel key. Nodes using that channel and the portal’s channel-key configuration must use the corresponding key.
MQTT Uplink EnabledTurn on to allow supported traffic on this channel to be published to the broker.
MQTT Downlink EnabledTurn on to allow supported broker traffic to enter the radio mesh. Uplink alone is not enough for portal commands.
Position EnabledAllows position sharing on this channel. Configure it according to the location data you intend to share.
Precise locationControls position precision. It is off in the example; the slider shows approximately ±299 ft (±91 m). Do not assume that shared positions always have full GPS precision.
Save / CancelSave applies the channel changes; Cancel closes without applying them.

Save the channel. Wait for supported radio traffic to reach the portal so it can identify the gateway and channel/downlink subscription. The same preset and frequency alone do not guarantee reception: channel/key compatibility, destination, reachability, and firmware settings also matter.

Step 06 / Portal verification

Verify MQTT / PKI transport in the portal

Open your room’s map and the gateway information/settings panel. Expand MQTT / PKI TRANSPORT. This sets up the encrypted MQTT path and the portal’s virtual-node identity for supported private messages and encrypted replies, including sensor responses.

Portal MQTT PKI Transport panel with Channel key, CHECK AND ENABLE PKI, USE PLAINTEXT, and VERIFIED ENABLED status
The portal panel after successful activation. Verified refers to the gateway check performed during setup, not verification of every node or message.
  1. Channel key. Select the key matching the gateway’s channel. Meshtastic default (AQ==) selects the public default key. For your own channel, choose Custom PSK / keep saved key and supply the corresponding base64 key. A blank custom-key field retains the saved key.
  2. CHECK & ENABLE PKI. Press this after enabling MQTT Encryption on the gateway. The portal sends an encrypted verification request and waits for a matching encrypted acknowledgement from that same gateway, for the expected request and channel.
  3. Wait for VERIFIED · ENABLED. Only a successful check commits the new mode. If the check fails, the previous mode stays active.

A plaintext ACK is not enough. It can confirm receipt of the request, but it does not prove that the gateway’s reply was sent back encrypted. The check must receive the matching encrypted reply.

USE PLAINTEXT returns the portal to its previous non-encrypted MQTT processing mode. It does not automatically disable TLS, radio-channel encryption, or settings on the gateway. Exchanges with nodes that require PKI may be limited.

VERIFIED · ENABLED has a specific meaning: during activation, the gateway returned the expected encrypted reply and the mode was enabled. It does not validate every node’s public key, guarantee delivery, or authenticate the human owner of a node.

Four different things to keep separate

Encryption and keys
LayerWhat it protects or enablesWhat it does not prove
TLSThe network connection between gateway and broker.It does not replace MQTT Encryption or prove end-to-end radio encryption.
MQTT EncryptionWhether the gateway publishes encrypted radio packets rather than potentially decoded content.It does not establish the public keys or identity of every destination node.
Channel PSKTraffic protected with a key shared by the channel’s participants. AQ== is shorthand for Meshtastic’s standard, publicly known key.The default key does not provide privacy from others who know it. For a closed channel, use your own random key. A matching PSK does not replace PKI key exchange.
Node PKI keysIndividual encrypted exchanges using a node’s public/private key pair. The public key is shared; the private key must remain on the device.A working shared channel and ordinary ACKs do not prove that peer public keys are present, current, and usable.

The portal participates as a virtual node with its own identity and public key. Other nodes need the appropriate public key for supported PKI exchanges; the portal likewise needs suitable information about peers. If a stored key differs from the announced key, you may see “Public key mismatch”. Verify which device owns that identity and whether its keys changed before changing trusted node information.

If a check or sensor request fails

The broker test fails
Fix the network, broker address, TLS, and room credentials first. A saved configuration is not evidence of a successful broker connection.
Encryption activation receives only a plaintext ACK
Check that Encryption Enabled is on in the gateway’s MQTT settings and that the portal uses the matching channel key. A topic containing /e/ alone does not prove the packet inside it is encrypted. JSON output is a decoded projection and is not the activation proof.
The encrypted-path check passes, but a node does not answer
Check node reachability, the requested feature, channel settings, and public-key information. Activation verifies the gateway path, not every destination.
A public key is missing or mismatched
This is separate from broker and encrypted-path verification. The current portal announces its virtual-node key, requests node information when needed, and then permits the diagnostic request. A missing peer PKI key is not an unconditional ban: some older firmware can reply using the channel key.
Different firmware versions behave differently
Do not assume identical PKI behavior across releases. Meshtastic 2.7.15 and 2.7.24 Alpha, for example, must not be treated as having identical response behavior. A correlated, decoded sensor result confirms more than a routing ACK alone.
A nearby room does not show the same chat
Meshtastic avoids publishing MQTT-origin packets back to MQTT to prevent loops. See why a nearby MQTT portal user may not see your messages.

The complete success path is: portal request → delivery to the node → compatible encryption → a decrypted reply matched to the correct request on the portal. A lock icon or a received ACK alone does not establish the whole chain.

For support, include the gateway model, gateway and target firmware versions, the failed step, and the displayed error. Keep Relay Keys and private keys out of screenshots and logs shared publicly.