我正在使用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设备,因为这是无头服务的一部分。
感谢任何帮助/指导/建议。
答案 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