我使用的是Ubuntu的仿生库中的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)我尝试过通过systemctl禁用gpsd.socket,但重启后的结果没有什么不同。第一个客户端连接看起来很好,但之后就很糟糕了。
我不知道如何解决这个问题。有人知道从哪里开始吗?journalctl -u gpsd中没有错误,也没有任何错误消息。
还有比GPSd更好的东西吗?它似乎是事实上的标准,但也有相当多的缺点。我最大的要求是我不能手动指定GPS设备,因为这是无头服务的一部分。
感谢您的帮助/指导/建议。
发布于 2019-10-05 14:24:13
在监控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.servicehttps://stackoverflow.com/questions/58242803
复制相似问题