我在 18.04 中安装了 OpenCPN,并购买了 Glonass BN-808 USB GPS 接收器。它显然是 UBLOX M8030,虽然我不确定这实际上意味着什么,但它应该在 Linux 中受支持。然而,虽然系统盘可以看到总线 001 设备 003 上的接收器(这与 OpenCPN 请求的 tty 或 /dev 格式完全不同),Ubuntu 无法从所述接收器读取任何数据。我已按照 OpenCPN 手册中的说明进行操作,但没有成功。有人有什么建议吗?谢谢 Dave
编辑1:tail -f /var/log/syslog 的输出
我运行了 tail -f /var/log/syslog,得到了比你大得多的输出,对我来说没有任何意义。
检测到了 ublox 接收器,但从那里输出的内容为:
May 23 15:34:19 dave-Aspire-ES1-523 kernel: [ 1018.870051] usb 1-1.1: New USB device found, idVendor=1546, idProduct=01a8
May 23 15:34:19 dave-Aspire-ES1-523 kernel: [ 1018.870060] usb 1-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
May 23 15:34:19 dave-Aspire-ES1-523 kernel: [ 1018.870064] usb 1-1.1: Product: u-blox GNSS receiver
May 23 15:34:19 dave-Aspire-ES1-523 kernel: [ 1018.870068] usb 1-1.1: Manufacturer: u-blox AG - www.u-blox.com
May 23 15:34:20 dave-Aspire-ES1-523 mtp-probe: checking bus 1, device 5: "/sys/devices/pci0000:00/0000:00:12.0/usb1/1-1/1-1.1"
May 23 15:34:20 dave-Aspire-ES1-523 mtp-probe: bus: 1, device: 5 was not an MTP device
May 23 15:34:20 dave-Aspire-ES1-523 kernel: [ 1019.001058] cdc_acm 1-1.1:1.0: ttyACM0: USB ACM device
May 23 15:34:20 dave-Aspire-ES1-523 kernel: [ 1019.001512] usbcore: registered new interface driver cdc_acm
May 23 15:34:20 dave-Aspire-ES1-523 kernel: [ 1019.001513] cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters
May 23 15:34:20 dave-Aspire-ES1-523 upowerd[1059]: unhandled action 'bind' on /sys/devices/pci0000:00/0000:00:12.0/usb1/1-1/1-1.1
May 23 15:34:20 dave-Aspire-ES1-523 upowerd[1059]: unhandled action 'bind' on /sys/devices/pci0000:00/0000:00:12.0/usb1/1-1/1-1.1/1-1.1:1.1
May 23 15:34:20 dave-Aspire-ES1-523 upowerd[1059]: unhandled action 'bind' on /sys/devices/pci0000:00/0000:00:12.0/usb1/1-1/1-1.1/1-1.1:1.0
May 23 15:34:31 dave-Aspire-ES1-523 ModemManager[831]: [device /sys/devices/pci0000:00/0000:00:12.0/usb1/1-1/1-1.1] creating modem with plugin 'u-blox' and '1' ports
May 23 15:34:31 dave-Aspire-ES1-523 ModemManager[831]: Could not grab port (tty/ttyACM0): 'Cannot add port 'tty/ttyACM0', unhandled serial type'
May 23 15:34:31 dave-Aspire-ES1-523 ModemManager[831]: Couldn't create modem for device '/sys/devices/pci0000:00/0000:00:12.0/usb1/1-1/1-1.1': Failed to find primary AT port
May 23 15:42:58 dave-Aspire-ES1-523 systemd-resolved[770]: Grace period over, resuming full feature set (UDP+EDNS0) for DNS server fe80::8e0d:76ff:fe57:2816%3.
May 23 15:48:17 dave-Aspire-ES1-523 systemd-resolved[770]: Grace period over, resuming full feature set (UDP+EDNS0) for DNS server 192.168.1.1.
May 23 15:48:19 dave-Aspire-ES1-523 systemd-resolved[770]: Using degraded feature set (UDP) for DNS server fe80::8e0d:76ff:fe57:2816%3.
May 23 15:50:31 dave-Aspire-ES1-523 systemd-resolved[770]: Using degraded feature set (UDP) for DNS server 192.168.1.1.
我之前运行过 apt-get install gpsd-clients,但不确定它是否正确加载,我确实看到过几次“失败”这个词。
答案1
确保检测到它的最佳方法是检查/var/log/syslog
其连接:
- 断开 GNSS 接收器
- 打开终端并运行
tail -f /var/log/syslog
命令 - 连接 GNSS 接收器并等待其初始化
对于我的 u-blox7 GPS/GLONASS,我有以下输出:
5 月 22 日 23:50:08 主机名内核:[99544.380440] usb 3-2:使用 xhci_hcd 的新全速 USB 设备编号 12
5 月 22 日 23:50:08 主机名内核:[99544.509111]usb 3-2:发现新的 USB 设备,idVendor=1546,idProduct=01a7
5 月 22 日 23:50:08 主机名内核:[99544.509115] usb 3-2:新的 USB 设备字符串:Mfr=1、Product=2、SerialNumber=0
5 月 22 日 23:50:08 主机名内核:[99544.509117]usb 3-2:产品:u-blox 7 - GPS/GNSS 接收器
5月22日 23:50:08 主机名内核:[99544.509119]usb 3-2:制造商:u-blox AG - www.u-blox.com
5 月 22 日 23:50:08 主机名内核:[99544.509363] usb 3-2:ep 0x83 – 将间隔舍入为 1024 微帧,ep desc 表示 2040 微帧
5 月 22 日 23:50:08 主机名 mtp-probe:检查总线 3,设备 12:“/sys/devices/pci0000:00/0000:00:14.0/usb3/3-2”
5 月 22 日 23:50:08 主机名 mtp-probe:总线:3,设备:12 不是 MTP 设备
5 月 22 日 23:50:08 主机名内核:[99544.537420]cdc_acm 3-2:1.0: ttyACM0: USB ACM 设备
5 月 22 日 23:50:08 主机名内核:[99544.538041] usbcore:已注册的新接口驱动程序 cdc_acm
5 月 22 日 23:50:08 主机名内核:[99544.538044] cdc_acm:用于 USB 调制解调器和 ISDN 适配器的 USB 抽象控制模型驱动程序
注意上面的粗线 - 我们看到它确实是u-blox 7并且它被识别为串行端口 -ttyACM0(真的/dev/ttyACM0
)。
要测试 GNSS 接收器,您可以使用gpsmon
(它将 NMEA 解码为时间、纬度、经度和其他数据):
- 安装
gpsmon
sudo apt-get install gpsd-clients
- 使用以下命令启动
gpsmon
找到的串行端口sudo gpsmon /dev/ttyACM0
- 等待 GNSS 找到卫星并获取 NMEA 数据。
注意:要以普通用户身份访问串行端口,您需要将您的用户添加到dialout
组中sudo usermod -a -G dialout $USER
。
答案2
您的内核没有正确处理该类型。
创建文件:/etc/udev/rules.d/49-ublox.rules 通过命令说:
sudo nano /etc/udev/rules.d/49-ublox.rules
并将以下文本放入其中:
# 1546:01a8 - uBlox Receiver
ATTRS{idVendor}=="1546", ATTRS{idProduct}=="01a8", ENV{ID_MM_DEVICE_IGNORE}="1"
ATTRS{idVendor}=="1546", ATTRS{idProduct}=="01a8", ENV{MTP_NO_PROBE}="1"
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1546", ATTRS{idProduct}=="01a8", MODE:="0666"
KERNEL=="ttyACM*", ATTRS{idVendor}=="1546", ATTRS{idProduct}=="01a8", MODE:="0666"
然后重新启动或者写入:
sudo udevadm control --reload-rules
之后再次插入设备。设备应显示为 /dev/ttyACM0(数字可能会改变)。然后您可以继续前面的答案。