Hi,
eigentlich ist alles ganz einfach:
- U-Blox GPS Empfänger mit USB-Anschluss gekauft
- angesteckt und Infos ausgelesen mit lsusb: ID 1546:01a7 U-Blox AG
- nachsehen (und wer will etwas nachgetragen in file:///usr/share/usb.ids) (Referenz in man page von lsusb)
- das Kernel-Modul cdc_acm wurde automatisch geladen (prüfe mit lsmod|grep acm)
- und im dmesg finden sich die Zeilen:
usb 9-5: New USB device found, idVendor=1546, idProduct=01a7
usb 9-5: New USB device strings: Mfr=1, Product=2, SerialNumber=0
usb 9-5: Product: u-blox 7 - GPS/GNSS Receiver
usb 9-5: Manufacturer: u-blox AG - www.u-blox.com
[...]
cdc_acm 9-5:1.0: ttyACM0: USB ACM device
usbcore: registered new interface driver cdc_acm
- Das Device file:///dev/ttyACM0 gibt es und es hat die richtigen Berechtigungen.
- Bei den ersten Bearbeitungsversuchen war das USB-Modul sehr schweigsam.
Nach einiger Zeit begann es munter grün zu blinken und auch zu texten: cat /dev/ttyACM0
- Nächste Station auf dem Weg zum Netzwerkdienst zypper install gpsd
- minimalistisches Starten des daemons gpsd /dev/ttyACM0
- mit Kontroll-Socket und explizit angegebenem Default-port gpsd -F /var/run/gpsd.sock -S 2947 -G /dev/ttyACM0
- Testen mit Anwendung xgps (im Paket "gpsd-clients")
- Nachsehen wie der Start lief: netstat -tan und feststellen, dass der Daemon nur ohne {tt]-G[/tt] local und auf IPv4 läuft:
tcp 0 0 127.0.0.1:2947 0.0.0.0:* LISTEN
und mit -G ist er auch von anderen Systemen abrufbar sowohl über IPv4 wie auch über IPv6:
tcp 0 0 0.0.0.0:2947 0.0.0.0:* LISTEN
tcp 0 0 :::2947 :::* LISTEN
- Konfigurieren wie man das seit 20 Jahren SuSE eben so macht in file:///etc/sysconfig/gpsd sind 3 Einträge (Kommentare gelöscht)
Hier beginnen meine Problemchen:
- Ändern von no auf yes, ändert zwar die Datei, ergibt aber keinen Hotplug-Service. Das USB-Gerät wird erkannt, das Kernel-Modul und das tty geladen. Das war es.
- Also mit rpm -ql gpsd die Dateien des Paketes erfragt:
- Es gibt wohl den Dienst service mit Dateien unter file:///usr/lib/systemd/system/
- und den mit "yes" vermeindlich aktivierten Hotplug-dienst uDev unter file:///usr/lib/udev/
Erster Anlauf mit uDev:
- in der Datei file:///usr/lib/udev/rules.d/51-gpsd.rules fehlt der passende Eintrag, also aus Unwissenheit, ob ttyUSB* wörtlich zu nehmen ist:
# U-Blox AG
KERNEL=="ttyACM*", ATTR{idVendor}=="1546", ATTR{idProduct}=="01a7", RUN="gpsd.sh"
KERNEL=="ttyUSB*", ATTR{idVendor}=="1546", ATTR{idProduct}=="01a7", RUN="gpsd.sh"
- in der vermutlich aufgerufenen Datei file:///usr/lib/udev/gpsd.sh
+ resultiert die Variable DEVNAME vermutlich aus der Übergabe
+ es kann wohl nur ein USB-Device damit gleichzeitig aktiv sein
- Nach ein bisschen Lesen fällt das Kommando gpsdctl (mit 'd') im Paket auf:
# ps ax | grep gps
861 pts/5 S+ 0:00 grep --color=auto gps
# gpsdctl add /dev/ttyACM0
# ps ax | grep gps
864 ? S<s 0:00 gpsd -F /var/run/gpsd.sock
867 pts/5 S+ 0:00 grep --color=auto gps
# gpsdctl remove /dev/ttyACM0
# ps ax | grep gps
864 ? S<s 0:00 gpsd -F /var/run/gpsd.sock
867 pts/5 S+ 0:00 grep --color=auto gps
- Eher ein Streifschuss, denn egal ob in der file;///etc/sysconfig/gpsd auf yes oder no steht, es fehlt der "DEVNAME". Und beenden funktioniert auch nicht.
- Auskommentieren der beiden Zeilen oben in file:///usr/lib/udev/rules.d/51-gpsd.rules ändert nichts am Ergebnis.
Nun zum zweiten Anlauf mit service:
# /usr/sbin/rcgpsd start
A dependency job for gpsd.service failed. See 'journalctl -xe' for details.
# service gpsd start
A dependency job for gpsd.service failed. See 'journalctl -xe' for details.
# service gpsd status
● gpsd.service - GPS (Global Positioning System) Daemon
Loaded: loaded (/usr/lib/systemd/system/gpsd.service; disabled; vendor preset: disabled)
Active: inactive (dead)
Den in den Dateien erwähnten Dienst chronyd habe ich testweise installiert und gestartet, ohne Änderung am Ergebnis.
Hier wäre mir eine Hilfestellung recht.
Ich habe das Gefühl, je nach Distribution und Kalendermonat ändert sich dieser Konfigurationsteil recht stark,
während die Qualität der Fehlereingrenzung aus meiner Sicht sub omni canone ist (unter jedem Standard/Kanon).
Wie kann ich den gpsd als Systemdienst im Rahmen der Standard-Installation starten?
Bitte: Erklären, was wo warum geändert werden muss. (Die Doku werde ich dann trotzdem noch lesen.)