CoMaps gets its location from geoclue2. On Linux, geoclue2 has no native gpsd support — it only reads live GPS fixes from a Unix socket streaming raw NMEA sentences (the network-nmea source), normally discovered via Avahi on a local network. It does not speak gpsd's protocol directly.
If you have a USB GPS receiver working with gpsd/cgps/xgps, geoclue will still ignore it and fall back to coarse IP-based (GeoIP) location unless you bridge gpsd's NMEA output into a socket geoclue can read.
This will set up:
- A small bridge service that republishes gpsd's NMEA stream onto a Unix socket.
- geoclue2 configuration pointing at that socket.
- udev rules so the bridge automatically starts when the GPS is plugged in and stops when it is unplugged — falling back to IP-based location automatically, with nothing running when the GPS is not connected.