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 并跟踪它的去向来检查 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
,但有更优雅的解决方案。)
混乱的另一面是 gpsd 没有 gps 输出,因为它没有运行或配置“正确”。(关闭、未启动或指向错误的设备)。一些应用程序会告诉您它没有运行,许多应用程序只是静静地坐着,没有任何数据。我知道没有人会告诉您 gpsd 已手动设置为错误的设备。
如果您杀死了gpsd,或者没有让它自动启动,请确保它正在运行sudo /etc/init.d/gpsd restart
除非您对奇怪的硬件做一些奇怪的事情,否则大多数情况下会在这些设置中使用 gpsd 吐回数据,从而无需诊断设置。
但是,请记住,cgps
如果没有修复将超时。检查您的天空视图和首次修复时间。xgps
另一方面,它对故障更有弹性,并为数据的缺失或质量提供线索。如果你有一个 X 服务器,xgps
实际上是我对“它是否工作”的首选测试。如果您不这样做,但将您的 Pi 放在网络上(xgps 192.168.0.6
或其他任何东西,因为另一台机器安装了 gpsd-client )。另一种选择是ssh -X user@192.168.0.6
然后执行xgps
)
Telnet 到 gpsd 虽然很有趣,但与其他诊断一样是另一层诊断。
最后,一个用于 gpsd (gps3.py)的 Python 客户端的无耻插件,作为从 gpsd 访问数据的手段。它仍然是 alpha,但它不导入历史记录。