Skip to main content

Fixed Position for Repeater Nodes

Fixed Position for Repeater Nodes

A repeater node that knows its own location serves the community in two ways: it appears accurately on coverage maps, and it lets neighbouring nodes calibrate their own position estimates. Without a fixed position, a GPS-less repeater either appears at coordinate (0, 0) in the ocean or does not appear on the map at all. This page explains how to configure a precise static position, how to reduce position precision for privacy, and how to minimise the air-time cost of periodic position broadcasts.


Why a Fixed Position Matters for Infrastructure Nodes

  • Coverage visibility — Community members and emergency coordinators use the network map to understand what areas are served. A repeater with an accurate position lets them trace coverage boundaries and identify gaps.
  • Traceroute path correlation — When operators run traceroutes, hop positions appear on the map. A correctly placed repeater gives a geographically meaningful path diagram.
  • SNR context — Signal-to-noise ratio reports are much more useful when the receiving node's coordinates are known, because operators can correlate signal strength with distance and terrain.
  • No GPS module required — Many dedicated repeater platforms (e.g. RAK WisBlock with no GPS module, T-Beam with GPS disabled) can broadcast a fixed configured position without incurring GPS power draw.

Configuring a Static GPS Position Without a GPS Module

Method 1: Meshtastic CLI

The --setlat, --setlon, and --setalt flags write a fixed position directly to the device's configuration storage. Once set, this position is broadcast as the node's location even with no GPS hardware present.

# Set position for a repeater at the top of Mount Davidson, San Francisco
# Latitude: 37.7406, Longitude: -122.4538, Altitude: 282 metres
meshtastic --setlat 37.7406 --setlon -122.4538 --setalt 282

Determine the coordinates of your site using Google Maps, CalTopo, or any mapping tool that provides WGS84 decimal degrees (the standard Meshtastic expects). Right-click the exact antenna location on Google Maps to copy coordinates.

Method 2: Meshtastic Python API

from meshtastic.serial_interface import SerialInterface
import meshtastic.mesh_pb2 as mesh_pb2

iface = SerialInterface()

# Build a Position protobuf
pos = mesh_pb2.Position()
pos.latitude_i = int(37.7406 * 1e7)   # stored as integer, scaled by 1e7
pos.longitude_i = int(-122.4538 * 1e7)
pos.altitude = 282
pos.time = 0  # will be filled in by firmware

iface.localNode.setPosition(pos.latitude_i / 1e7, pos.longitude_i / 1e7, pos.altitude)
iface.close()

Method 3: Meshtastic Web UI

Connect to the node's web interface (available on ESP32-based devices at http://meshtastic.local or the device's IP when connected to Wi-Fi). Navigate to Config → Position, enable Fixed Position, and enter latitude, longitude, and altitude. Save and reboot.


Position Precision: Reducing Exact Location for Privacy

If the repeater is on private property and the owner does not want the exact address broadcast on the mesh, reduce position precision. Meshtastic supports precision levels from full resolution (sub-metre) down to approximately 23 km radius.

Common choices for community repeaters:

  • Full precision (default) — broadcast exact coordinates. Acceptable for tower sites, mountain tops, and public-land installations.
  • ~1 km precision — rounds to the nearest kilometre. Identifies the general neighbourhood without revealing the specific building.
  • ~10 km precision — rounds to the nearest 10 km. Useful for regional-scale maps where sub-kilometre accuracy is unnecessary and the operator prioritises privacy.
# Set position precision to approximately 1 km (precision value 14)
meshtastic --set position.position_precision 14

# Set position precision to approximately 10 km (precision value 11)
meshtastic --set position.position_precision 11

# Restore full precision (precision value 32)
meshtastic --set position.position_precision 32

The position_precision value is a bit-field width — higher values mean more significant bits retained from the raw coordinate, i.e. higher accuracy. Values below 10 round so aggressively that the position becomes almost meaningless for map purposes.


Position Broadcast Interval for Fixed Nodes

A fixed repeater does not move. Broadcasting its position every few minutes — the default behaviour when position_broadcast_smart_disabled is false — wastes significant air-time that could be used by mobile nodes. For a static infrastructure node, set the broadcast interval to at least 12 hours (43200 seconds), or even 24 hours (86400 seconds).

# Set position broadcast interval to 12 hours (43200 seconds)
meshtastic --set position.position_broadcast_secs 43200

# Set position broadcast interval to 24 hours (86400 seconds) — recommended for fixed sites
meshtastic --set position.position_broadcast_secs 86400

# Disable smart position updates (these are based on movement; irrelevant for fixed nodes)
meshtastic --set position.position_broadcast_smart_disabled true

With a 24-hour interval, a fixed repeater broadcasts its position exactly once per day on power-up plus once per day thereafter. Compare this to the default which can produce a position packet every 5–15 minutes — saving dozens of transmissions per day across a network with multiple infrastructure nodes.


Verifying the Fixed Position Was Applied

# Check position configuration on the device
meshtastic --get position

# Pull the device info including last known position
meshtastic --info | grep -A 5 position

After the node reboots following a position update, connect to the Meshtastic app and look at the node list. The repeater should appear at the correct location on the map within one position broadcast interval.


Altitude Accuracy

Altitude in Meshtastic is stored in whole metres above the WGS84 ellipsoid (not above sea level). For antenna-height accuracy, use the elevation of the antenna itself, not ground level at the base of the tower. For most community mapping purposes, ground-level elevation from a topo map is sufficient — the difference rarely affects coverage visualisations.

Find accurate elevation using the USGS National Map (apps.nationalmap.gov) or open-elevation.com/api/v1/lookup?locations=LAT,LON for non-US sites.