GPS

Configure GPS receivers for position-driven beacons

A GPS receiver provides live position data for tracker beacons and SmartBeacon rate adaptation. Graywolf supports two GPS source types: direct serial NMEA and the gpsd daemon.

GPS page showing serial port configuration with device path and baud rate
GPS configuration using a serial NMEA receiver

Settings

FieldDefaultDescription
enabled false Enable GPS receiver
source_type none none, serial, or gpsd

Serial NMEA

Connect a GPS receiver directly via serial port. Graywolf reads NMEA 0183 sentences and extracts position, speed, and course data.

FieldDefaultDescription
device Serial device path (e.g., /dev/ttyUSB0, /dev/ttyACM0)
baud_rate 4800 Serial baud rate (most GPS modules use 4800 or 9600)

The graywolf user needs permission to access the serial device. The systemd service includes the dialout group for this purpose. For manual runs, add your user to the group: sudo usermod -aG dialout $USER

gpsd

gpsd is a GPS service daemon that manages GPS hardware and provides a clean TCP interface. Use this when gpsd is already running on your system or when you need to share a GPS receiver between multiple programs.

FieldDefaultDescription
gpsd_host localhost gpsd server hostname
gpsd_port 2947 gpsd server port

gpsd is the recommended approach for Raspberry Pi setups. It handles device hotplug, PPS timing, and allows multiple clients to share one GPS receiver. Install it with sudo apt install gpsd.

Position Cache

GPS positions are cached in memory and made available to beacons and the REST API. When a beacon has use_gps: true, it pulls the latest cached position at transmission time. If no GPS fix is available, the beacon falls back to its configured static coordinates.

Hot Reload

GPS configuration changes take effect immediately without restarting graywolf. When you update GPS settings through the web UI or API, the GPS receiver is stopped and restarted with the new configuration.

API Reference

MethodEndpointDescription
GET/api/gpsGet GPS configuration
POST/api/gpsUpdate GPS settings
GET/api/positionGet current cached position