Мне нужно определить, когда в моей встроенной системе подключено или отключено последовательное USB-устройство, и узнать, что tty
с ним связано.
Моя система работает на ядре Linux 2.6.
Поскольку у меня нет доступа на запись к udev
правилам, в настоящее время я пытаюсь получить эту информацию из файловой системы, ища изменения в /sys/bus/usb/devices
каталоге. Однако я столкнулся с некоторыми проблемами при таком подходе.
Я знаю, какой Id BUS
подключенного USB-порта (например, 1-1.3). Итак, я ищу связанный tty
(ищу каталог в /sys/bus/usb/devices/<Id BUS>:1.0/tty/
- например, /sys/bus/usb/devices/1-1.3:1.0/tty/ttyACM0
). Таким образом, я знаю, что должен использовать /dev/ttyACM0
для связи с моим устройством. Но иногда этого устройства (/dev/ttyACM0
) не существует.
Есть ли лучший способ получить эту информацию?
Я даже подумал попытаться получить эту информацию из системного журнала, но не знаю, хорошая ли это идея.
Редактировать:
Только для пояснения, моя система должна иметь возможность обнаруживать изменения состояния на шине USB, то есть обнаруживать, когда новое устройство подключено (и получает имя tty
, связанное с ним), или когда существующее отключено.
Система контролирует до N
USB / последовательных устройств, которые подключены к ней с помощью концентратора USB. Во время его нормального выполнения новые устройства могут быть подключены, существующие устройства могут быть удалены (или перезагружены удаленной командой - вне этой области). Когда устройство перезагружается, оно может получить tty
, отличное от того, которое использовалось ранее (например, ttyACM0
-> ttyACM3
), поскольку ядро назначает ему tty
, который на данный момент свободен, и для меня это большая проблема.