How to Feed the Mesh Map
The Short Version
| MQTT server | feed.<wbr>arksignal.<wbr>net |
|---|---|
| Port (TLS) | 8883 |
| Username and password | Your own, made on My Mesh Nodes (sign in or register first) |
| Meshtastic root topic | msh/US/AR |
| MeshCore topics | meshcore/<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.
| System | What you send and what we keep |
|---|---|
| Meshtastic map report | Your 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 gateway | A 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 observer | A 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 else | Text 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
| Item | Options and Notes |
|---|---|
| Meshtastic node | The 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 node | MeshCore 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. |
| Antenna | A 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 computer | A Raspberry Pi or any small Linux machine for meshcoretomqtt (MeshCore only). |
Hardware Setup
- Mount the antenna as high as practical with a clear view; keep metal and other radios away from it.
- 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).
- Give the node a real position (a GPS fix or a position set in the app) so the map can place it.
- For MeshCore, connect the repeater or companion to the observer computer by USB and note its serial port (ls /dev/ttyACM*).
- 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
- Open the node in the Meshtastic app (or the web client). Under Radio Config → Module Config → MQTT turn Enabled on.
- 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.
- 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).
- 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.
- 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.
- 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
- Install meshcoretomqtt on the computer the repeater or companion is plugged into (its README has the install steps and the serial port setting).
- Add our broker in its config.d/99-user.toml. You can keep any other broker it already uses.
- 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.
- Install the Meshtastic app (Android: Google Play; iPhone: App Store) or use the web client in Chrome over USB or Bluetooth.
- 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.
- 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).
- 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.
- 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.
- 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.
- 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
Channels → Primary channel
Radio Config → LoRa
Module Config → Neighbor Info
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:
- 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.
- 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.
- Channel: on Channels → Primary turn Uplink Enabled on and leave Downlink Enabled off.
- Encryption Enabled off in the MQTT module, so what the gateway hears is passed on as it is.
- 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.
- Keep Map Reporting on so the gateway itself is listed.
- 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
- Search for your node's name on the Mesh Nodes list; its page shows what it published and which gateways or observers heard it.
- Find it on the Mesh Map; select it to see lines to everything that hears it, colored by signal.
- A node without a published position is listed but not mapped: turn on map reporting (Meshtastic) or set the location on the repeater (MeshCore).
- 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.
- LR Mesh: Central Arkansas Meshtastic: configuration guide, community and the US Arkansas Discord thread
- NWA Mesh: Northwest Arkansas Meshtastic
- Hot Springs Mesh: Hot Springs area Meshtastic
- Memphis Mesh: Memphis, Tennessee, across the river
- LZMesh: Southwest Missouri and the surrounding area
- Meshtastic Public Mesh Map: A nearly live map of Meshtastic nodes seen by the official Meshtastic MQTT server (not our data)
- MeshCore Node Map: Nodes MeshCore users have put on the community map (not our data)
- Meshtastic documentation: Getting started, MQTT and map reporting
- MeshCore: The MeshCore firmware and documentation
Ports and Firewall
Your node only makes outbound connections. You do not need to open or forward anything on your router.
| What | Direction | Destination | Port |
|---|---|---|---|
| Meshtastic MQTT, MeshCore observer | outbound TCP (TLS) | feed.arksignal.net | 8883 |
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
| Symptom | What to check |
|---|---|
| My Meshtastic node is not on the list | The 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 map | A 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 exact | That is the precision you set; the pages show what the node published, never more. |
| Heard By is empty | Only 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 connection | The 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 missing | Only 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
- Mesh Nodes: the list, and the Mesh Map.
- The other feeding pages: ADS-B, MLAT, UAT (978 MHz), Weather Stations, Radiosondes, Mesh Nodes, ACARS, AIS, Satellite Receivers, and Am I Feeding?
- Service status: is the network itself working right now?
- Contact someone from the network if you are stuck.