How to Feed the Mesh Map

Share your Meshtastic or MeshCore node with ArkSignal. A Meshtastic node needs a few settings in its app; a MeshCore repeater or companion runs one small program. Your node then appears on the Mesh Nodes list and the Mesh Map, and any node that uplinks tells us what it hears, so the map can show who hears whom.
The Short Version
MQTT serverfeed.<wbr>arksignal.<wbr>net
Port (TLS)8883
Username and passwordYour own, made on My Mesh Nodes (sign in or register first)
Meshtastic root topicmsh/US/AR
MeshCore topicsmeshcore/<your airport code>/<your public key>/packets

Put those into your node (Meshtastic: MQTT module; MeshCore: the meshcoretomqtt program), switch on map reporting for Meshtastic, and wait for the next report (Meshtastic's default is once an hour). The exact steps are under Set Up Your Node With the App and Software Setup.

The least you need to get on the map: region US, a name and a position, MQTT on with the address, your login and TLS on, the root topic above, and Map Reporting on. To also listen for other nodes (a gateway) add Uplink on the primary channel and Encryption off: see Work as a Gateway. Every setting is explained under Every Setting Explained.

Your node is identified by its own number (Meshtastic, shown as !a1b2c3d4) or its public key (MeshCore). Everything the network is doing right now is on the service status page.

How It Works

Mesh radio networks let small LoRa radios pass short messages from one to the next with no towers and no internet. Two systems are common in Arkansas: Meshtastic, which nearly all of the area's nodes run, and MeshCore, a newer one built around repeaters. Neither needs the internet to work, but a node that does have internet can tell a map about itself and about what it hears. That is what you share here.

SystemWhat you send and what we keep
Meshtastic map reportYour node tells the map who it is on purpose: its name, hardware, role, firmware, region and position (as rough as you set it). It is a public packet by design.
Meshtastic gatewayA node with MQTT uplink also passes on what it hears: other nodes' position, node information and telemetry, with the signal. That is how the map learns who hears whom. Only those packet types are kept.
MeshCore observerA repeater or companion running meshcoretomqtt passes on the packets its radio hears. Only the adverts (a node announcing its name, kind and position, signed with its own key) are kept; the signature is checked.
Everything elseText messages and private channels are encrypted and are never decrypted, stored or shown. They are dropped as soon as they arrive.

So your node can send what it sees about other nodes directly to us: turn on MQTT uplink on a Meshtastic node, or run the observer program for MeshCore, and point it at the server above. Each message carries which gateway or observer heard it and how well, and the node pages show that as Heard By. It is measured from what was heard, not a prediction.

What You Need
  • A node: a Meshtastic device (a T-Echo, RAK WisBlock, Heltec or T-Beam, for example) or a MeshCore repeater or companion.
  • A way onto the internet: for Meshtastic, the node's own Wi-Fi or Ethernet (ESP32 boards and some RAK boards), or the Meshtastic phone app with MQTT proxy turned on. For MeshCore, a small computer (a Raspberry Pi) connected to the repeater or companion by USB or serial, running meshcoretomqtt.
  • A good position: the node's location, shared as roughly as you like (Meshtastic's map precision setting).
  • A network connection that can reach feed.arksignal.net on TCP port 8883 (see Ports).
Hardware
ItemOptions and Notes
Meshtastic nodeThe supported devices include the LILYGO T-Echo and T-Beam, RAKwireless WisBlock kits and Heltec V3. Wi-Fi capable boards (ESP32) can uplink to MQTT on their own; nRF52 boards (T-Echo, RAK4631) use the phone app's MQTT proxy or a Wi-Fi gateway node.
MeshCore nodeMeshCore runs on many of the same boards. A repeater sits high and links the mesh; a companion pairs with a phone. Either can serve as an observer when a small computer reads its packets.
AntennaA 915 MHz (US) antenna; outdoors and high beats indoors and low, and a better antenna helps the whole mesh more than a stronger radio.
Observer computerA Raspberry Pi or any small Linux machine for meshcoretomqtt (MeshCore only).
Hardware Setup
  1. Mount the antenna as high as practical with a clear view; keep metal and other radios away from it.
  2. Set the node's region to US and keep a LoRa preset the Arkansas mesh uses (Meshtastic: Long Fast is the default; ask your local community, below, if unsure).
  3. Give the node a real position (a GPS fix or a position set in the app) so the map can place it.
  4. For MeshCore, connect the repeater or companion to the observer computer by USB and note its serial port (ls /dev/ttyACM*).
  5. Give the node or the observer computer a reliable internet connection.
