GPSD не получает хорошего исправления

У меня есть модуль GPS, подключенный к Raspberry Pi через USB.

По какой-то причине я не могу получить исправление, используя:

cgps

это, кажется, не исправляется и прекращается.

Я также пробовал:

sudo killall gpsd

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

а затем снова попробовал cgps, но это тоже не работает.

Я даже пробовал:

судо нано /etc/по умолчанию/gpsd

и изменил строку:

GPSD_OPTIONS=""

to:

GPSD_OPTIONS="/dev/ttyACM0"

что, по-видимому, работало для других в Интернете, но после перезагрузки это тоже не сработало.

Но по какой-то причине, когда я это делаю:

gpsmon /dev/ttyUSB0

Я получаю полное считывание данных; широта, долгота, сат, высота над уровнем моря, вн.

Есть ли способ вывести gpsmon /dev/ttyUSB0 предложений в текстовый файл?

Кроме того, почему я не могу получить исправление с помощью cgps или чего-то подобного?


person A_robi11    schedule 29.03.2015    source источник
comment
Не удалось заставить gpsd даже выводить что-либо, но ваша команда gpsmon /dev/ttyUSB0 работала +1   -  person bakalolo    schedule 29.10.2016
comment
Для тех, кто наткнулся на эту проблему, принятый ответ не сработал для меня, однако это помогло за полшага: raspberrypi.stackexchange.com/questions/28483/cgps-gps-timeout/   -  person lux    schedule 28.06.2018
comment
запустить gpsd с -D4 -n -N и показать нам логи   -  person elig    schedule 02.07.2019


Ответы (2)


gpsd — прекрасное приложение для упрощения использования GPS, но оно может немного сбивать с толку.

Если вы используете Rasbian или какую-либо систему пакетов на основе apt, лучше настроить ее с помощью sudo dpkg-reconfigure gpsd, чтобы избежать осложнений (tyqos), но это не обязательно. У нас есть предпочтения, а у вас нет,

  • автоматический старт,
  • -n Не ждите клиента
  • -G слушать по всем адресам,
  • -b Режим защиты от сломанного устройства и
  • автопоиск

Результирующий файл конфигурации выглядит так

# Default settings for gpsd.
# Please do not edit this file directly - use `dpkg-reconfigure gpsd'  to
# change the options.
START_DAEMON="true"
GPSD_OPTIONS="-n -G -b"
DEVICES=""
USBAUTO="true"
GPSD_SOCKET="/var/run/gpsd.sock"

Основным камнем преткновения при таком подходе, когда gpsd работает таким образом, является то, что он захватит GPS раньше, чем вы. Попытки самостоятельно и напрямую получить доступ к устройству /dev/whatever не увенчаются успехом, поскольку заняты.

Если вы хотите пойти по этому пути по какой-либо причине, прежде чем делать что-либо еще, убедитесь, что gpsd не запущен.

sudo killall gpsd

и удалите все сокеты, которые мог оставить gpsd,

sudo rm /var/run/gpsd.sock

Проверьте местоположение вашего GPS-навигатора, подключив его и отследив, куда он ушел, с помощью dmesg | tail. Это будет выглядеть примерно так

[67338.935645] usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[67338.935650] usb 1-1.2: Product: USB-Serial Controller
[67338.935653] usb 1-1.2: Manufacturer: Prolific Technology Inc.
[67338.936154] pl2303 1-1.2:1.0: pl2303 converter detected
[67338.937953] usb 1-1.2: pl2303 converter now attached to ttyUSB1
[67339.806917] pl2303 ttyUSB1: usb_serial_generic_read_bulk_callback - urb stopped: -32
[67339.807306] pl2303 ttyUSB1: usb_serial_generic_read_bulk_callback - urb stopped: -32
[67340.018016] pps_ldisc: PPS line discipline registered
[67340.018321] pps pps0: new PPS source usbserial1
[67340.018330] pps pps0: source "/dev/ttyUSB1" added

Затем вы можете проверить вывод с помощью sudo cat /dev/ttyUSB1... или чего-то еще, но вы можете сделать это с запущенным gpsd. (Вы также можете закачать это в текстовый файл sudo cat /dev/ttyUSB1 > gps_dump.txt или свой gpsmon /dev/ttyUSB0 >gps_dump.txt, но есть и более элегантные решения.)

Обратной стороной путаницы является отсутствие выходных данных GPS от gpsd, потому что он не работает или не настроен «должным образом». (либо выключено, либо не запущено, либо указывает не на то устройство). Некоторые приложения сообщат вам, что они не запущены, многие просто сидят в тишине без каких-либо данных. Я не знаю ни одного, кто скажет вам, что gpsd был вручную настроен на неправильное устройство.

Если вы отключили gpsd или он не запускается волшебным образом автоматически, убедитесь, что он работает с sudo /etc/init.d/gpsd restart

Если вы не делаете что-то странное со странным оборудованием, большинство случаев будут возвращать данные с помощью gpsd в этих настройках, избавляя от необходимости диагностических настроек.

Однако имейте в виду, что cgps истечет время ожидания, если нет исправления. Проверьте свой вид на небо и время первого исправления. xgps, с другой стороны, более устойчив к сбоям и дает подсказки об отсутствии или качестве данных. Если у вас есть X-сервер, xgps на самом деле является моим предпочтительным тестом на "работает ли он". Если у вас нет, но ваш Pi находится в сети (xgps 192.168.0.6 или что-то еще, потому что на другой машине установлен gpsd-клиент). Другой вариант — ssh -X [email protected], а затем выполнить xgps)

Telneting в gpsd, хотя и интересный, является диагностикой другого уровня, как и другие.

И, наконец, беззастенчивая заглушка для Python-клиента для gpsd (gps3.py) в качестве средства доступа к данным из gpsd. Это все еще альфа, но она не импортирует исторический хлам.

person Nodak    schedule 30.03.2015
comment
Шикарное объяснение процесса! Как вы сказали выше, я думаю, что большая часть путаницы у меня возникла из-за того, что различные инструменты, такие как cgps и xgps, не подтверждают и не показывают состояние gpsd. Я попробую то, что ты сказал. Возможно, моя проблема заключалась в том, что я не удалял сокеты. Буду держать вас в курсе, пока буду экспериментировать. Спасибо еще раз! - person A_robi11; 01.04.2015

Возможно, вы привязываетесь к неправильному серийному номеру. Чтобы узнать серийный номер вашего GPS-устройства, перейдите в папку ниже без подключенного устройства, а затем выполните обновление с подключенным устройством.

cd /dev/
ls

Мое устройство называется "ttyACM0"

Установите необходимые пакеты.

sudo apt-get install gpsd gpsd-clients python-gps

Остановить демонов

sudo systemctl stop gpsd.socket
sudo systemctl disable gpsd.socket

Предоставление службы общедоступным портам и локальному хосту

vim /lib/systemd/system/gpsd.socket

Измените 127.0.0.1 на 0.0.0.0

Остановить службы GPSD

sudo killall gpsd

Привязать службу к последовательному устройству

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

Показать данные GPS

gpsmon

В этом видео шаг за шагом показано, как сделать то, что вы ищете.

Как установить GPS на RaspberryPi

https://www.youtube.com/watch?v=A1zmhxcUOxw

person Timothy Moody    schedule 03.11.2018