Service Announcement
Changes were made to mqtt.meshtastic.org. Uplink your nodes to
to continue showing on this map.
Meshtastic Map
Created by Liam Cottle
About
Search
Devices
Random
Settings
Reload

# Meshtastic Map

## Created by Liam Cottle

👋 Welcome to my open source map of Meshtastic nodes heard on MQTT.
Features

- The map shows nodes that have sent a valid position to MQTT.
- Position packets must be unencrypted, or encrypted with the default key.
- Use the search bar to find nodes by ID or name.
- Hover over nodes (on desktop) to see basic details.
- Click a node to see info such as telemetry graphs and traceroutes.
- Use the top right layers panel to show neighbours and waypoints.
- Use the settings button to configure the map to your liking.
- Have a feature request, or found a bug? Open an issue on GitHub.

FAQ
How do I add my node to the map?
Your node, or a node that hears your node must uplink to our MQTT server.
Your position packet must be unencrypted, or encrypted with the default key.
If your node has v2.5 firmware or newer, you must enable "OK to MQTT".
Use the MQTT server details below to uplink to this map.
What MQTT server should I use?

- Address: mqtt.meshtastic.liamcottle.net
- Username: uplink
- Password: uplink
- Encryption Enabled: Yes
- JSON Output: No
- TLS Enabled: No

Please note, nodes can only uplink to this server. Downlink is disabled.
We suggest running dedicated nodes for uplinking to the map.
How do I remove my node from the map?
Nodes that have not been heard for 7 days are automatically removed.
Disable position reporting in your node to prevent it coming back.
Use custom encryption keys so the public can't see your position data.
If your node has v2.5 firmware or newer, we ignore packets if "OK to MQTT" is disabled.
To have your node removed now, please contact me.
How do I see neighbours a node heard?
Open the top right layers panel and enable neighbours.
Some neighbours are from MQTT, this is patched in latest firmware.
Why is my node showing up in the wrong place?
This public map obfuscates your position packets for v2.4 firmware and older.
Nodes on v2.4 and older have their positions truncated to 2 decimal places.
Nodes on v2.5 and newer, with "OK to MQTT" enabled, will show positions with your configured precision.
Nodes on v2.5 and newer, with "OK to MQTT" disabled, will not update their positions.
Legal
This project is not affiliated with or endorsed by the Meshtastic project.
The Meshtastic logo is the trademark of Meshtastic LLC.
Map tiles provided by OpenStreetMap
Dismiss

## Meshtastic Devices

### Ordered by most popular

- {{ hardwareModel.hardware_model_name }}

  {{ hardwareModel.count }} nodes on the map

{{ selectedNode.short_name }}

## Node Info

### {{ selectedNode.long_name }}

This node has not reported a position.
Sent Msgs
Received Msgs
Gated Msgs
Details

- ID
  {{ selectedNode.node_id }}
- Hex ID
  {{ selectedNode.node_id_hex }}
- Role
  {{ selectedNode.role_name }}
- Hardware
  {{ selectedNode.hardware_model_name }}
- Firmware
  {{ selectedNode.firmware_version }} ???

LoRa Config

- Region
  {{ selectedNode.region_name }} ({{ getRegionFrequencyRange(selectedNode.region_name) }}) ???
- Modem Preset
  {{ selectedNode.modem_preset_name }} ???
- Has Default Channel
  {{ selectedNode.has_default_channel ? "Yes" : "No" }} ???

Position

- Lat/Long
  {{ selectedNode.latitude }}, {{ selectedNode.longitude }} ???
- Altitude
  {{ selectedNode.altitude }}m ???

Device Metrics

- Battery Level
  Channel Utilization
  Air Util TX
- Battery Level
  Plugged In {{ selectedNode.battery_level }}% ???
- Voltage
  {{ Number(selectedNode.voltage).toFixed(2) }}V ???
- Channel Utilization
  {{ Number(selectedNode.channel_utilization).toFixed(2) }}% ???
- Air Util Tx
  {{ Number(selectedNode.air_util_tx).toFixed(2) }}% ???
- Uptime
  {{ formatUptimeSeconds(selectedNode.uptime_seconds) }} ???

Environment Metrics

- Temperature
  Humidity
  Pressure
