我的服务器运行的是 Ubuntu 14.04.1。我创建了udev规则/etc/udev/rules.d/09-pps.rules
使 GPS 与 PPS 支持正常工作。
KERNEL=="ttyS0", SYMLINK+="gps0", MODE="0666"
KERNEL=="ttyS0", RUN+="/bin/setserial -q /dev/%k low_latency"
KERNEL=="ttyS0", RUN+="/usr/sbin/ldattach pps /dev/%k"
/dev/pps0
将在启动时显示。好的。如果我检查 _low_latency_ 标志,它看起来像
$ sudo setserial -a /dev/ttyS0
/dev/ttyS0, Line 0, UART: 16550A, Port: 0x03f8, IRQ: 4
Baud_base: 115200, close_delay: 50, divisor: 0
closing_wait: 3000
Flags: spd_normal skip_test
$ sudo setserial /dev/ttyS0 low_latency
$ sudo setserial -a /dev/ttyS0
/dev/ttyS0, Line 0, UART: 16550A, Port: 0x03f8, IRQ: 4
Baud_base: 115200, close_delay: 50, divisor: 0
closing_wait: 3000
Flags: spd_normal skip_test low_latency
为什么启动后 low_latency 总是缺失?
答案1
我使用以下内容:
KERNEL=="ttyS0", RUN+="/bin/setserial /dev/ttyS0 low_latency"
KERNEL=="ttyS0", SYMLINK+="gps0", RUN+="/usr/sbin/ldattach pps /dev/ttyS0"
KERNEL=="pps0", OWNER="root", GROUP="dialout", MODE="0660", SYMLINK+="gpspps0"
您是否使用 udevadm: 测试了您的 udev 规则?
# udevadm test /sys/class/tty/ttyS0
更新
您的 setserial 配置可能有问题。检查 setserial 的配置:
# dpkg-reconfigure -p low setserial
我选择了“始终自动保存”。尝试“始终自动保存”,然后在重新启动之前验证 low_latency 设置。如果这不起作用,请尝试在执行 dpkg-reconfigure 时选择“内核”
您可以通过调查 /var/lib/setserial 来验证是否匹配。
当我重新启动时 setserial 说:
# setserial -G /dev/ttyS0
/dev/ttyS0 uart 16550A port 0x03f8 irq 4 baud_base 115200 spd_normal skip_test low_latency
与 /var/lib/setserial 中找到的内容相匹配
# cat /var/lib/setserial/autoserial.conf |grep -v ^\#
/dev/ttyS0 uart 16550A port 0x03f8 irq 4 baud_base 115200 spd_normal skip_test low_latency
注意:有时 setserial 中的条目会显示 8250 而不是 16550A。我不知道为什么某些机器会发生这种情况,但当它们不同时,这对我来说从来都不是问题。