#!/coding/blatt
Sammelsurium mit Schwerpunkten Linux & IT-Sicherheit

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.

Folgende Geräte bzw. Software wurden verwendet:
  • Spitz AX - 5G-/4G-/LTE-Router - GL-X3000
  • Notebook mit Arch Linux
  • OpenWrt r26632-2db6459ed4 / LuCI Master 25.158.03388~a6f8361
  • gpsd v3.23.1-2

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
Terminal / Konsole

Danach ruft picocom wie folgt auf:

picocom /dev/ttyUSB2
Terminal / Konsole

Gebt AT ein, um zu Testen ob alles funktioniert. Wenn das der Fall ist, solltet ihr vom Modem als Antwort OK erhalten.

Hinweis AT-Befehle ggf. nachschlagen

Die AT-Befehle können ggf. je Hersteller und Modem unterschiedlich sein. Im Zweifel müsst ihr in der Dokumentation des jeweiligen Modems die entsprechenden Befehle nachschlagen.

Nun könnt ihr die GPS-Funktionalität des Modems aktivieren:

AT+QGPS=1
OK
Terminal / Konsole

Nach 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,[...]
Terminal / Konsole

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.

Hinweis GPS-Autostart nach Neustart & GPS deaktivieren

Soll GPS auch nach einen Neustart des Routers aktiviert bleiben, lässt sich das mit dem AT-Befehl AT+QGPSCFG="autogps",1 bewerkstelligen.

Zum Deaktivieren des GPS-Empfangs verwendet AT+QGPSEND.

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
Terminal / Konsole

Ö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'
Datei: /etc/config/gpsd

Nach Anpassung der Konfiguration könnt ihr den gpsd-Service/Dienst wie folgt starten:

/etc/init.d/gpsd enable
/etc/init.d/gpsd start
Terminal / Konsole

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/gpsd
Terminal / Konsole
Hinweis UCI-Konfiguration: eingeschränkte gpsd-Konfiguration

Die UCI-Konfigurationsdatei von gpsd ist leider recht eingeschränkt und lässt nicht alle von gpsd bereitgestellten Konfigurationsmöglichkeiten zu. Möchtet ihr also z.B. UDP nutzen, oder den Service nur auf einer bestimmten IP lauschen lassen, dann solltet ihr gpsd direkt verwenden bzw. eine eigene Service-Datei unter /etc/init.d/ anlegen.

GPS-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
Terminal / Konsole

Wenn die Verbindung hergestellt werden kann, dann öffnet sich das GUI von xgps, welches euch die aktuellen Daten übersichtlich darstellt:

OpenWrt: 5G-/4G-Router GL-X3000

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.