GPSD不响应新连接

时间:2019-10-04 20:23:31

标签: python sockets gps gpsd

我正在使用Ubuntu的Bionic存储库中的GPSd v3.17-5。

我遇到一个问题,即GPSd只是拒绝响应新的客户端连接。

下面是lsof的转储,它显示了gpsmon的连接方式(您可以看到gpsd和gpsmon均已建立连接),但是我的python连接仅在Python上建立一侧。

root@machine:~# lsof -n -P -i TCP:2947
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
systemd    1 root   57u  IPv6  39371      0t0  TCP [::1]:2947 (LISTEN)
systemd    1 root   58u  IPv4  40365      0t0  TCP 127.0.0.1:2947 (LISTEN)
gpsd     949 gpsd    4u  IPv6  39371      0t0  TCP [::1]:2947 (LISTEN)
gpsd     949 gpsd    5u  IPv4  40365      0t0  TCP 127.0.0.1:2947 (LISTEN)
gpsd     949 gpsd    7u  IPv4  59781      0t0  TCP 127.0.0.1:2947->127.0.0.1:41656 (ESTABLISHED)
gpsmon  3289 root    3u  IPv4  60651      0t0  TCP 127.0.0.1:41656->127.0.0.1:2947 (ESTABLISHED)
python  3387 root    5u  IPv4  61892      0t0  TCP 127.0.0.1:41662->127.0.0.1:2947 (ESTABLISHED)

如果我杀死gpsmon,它将无法重新连接,只能坐在那里。

root@machine:~# lsof -n -P -i TCP:2947
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
systemd    1 root   57u  IPv6  39371      0t0  TCP [::1]:2947 (LISTEN)
systemd    1 root   58u  IPv4  40365      0t0  TCP 127.0.0.1:2947 (LISTEN)
gpsd     949 gpsd    4u  IPv6  39371      0t0  TCP [::1]:2947 (LISTEN)
gpsd     949 gpsd    5u  IPv4  40365      0t0  TCP 127.0.0.1:2947 (LISTEN)
python  3508 root    5u  IPv4  64143      0t0  TCP 127.0.0.1:55999->127.0.0.1:2947 (ESTABLISHED)
gpsmon  6157 root    3u  IPv4  64311      0t0  TCP 127.0.0.1:41678->127.0.0.1:2947 (ESTABLISHED)

我尝试通过gpsd.socket禁用systemctl,但是重启后我的结果没有变化。第一个客户端连接看起来不错,但是之后就胡扯了。

我不知道如何解决此问题。有谁知道从哪里开始? journalctl -u gpsd中没有错误或任何错误消息。

还有比GPSd更好的东西吗?它似乎是事实上的标准,但是有很多缺点。我最大的要求是我无法手动指定GPS设备,因为这是无头服务的一部分。

感谢任何帮助/指导/建议。

1 个答案:

答案 0 :(得分:0)

在监视syslog后,我注意到插入GPS设备时,ModemManager发出警告,提示它无法为我的设备创建调制解调器。

Oct  4 23:03:47 ubuntu ModemManager[681]: <info>  [device /sys/devices/pci0000:00/0000:00:11.0/0000:02:00.0/usb2/2-2/2-2.2] creating modem with plugin 'u-blox' and '1' ports
Oct  4 23:03:47 ubuntu ModemManager[681]: <warn>  Could not grab port (tty/ttyACM0): 'Cannot add port 'tty/ttyACM0', unhandled serial type'
Oct  4 23:03:47 ubuntu ModemManager[681]: <warn>  Couldn't create modem for device '/sys/devices/pci0000:00/0000:00:11.0/0000:02:00.0/usb2/2-2/2-2.2': Failed to find primary AT port

我猜ModemManager最终将接管该设备,GPSd将失去连接并永远阻止等待响应。这全是预感,但是禁用ModemManager解决了我所有的问题!

systemctl disable ModemManager.service