Software Setup

After the app setup above. The MQTT values:

Meshtastic: in the app

  1. Open the node in the Meshtastic app (or the web client). Under Radio Config → Module Config → MQTT turn Enabled on.
  2. Make a login on My Mesh Nodes (it fills in every value below for you), then enter the Address, Username and Password, turn TLS Enabled on and set the Root topic to msh/US/AR.
  3. Turn Map Reporting on, accept the notice, and choose the position precision (the coarser, the more private). The node then sends its map report about once an hour (the default; it is also the shortest allowed).
  4. To also tell us what your node hears (who hears whom): leave MQTT on, turn Encryption Enabled off and, under Channels, turn Uplink Enabled on for the primary channel only. Do this only if the primary channel is the public default (Long Fast with the default key). Uplink sends the channel's packets to the broker in the clear, so never switch it on for a private channel. We keep only positions, node information and telemetry, never text.
  5. If the node has no Wi-Fi, turn MQTT proxy to client on in the same module and keep the phone app connected to the node.
  6. Optional: turn the Neighbor Info module on.

Meshtastic: the same with the command line

meshtastic --set mqtt.enabled true \
  --set mqtt.address feed.arksignal.net \
  --set mqtt.username YOUR_USERNAME --set mqtt.password YOUR_PASSWORD \
  --set mqtt.tls_enabled true --set mqtt.root msh/US/AR \
  --set mqtt.map_reporting_enabled true
# to also report what the node hears (public default channel only):
meshtastic --set mqtt.encryption_enabled false --ch-index 0 --ch-set uplink_enabled true

MeshCore: the observer program

  1. Install meshcoretomqtt on the computer the repeater or companion is plugged into (its README has the install steps and the serial port setting).
  2. Add our broker in its config.d/99-user.toml. You can keep any other broker it already uses.
  3. Restart it. Adverts heard by your radio appear on the map within a few minutes; each shows your observer in Heard By.
[[broker]]
name = "arksignal"
enabled = true
server = "feed.arksignal.net"
port = 8883
tls.enabled = true
auth.method = "password"
auth.username = "YOUR_USERNAME"
auth.password = "YOUR_PASSWORD"

Your username and password are on your page of My Mesh Nodes, already written into these lines.

Only adverts are kept: the program forwards every packet it hears, and everything that is not an advert (the encrypted chat) is dropped unread when it reaches us. Your radio also needs its location and a name set on the repeater so its advert carries them.

Set Up Your Node With the App

Do this once, before any of the MQTT settings. It is the same for every node.

  1. Install the Meshtastic app (Android: Google Play; iPhone: App Store) or use the web client in Chrome over USB or Bluetooth.
  2. Switch the node on, open the app and pair by Bluetooth (the node asks for a PIN shown on its screen, or 123456 when it has no screen). Choose the node under Connections.
  3. Region: under Radio Config → LoRa set Region to US. Nothing transmits until a region is set. Keep the Modem preset the Arkansas mesh uses (Long Fast unless your local group says otherwise).
  4. Name it: under Radio Config → User give the node a long name and a short name (four characters). This is what shows on the Mesh Nodes list.
  5. Role: under Radio Config → Device leave Client for a node you carry or keep indoors. Use Router only for a node sitting high with a good view, and only if it is meant to carry the mesh.
  6. Position: under Radio Config → Position set a fixed position (or let the GPS get a fix). Without one the node is listed but never drawn on the map.
  7. Wi-Fi (for a node that uplinks by itself): under Radio Config → Network turn Wi-Fi on and enter your network's name and password. A node without Wi-Fi uses your phone instead (MQTT proxy, below).
Every Setting Explained

In the app these are under Radio Config (Module Config) and Channels. The values to type are on My Mesh Nodes. Defaults are Meshtastic's own.

