GPSD не может получить доступ к /dev/pts

Вопрос или проблема

Я пытался и пытался заставить GPSD получать данные NMEA с моего устройства /dev/pts/2, но у меня это не получается. Я пытался изменить разрешения на 777, но это не помогло. Я могу вывести содержимое файла /dev/pts/2 и вижу данные NMEA, как на ладони, но GPSD продолжает говорить, что у него нет разрешения. Я пытался изменить файл /etc/apparmor.d/usr.sbin.gpsd. Я добавил

/dev/pts[0-9]*        rw,
# стандартные пути для передачи GPS-данных в chrony
  /{,var/}run/chrony.tty{,S,USB,AMA,pts}[0-9]*.sock rw,

Я перезагрузил apparmor, но ошибки остались теми же.

Я добавил своего пользователя в группу tty, а также пользователя root. Никакой помощи. Ошибки происходят как у моего локального пользователя, так и у пользователя root.

Спасибо за любую помощь. Я использую Ubuntu 22.04 на настольном компьютере.

gpsd:INFO: stashing device /dev/pts/2 at slot 0
gpsd:PROG: no /etc/gpsd/device-hook present, skipped running ACTIVATE hook
gpsd:INFO: SER: opening GPS data source type 6 at '/dev/pts/2'
gpsd:ERROR: SER: device open of /dev/pts/2 failed: Permission denied - retrying read-only
gpsd:ERROR: SER: read-only device open of /dev/pts/2 failed: Permission denied
gpsd:ERROR: initial GPS device /dev/pts/2 open failed
gpsd:ERROR: can't run with neither control socket nor devices open

Ответ или решение

Проблема с доступом GPSD к /dev/pts/2 может возникать по нескольким причинам, и, как вы указали, попытки изменения прав доступа и конфигураций в AppArmor не привели к желаемому результату. Давайте рассмотрим ряд возможных решений, которые помогут устранить эту проблему.

  1. Проверка прав доступа к устройству:
    Убедитесь, что права на файл /dev/pts/2 установлены корректно. Вы можете использовать команду ls -l /dev/pts/2 для проверки текущих прав. Если вы уже пробовали 777 (что дает полный доступ всем), попробуйте установить права для конкретной группы:

    sudo chown :tty /dev/pts/2
    sudo chmod 660 /dev/pts/2

    Затем убедитесь, что ваш пользователь добавлен в группу tty:

    sudo usermod -aG tty $(whoami)

    После этого выполните команду newgrp tty, чтобы обновить группы для текущей сессии.

  2. Конфигурация AppArmor:
    Вы уже внесли изменения в конфигурацию AppArmor по GPSD. Однако убедитесь, что путь записан корректно. Для устройства, находящегося в /dev/pts, ваши записи должны выглядеть следующим образом:

    /dev/pts/[0-9]* rw,

    После изменения конфигурации убедитесь, что вы перезапустили AppArmor:

    sudo systemctl restart apparmor

    Проверить статус AppArmor можно с помощью:

    sudo aa-status

    Убедитесь, что ваш профиль для GPSD не нарушается и активен.

  3. Запуск GPSD с правами суперпользователя:
    Попробуйте запустить GPSD от имени пользователя root, чтобы проверить, не связана ли проблема с правами. Используйте следующую команду:

    sudo gpsd /dev/pts/2 -F /var/run/gpsd.sock

    Обратите внимание на возможные ошибки, которые могут выводиться в терминале.

  4. Логи и отладка:
    Загляните в системные логи, чтобы получить больше информации о том, что происходит. Это можно сделать с помощью:

    journalctl -xe | grep gpsd

    Логи могут дать подсказки о том, что может быть неправильно настроено.

  5. Проверка на наличие конфликтов:
    Убедитесь, что нет других процессов, которые могут блокировать доступ к устройству. Вы можете использовать lsof /dev/pts/2 для проверки, какие процессы используют это устройство.

  6. Перезапуск системы:
    Если никакие из вышеперечисленных шагов не помогли, возможно, будет целесообразно полностью перезагрузить систему, чтобы убедиться, что все изменения применены корректно.

Если после выполнения всех этих шагов проблема все еще сохраняется, возможно, стоит рассмотреть возможность использования другого интерфейса, так как /dev/pts/ предназначен для терминальных сессий и может вести себя нестабильно при использовании с GPSD. Возможно, вам стоит попробовать подключить GPS через другой интерфейс (например, USB или последовательный порт), если это возможно.

Оцените материал
Добавить комментарий

Капча загружается...