gpsd-users
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: gpsd tcp NMEA feed


From: Frank Nicholas
Subject: Re: gpsd tcp NMEA feed
Date: Mon, 26 Sep 2022 09:59:01 -0400

Hello Nick,

Gary’s probably going to need more information:
1. Version of GPSD on both client & server?
2. Where was GPSD obtained from:  Linux distro, tarball binary (from where?), 
or compiled from source?
3. Is systemd involved on the client or server?
4. What OS & version are you running GPSD on?

Thanks,
Frank Nicholas
+1 812 764 6494

> On Sep 26, 2022, at 7:13 AM, Nick Taylor <nicktaylor@dataskill.uk> wrote:
> 
> Hey Gary
> 
> You may recall in the dim and distant past we hassled you for a change to 
> make the tcp NMEA feed option more reliable and resilient... It has taken us 
> a long long time to get approval to test this on our customer installations 
> but we are now able to see how the option performs in the real world.
> 
> For some reason the feed works fine for a while and then gpsd stops receiving 
> feed - even though we can verify feed using telnet. I have managed to setup a 
> fail situation which may or may not be similar to what's happening in the 
> field, however I think this is still a valid case where it would be nice if 
> gpsd could reconnect to the feed.
> 
> My test setup is as follows:
> 
> Machine A running std gpsd with feed from hardware device
> 
> Create tcp feed from machine A as per your docs:
> socat EXEC:'gpspipe -r' TCP-LISTEN:2948,reuseaddr,fork
> 
> Machine B run gpsd in debug mode:
> gpsd -D5 -n -N tcp://192.168.2.53:2948
> 
> All good so farnow interrupt the feed from machine A as follows:
> iptables -I OUTPUT -d 192.168.2.52 -j DROP; sleep 1200; iptables -D OUTPUT -d 
> 192.168.2.52 -j DROP
> 
> Machine A we see this:
> 2022/09/26 09:55:07 socat[16311] E write(7, 0x7f674db0, 8192): Connection 
> timed out
> 
> gpsd log on machine B loops as follows:
> gpsd:PROG: CORE: pselect: timeout
> gpsd:PROG: checking client(0)
> gpsd:CLIENT: <= client(0): ?WATCH={"enable":true,"json":true};
> 
> gpsd:PROG: awaken(0) fd 7, path tcp://192.168.2.53:2948
> gpsd:PROG: device 0 (fd=7, path tcp://192.168.2.53:2948) already active.
> gpsd:CLIENT: => client(0) len 278: 
> {"class":"DEVICES","devices":[{"class":"DEVICE","path":"tcp://192.168.2.53:2948","driver":"NMEA0183","a
> ctivated":"2022-09-26T09:37:29.345Z","flags":1}]}
> {"class":"WATCH","enable":true,"json":true,"nmea":false,"raw":0,"scaled":false,"timing":false,"split24":false,"pps":false}
>  
> 
> gpsd:PROG: CORE: pselect: timeout
> gpsd:PROG: gpsd_multipoll(7) DEVICE_UNCHANGED for 5
> gpsd:PROG: checking client(0)
> gpsd:CLIENT: <= client(0): ?WATCH={"enable":true,"json":true};
> 
> gpsd:PROG: awaken(0) fd 7, path tcp://192.168.2.53:2948
> gpsd:PROG: device 0 (fd=7, path tcp://192.168.2.53:2948) already active.
> gpsd:CLIENT: => client(0) len 278: 
> {"class":"DEVICES","devices":[{"class":"DEVICE","path":"tcp://192.168.2.53:2948","driver":"NMEA0183","a
> ctivated":"2022-09-26T09:37:29.345Z","flags":1}]}
> {"class":"WATCH","enable":true,"json":true,"nmea":false,"raw":0,"scaled":false,"timing":false,"split24":false,"pps":false}
>  
> 
> gpsd:PROG: CORE: pselect: timeout
> gpsd:PROG: checking client(0)
> gpsd:CLIENT: <= client(0): ?WATCH={"enable":true,"json":true};
> 
> gpsd:PROG: awaken(0) fd 7, path tcp://192.168.2.53:2948
> gpsd:PROG: device 0 (fd=7, path tcp://192.168.2.53:2948) already active.
> gpsd:CLIENT: => client(0) len 278: 
> {"class":"DEVICES","devices":[{"class":"DEVICE","path":"tcp://192.168.2.53:2948","driver":"NMEA0183","a
> ctivated":"2022-09-26T09:37:29.345Z","flags":1}]}
> {"class":"WATCH","enable":true,"json":true,"nmea":false,"raw":0,"scaled":false,"timing":false,"split24":false,"pps":false}
> 
> Feed can be seen on machine B using telnet, but it seems gpsd doesn't notice 
> the failed connection and the only way I found to recover is to restart gpsd
> 
> Your input would be much appreciated
> 
> Thanks and regards
> 
> Nick
> 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]