Module Config → MQTT

Enabled
Turns the MQTT module on. Off by default. Turn on.
Address
The server to connect to. feed.arksignal.net. If it is left empty the node uses Meshtastic's public server instead, not ours.
Username, Password
Your own login from My Mesh Nodes. It lets your node publish and never read. The public server's meshdev login does not work here.
TLS Enabled
Makes the connection secure. Turn on; our server uses port 8883, which is the TLS port. With TLS off the connection is refused.
Root topic
The first part of every topic the node publishes to. msh/US/AR. The node adds the rest (/2/e/…, /2/map/) by itself.
Map Reporting Enabled
The node publishes its own listing: name, hardware, role, firmware, region, modem preset and position. Turn on (accept the notice). This alone puts your node on the list and the map.
Map report publish interval
How often that listing goes out. Meshtastic's default is 3600 seconds (one hour), which is also the least allowed. A new node can take up to an hour to appear.
Map report position precision
How exactly the position is shared. A smaller number is a bigger fuzzy area. The default is about 1.5 km. Pick what you are comfortable with; the pages show exactly what the node published and never more.
Encryption Enabled
On: the node sends the packets it hears still encrypted with the channel key, and we cannot use them. Off: it sends them as they are. For a gateway, turn off (public default channel only, see below). The map report is always unencrypted and does not need this.
JSON Enabled
Also publishes packets as JSON. Leave off. We read the standard form, and JSON is not supported on nRF52 boards.
MQTT proxy (“Proxy to client”)
Uses your phone's internet instead of the node's own Wi-Fi. Turn on only for a node with no Wi-Fi, and keep the phone connected to the node and the app open. The server address and login are still filled in on the node.

Channels → Primary channel

Uplink Enabled
The node publishes what it hears on this channel to MQTT. Turn on for a gateway. Only for a channel that is public (see the warning below). Off for every private channel.
Downlink Enabled
The node also pushes what is published on the server onto your radio mesh. Leave off. It floods your mesh with traffic from elsewhere and the ArkSignal broker never sends any.
Position precision (channel)
Limits how exactly positions on this channel are shared, for every packet, not only the map report. Keep the default for the public channel.

Radio Config → LoRa

Region
US.
Modem preset
The speed and range trade-off. Use the one the other Arkansas nodes use (Long Fast by default) or you will not hear each other.
Okay to MQTT
Newer firmware has this switch. On, it tells other people's gateways they may pass your node's packets on to MQTT. Leave on if you want neighbors' gateways to report your node; off keeps your node off the internet unless you uplink it yourself.

Module Config → Neighbor Info

Enabled
The node reports which nodes it hears directly and how strongly. Off by default. See Neighbor Info.
Update interval
How often. Default 6 hours, at least 4 hours.
Transmit over LoRa
Also sends the report over the air. Not available on the public default channel. Leave off.
Neighbor Info

The Neighbor Info module makes a node announce which nodes it hears directly (zero hops) and the signal-to-noise ratio of each link. Put together from many nodes, that is a picture of how the mesh is really connected. It does not change how messages are routed, it is off by default, and it sends little: one report every few hours.

  • To use it: Radio Config → Module Config → Neighbor Info → Enabled on; leave the interval at the default (6 hours; the shortest allowed is 4).
  • The report goes to the MQTT broker and to your phone app. It goes out over the radio only when Transmit over LoRa is on, which needs firmware 2.5.13 or later and a primary channel that is not the public default. Keep that off.
  • It reaches us only from a node that has MQTT uplink on for the channel it uses, like any other packet.
  • What we do with it: ArkSignal reads Neighbor Info that a gateway passes on in the clear (the same rule as telemetry: the gateway needs Encryption Enabled off and Uplink on for the channel, and an encrypted report is never read). The direct links are kept for 30 days, drawn as lines on the Mesh Map (the Direct Links layer, colored by signal) where both nodes have a position, and listed on each node's page. Only nodes inside our area are kept and a hidden node is never shown. Turn the module on: it costs one short report every few hours.
Work as a Gateway: Listen for Other Nodes

