gpsd:ERROR: не может связать с локальным сокетом

Я пытаюсь заставить устройство BU-353 GPS работать над Ubuntu 16.04 LTS через GPSD. Когда я работал cgps Меня встретили ошибкой из-за тайм-аута.

Я предположил, что что-то было неправильно с GPS, потому что я не использовался в некоторое время, таким образом, я работал gpsmon. Gps получил закрепление на нескольких saltiles и получал мой lat и долго.

Это приводит меня полагать, что что-то должно быть неправильным в стороне GPSD, таким образом, я выполнил команду gpsd -N -D3 -F /dev/ttyUSB0. Я был встречен:

gpsd:ERROR: can't bind to local socket /dev/ttyUSB0
gpsd:ERROR: control socket create failed, netlib error -1

Даже когда я направил GPSD к сокету с gpsd -N -D3 -F /var/run/gpsd.sock /dev/ttyUSB0, (код, снятый непосредственно с GPSD, диагностирует страницу), я все еще получал ту же ошибку.

У меня нет подсказки, что идет не так, как надо. Я очень плохо знаком с GPSD и не очень доволен Ubuntu в более общем плане поэтому, возможно, я делаю простую ошибку. Любая справка значительно ценится.

1
задан 28 June 2016 в 02:20

2 ответа

Это - полномочия - получают ту же ошибку на малине, которая просто добавляет/выполняет команду с sudo/root полномочиями.

sudo gpsd/dev/ttyusb0-F/var/run/gpsd.sock

0
ответ дан 7 December 2019 в 15:53

BU-353 должен работать из поля с gpsd. Но у Вас есть несколько вещи, продолжающиеся,

  • первый объект является systemd, отвечает за запуск экземпляра gpsd. Пока это не выключено (sudo service gpsd stop) Вы будете преследовать хвост.
  • -F Создает сокет управления для команд дополнения и удаления устройства. Это должен быть допустимый путь в Вашей локальной файловой системе. Сомнительно, что Ваш сокет управления возможно был бы gps USB, который Вы пытаетесь считать. Обычно сокет управления /var/run/gpsd.sock но мог быть /tmp/anything
  • у Вас должны быть полномочия записи открыть сокет управления. sudo gpsd -N -D3 -F /var/run/gpsd.sock работы, в то время как gpsd -N -D3 -F /var/run/gpsd.sock перестанет работать, потому что непривилегированный пользователь не может записать в сокет управления. Аналогично, gpsd -N -D3 -F /tmp/when_pigs_fly должен работать. (Но, ни один не будет работать, если gpsd будет уже работать.)

Дополнительно необходимо рассмотреть дополнительные инструкции в /etc/default/gpsd Например,

# Default settings for the gpsd init script and the hotplug wrapper.

# Start the gpsd daemon automatically at boot time
START_DAEMON="true"

# Use USB hotplugging to add new USB devices automatically to the daemon
USBAUTO="true"

# Devices gpsd should collect to at boot time.
# They need to be read/writeable, either by user gpsd or the group dialout.
DEVICES="/dev/ttyACM0"

# Other options you want to pass to gpsd
GPSD_OPTIONS=""

Они представлены в /lib/systemd/system/gpsd.service как EnvironmentFile

Первая строка бесполезна. systemd является главным и не разветвляется от процесса. Это работает с -N флаг.

Я установил USBAUTO = "верный" потому что использование gpsd udev и замена в горячем режиме довольно прозрачна-. Включите что-то, что это - gps, и он работает. Если это не gps, это занимается своим собственным делом.

Но я действительно кодирую в месте gps, с которым я в настоящее время работаю. Поскольку, останавливаться/перезапускать gpsd без перезагрузки, gpsd не будет 'знать' о gps в /dev/ttyACM0 (или везде, где это) без события замены в горячем режиме. Я кодирую в месте, чтобы не иметь к ООН/разъему gps каждый раз, когда я перезапускаю gpsd без перезагрузки.

Другое GPSD_OPTIONS= мог включать -n -G или -b по Вашему усмотрению.

Кроме того, существуют другие тестовые клиенты (xgps) это более устойчиво для проверки вывода gps, но это должно получить Вас, указал в правильном направлении.

1
ответ дан 7 December 2019 в 15:53

Другие вопросы по тегам:

Похожие вопросы: