The stock gpsd package runs fine on buster. The default is that it only listens on the loopback interface. I would like it to listen on other interfaces so that other computers can monitor the GPS data. The gpsd list has been less than enlightening.
(Warning: long lines ahead. Your mail client may wrap them into utter unreadability.) I did find https://stackoverflow.com/questions/42240757/access-gpsd-port-2947-over-network, and implemented the first solution, the over-ride in gpsd.socket. That did not work, in fact local clients were blocked from the daemon as well as remote clients. I then backed out those changes, and re-enabled my prior setup: [Unit] Description=GPS (Global Positioning System) Daemon Sockets [Socket] ListenStream=/var/run/gpsd.sock ListenStream=[::1]:2947 # ListenStream=127.0.0.1:2947 ListenStream=0.0.0.0:2947 SocketMode=0600 # BindIPv6Only=ipv6-only # # per https://stackoverflow.com/questions/42240757/access-gpsd-port-2947-over-network # # First blank ListenStream clears the system defaults # ListenStream= # ListenStream=2947 # ListenStream=/var/run/gpsd.sock [Install] WantedBy=sockets.target With the old configuration re-enabled, I can now get a connection from a remote client. This makes no sense. I made all changes effective with: systemctl daemon-reload systemctl restart gpsd And if necessary, re-plugging the GPS receiver. In addition, I also found out that running "systemctl disable gpsd" does not in fact disable it: root@hawk:/etc/systemd/system# systemctl stop gpsd ; systemctl disable gpsd ; systemctl status gpsd Warning: Stopping gpsd.service, but it can still be activated by: gpsd.socket Synchronizing state of gpsd.service with SysV service script with /lib/systemd/systemd-sysv-install. Executing: /lib/systemd/systemd-sysv-install disable gpsd insserv: warning: current start runlevel(s) (empty) of script `gpsd' overrides LSB defaults (2 3 4 5). insserv: warning: current stop runlevel(s) (0 1 2 3 4 5 6) of script `gpsd' overrides LSB defaults (0 1 6). insserv: warning: current start runlevel(s) (empty) of script `gpsd' overrides LSB defaults (2 3 4 5). insserv: warning: current stop runlevel(s) (0 1 2 3 4 5 6) of script `gpsd' overrides LSB defaults (0 1 6). ● gpsd.service - GPS (Global Positioning System) Daemon Loaded: loaded (/lib/systemd/system/gpsd.service; disabled; vendor preset: enabled) Active: active (running) since Thu 2019-09-19 11:23:50 MDT; 515ms ago Main PID: 7397 (gpsd) Tasks: 1 (limit: 4915) Memory: 828.0K CGroup: /system.slice/gpsd.service └─7397 /usr/sbin/gpsd -Gn Sep 19 11:23:50 hawk systemd[1]: Starting GPS (Global Positioning System) Daemon... Sep 19 11:23:50 hawk systemd[1]: Started GPS (Global Positioning System) Daemon. root@hawk:/etc/systemd/system# This may be due to the fact that I have gpsd clients which will try to re-connect to gpsd when they lose their connection. Still, why is systemd re-starting a service I just told it to disable? -- Does anybody read signatures any more? https://charlescurley.com https://charlescurley.com/blog/