GPSD не отвечает на новые подключения - PullRequest
0 голосов
/ 04 октября 2019

Я использую GPSd v3.17-5 из репозитория Ubuntu Bionic.

У меня проблема с тем, что 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 голосов
/ 05 октября 2019

После мониторинга 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
...