Назад | Перейти на главную страницу

Правило udev, запускающее setserial low_latency, не работает

Мой сервер работает под управлением 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?

Я использую следующее:

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"

Вы проверяли свое правило udev с помощью udevadm :?

 # 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

NB: Иногда в записи setserial будет указано 8250 вместо 16550A. Я не знаю, почему это происходит на некоторых машинах, но для меня никогда не было проблемой, когда они различаются.