A gateway is a node that also passes on what it hears from other nodes, so the map learns about nodes that have no internet of their own and about who hears whom. One good gateway covers a whole neighborhood of nodes. Everything in the steps above still applies; then add these:

  1. A reliable internet connection for the node itself: Wi-Fi or Ethernet on the node, or a phone running the app with MQTT proxy on. A gateway on a phone only gateways while the phone is connected, so a node with its own Wi-Fi on steady power is best.
  2. Placement: as high and clear as you can; a gateway hears as far as its radio does. Indoors by a window is fine to start.
  3. Channel: on Channels → Primary turn Uplink Enabled on and leave Downlink Enabled off.
  4. Encryption Enabled off in the MQTT module, so what the gateway hears is passed on as it is.
  5. Only on the public default channel. With encryption off, everything the channel carries goes to the server unscrambled. Never switch uplink on for a private channel, and never share the key of a private channel with the broker. If your primary channel is private, add the public default as a secondary channel and uplink only that one.
  6. Keep Map Reporting on so the gateway itself is listed.
  7. Wait a few minutes. Open the Mesh Map, open your node's page: it says This node is itself a gateway for a number of nodes, and the pages of those nodes list your node under Heard By, with the signal it measured.

What we keep from a gateway: positions, node information and telemetry from other nodes, with the signal. Text messages and every private channel are dropped unread as soon as they arrive.

More than one gateway hearing the same node is fine: the site counts each separately. A busy public channel can overload a small node; if yours reboots or lags, turn uplink off and use the map report alone.

After You Are Feeding
  1. Search for your node's name on the Mesh Nodes list; its page shows what it published and which gateways or observers heard it.
  2. Find it on the Mesh Map; select it to see lines to everything that hears it, colored by signal.
  3. A node without a published position is listed but not mapped: turn on map reporting (Meshtastic) or set the location on the repeater (MeshCore).
  4. To have a node left off the pages, ask (Contact).
Local Meshes and Maps

Communities in Arkansas and the states around it, and the public maps. Their data is theirs; these are links.

Ports and Firewall

Your node only makes outbound connections. You do not need to open or forward anything on your router.

WhatDirectionDestinationPort
Meshtastic MQTT, MeshCore observeroutbound TCP (TLS)feed.arksignal.net8883

If your network filters outbound traffic (some schools, businesses and carrier-grade NAT connections do), allow that port to the host name above. A Meshtastic node on the phone app's MQTT proxy uses the phone's own connection.

Troubleshooting
SymptomWhat to check
My Meshtastic node is not on the listThe map report goes out about once an hour, so a new node can take up to an hour to appear. Check MQTT is enabled, the node or phone is online, TLS is on with the port above, the username and password are right, the region is US and Map Reporting is on with a position.
It is listed but not on the mapA node without a published position is listed only. Turn on position sharing in the map report settings (Meshtastic) or set the location on the repeater (MeshCore).
The position is not exactThat is the precision you set; the pages show what the node published, never more.
Heard By is emptyOnly a gateway (Meshtastic uplink with Encryption off) or an observer (MeshCore) reports who heard whom. A node that only sends its own map report appears, but nothing says who heard it.
The broker refuses the connectionThe login or the TLS setting is wrong, or the broker is not open to nodes yet (the box under The Short Version is empty). Check service status.
A MeshCore node is missingOnly adverts with a valid signature are used, and only nodes in the Arkansas area (with a margin) are kept. A repeater must advertise (flood advert) for observers to hear it.
Your Data and Privacy
  • Only what a node publishes in the clear is used: the Meshtastic map report, position, node information and telemetry, and MeshCore adverts. Anything encrypted, chat above all, is never decrypted, stored or shown.
  • The pages show the node's name, hardware or kind, firmware, the position it published at the precision its owner chose, when it was last heard and which gateways or observers heard it. Nodes not heard for a while are forgotten.
  • To have a node left off, ask (Contact): it is removed and not shown again.
  • Each member's login is their own. It lets a node publish to the mesh topics and never read anything, and switching one off or deleting it refuses that node at once without touching anyone else's. Passwords are kept sealed.
  • If you tick "show my name" on a login, the pages of the nodes you list say they are run by you; otherwise your name is never shown.
More Help