- Temperature
  {{ formatTemperature(selectedNode.temperature) }} ???
- Relative Humidity
  {{ Number(selectedNode.relative_humidity).toFixed(0) }}% ???
- Barometric Pressure
  {{ Number(selectedNode.barometric_pressure).toFixed(1) }}hPa ???

Power Metrics

- Channel 1
  Channel 2
  Channel 3
- Channel 1
  {{ Number(selectedNodeLatestPowerMetric.ch1_voltage).toFixed(2) }}V ??? / {{ Number(selectedNodeLatestPowerMetric.ch1_current).toFixed(2) }}mA ???
- Channel 2
  {{ Number(selectedNodeLatestPowerMetric.ch2_voltage).toFixed(2) }}V ??? / {{ Number(selectedNodeLatestPowerMetric.ch2_current).toFixed(2) }}mA ???
- Channel 3
  {{ Number(selectedNodeLatestPowerMetric.ch3_voltage).toFixed(2) }}V ??? / {{ Number(selectedNodeLatestPowerMetric.ch3_current).toFixed(2) }}mA ???

MQTT
Topics this node sent packets to

Trace Routes
Only 5 most recent are shown

Other

- First Seen
  {{ moment(new Date(selectedNode.created_at)).fromNow() }}
- Last Seen
  {{ moment(new Date(selectedNode.updated_at)).fromNow() }}
- Neighbours Updated
  {{ moment(new Date(selectedNode.neighbours_updated_at)).fromNow() }} ???
- Position Updated
  {{ moment(new Date(selectedNode.position_updated_at)).fromNow() }} ???

Share Link

## Traceroute #{{ selectedTraceRoute.id }}

### {{ moment(new Date(selectedTraceRoute.updated_at)).fromNow() }} - {{ selectedTraceRoute.route.length }} hops {{ selectedTraceRoute.channel_id ? `on ${selectedTraceRoute.channel_id}` : '' }}

- {{ findNodeById(selectedTraceRoute.to)?.short_name ?? "?" }}
  {{ findNodeById(selectedTraceRoute.to)?.long_name || '???' }}
  Hex ID: !{{ Number(selectedTraceRoute.to).toString(16) }}
  Started the traceroute
- {{ findNodeById(route)?.short_name ?? "?" }}
  {{ findNodeById(route)?.long_name || '???' }}
  Hex ID: !{{ Number(route).toString(16) }}
  Forwarded the packet
- {{ findNodeById(selectedTraceRoute.from)?.short_name ?? "?" }}
  {{ findNodeById(selectedTraceRoute.from)?.long_name || '???' }}
  Hex ID: !{{ Number(selectedTraceRoute.from).toString(16) }}
  Replied to traceroute
- {{ findNodeById(selectedTraceRoute.gateway_id)?.short_name ?? "?" }}
  {{ findNodeById(selectedTraceRoute.gateway_id)?.long_name || '???' }}
  Hex ID: !{{ Number(selectedTraceRoute.gateway_id).toString(16) }}
  Gated the packet to MQTT

Raw Data

    {{ JSON.stringify(selectedTraceRoute, null, 4) }}

## Settings

### Changes are only saved in this browser.

Nodes Max Age
Nodes not updated within this time are hidden. Reload to update map.
Nodes Disconnected Age
Nodes that have not uplinked to MQTT in this time will show as blue icons. Reload to update map.
Nodes Offline Age
Nodes not updated within this time will show as red icons. Reload to update map.
Waypoints Max Age
Waypoints not updated within this time are hidden. Reload to update map.
Neighbours Max Distance (meters)
Neighbours further than this are hidden. Reload to update map.
Zoom Level (go to node)
How far to zoom map when navigating to a node.
Temperature Format
Metrics will be shown in the selected format.
Auto Update Position in URL
Sets lat/lng/zoom as query parameters.
Enable Map Animations
Map will animate flying to nodes.

## {{ selectedNodeToShowNeighbours.short_name }} Neighbours

### Nodes heard by {{ selectedNodeToShowNeighbours.short_name }}

### Nodes that heard {{ selectedNodeToShowNeighbours.short_name }}

{{ selectedNodeToShowPositionHistory.short_name }} Position History
From:
To: