OpenWrt: GPS für GL-X3000-Router aktivieren und GPS-Daten im Netzwerk bereitstellen
Wie beim bisher von mir eingesetzten 4G-/LTE-Router GL-X750 (Spitz) unterstützt das 5G-/4G-Modem des Nachfolgers GL-X3000 (Spitz AX) den Empfang von GPS-Daten. Im Gegensatz zum GL-X750 bedarf es beim GL-X3000 jedoch keiner separaten externen GPS-Antenne.
Standardmäßig ist der GPS-Empfang des Modems deaktiviert. Zum Aktivieren sind sogenannte AT-Befehle an das Modem zu senden. Möchte man nun mit anderen Geräten diese GPS-Daten verarbeiten, so kann man bspw. mit gpsd die Daten im Netzwerk via TCP/UDP z.B. im NMEA-Format zum Abruf bereitstellen.
GPS des Modems aktivieren
Grundsätzlich lassen sich die AT-Befehle mit einem einfachen echo ans Modem senden. In diesem Fall erhält man aber kein Feedback vom Modem zurück bzw. bekommt es nicht angezeigt. Insofern nutze ich zum Absenden der AT-Befehle picocom, welches sich wie folgt installieren lässt:
opkg install picocom
Danach ruft picocom wie folgt auf:
picocom /dev/ttyUSB2
Gebt AT ein, um zu Testen ob alles funktioniert. Wenn das der Fall ist, solltet ihr vom Modem als Antwort OK erhalten.
Nun könnt ihr die GPS-Funktionalität des Modems aktivieren:
AT+QGPS=1
OKNach der Aktivierung kann es einige Minuten dauern bis das Modem GPS-Daten empfangen hat. Zum Testen könnt ihr die aktuellen GPS-Daten mit folgendem AT-Befehl abfragen:
AT+QGPSLOC?
+QGPSLOC: 141501.00,[...] Erhaltet ihr einen 516-Fehler dann konnten noch keine Daten empfangen werden. In diesem Fall wartet ggf. noch etwas bzw. probiert den Router, je nachdem wo er positioniert ist, umzustellen.
Nachdem ihr nun die GPS-Funktionalität des Modems aktiviert habt, lassen sich die GPS-Daten über das Gerät /dev/ttyUSB1 abfragen. Zum Testen reicht ein einfaches cat /dev/ttyUSB1.
GPS-Daten im Netzwerk bereitstellen
Damit ihr die GPS-Daten nun mit anderen Geräten verarbeitet könnt, können diese mittels gpsd im Netzwerk zum Abruf zur Verfügung gestellt werden. Dazu installiert das entsprechende Paket:
opkg install gpsd
Öffnet nun die gpsd-Konfigurationsdatei /etc/config/gpsd und passt sie wie folgt an:
config gpsd 'core'
option enabled '1'
option device '/dev/ttyUSB1'
option port '2947'
option listen_globally '1'Nach Anpassung der Konfiguration könnt ihr den gpsd-Service/Dienst wie folgt starten:
/etc/init.d/gpsd enable
/etc/init.d/gpsd start
Das enable ist optional für den Fall, dass bei einem Neustart des Routers der gpsd-Service direkt mitgestartet werden soll.
Zum Überprüfen, ob der Service korrekt gestartet wurde, könnt ihr schauen, ob gpsd auf dem entsprechenden Port lauscht:
netstat -ntlp | grep LISTEN
tcp 0 0 0.0.0.0:2947 0.0.0.0:* LISTEN 5835/gpsdGPS-Daten über Netzwerk abrufen
Der Abruf der GPS-Daten kann über die IP eures Routers und den konfigurierten Port erfolgen. In meinem Beispielfall wäre das z.B. 192.168.1.1:2947. Auf meinem Notebook unter Arch Linux habe zum Testen auch gpsd installiert. Das Paket bietet einige Tools, mit den sich die GPS-Daten abfragen lassen. Im konkreten Fall habe ich xgps eingesetzt. Der Aufruf sieht wie folgt aus:
xgps 192.168.1.1
Wenn die Verbindung hergestellt werden kann, dann öffnet sich das GUI von xgps, welches euch die aktuellen Daten übersichtlich darstellt:

Fazit
Habt ihr einen mobilen Router, der GPS unterstützt, ist es unter OpenWrt ohne größeren Aufwand möglich, die GPS-Daten zu empfangen und im Netzwerk zur Verfügung zu stellen.