运行 setserial low_latency 的 udev 规则不起作用

运行 setserial low_latency 的 udev 规则不起作用

我的服务器运行的是 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。我不知道为什么某些机器会发生这种情况,但当它们不同时,这对我来说从来都不是问题。

相关内容