У меня есть несколько идентичных адаптеров USB-последовательный порт на моем сервере Fedora FC12. Кажется, что при каждой загрузке устройства меняют имена устройств (/dev/ttyUSBn). Теперь я предполагаю, что имена шины и устройства меняют это. Это связано с USB-концентраторами внутри материнской платы. Так можно ли определить имя /dev по идентификатору шины и устройства? Я надеюсь на интерфейс командной строки, но я не боюсь написать некоторый код на C, но мне нужно помочь с тем, какие системные функции мне, возможно, понадобится вызывать.
1 ответ
Вы можете решить эту проблему, написав собственное правило UDEV для каждого конвертера, который вы хотите использовать. Обычно это сводится к созданию текстового файла в определенном месте, обычно это /etc/udev/rules.d/*.rules
или что-то подобное (в зависимости от вашего дистрибутива).
Я обычно создаю символические ссылки на устройство вместо того, чтобы переименовывать его ... это проще и позволяет абстрагировать мои устройства от схемы имен операционной системы. В следующем примере, что вы хотите сделать:
KERNEL=="ttyUSB*", KERNELS=="1-1.4", SYMLINK+="bridge0"
KERNEL=="ttyUSB*", KERNELS=="1-1.5", SYMLINK+="bridge1"
KERNEL=="ttyUSB*", KERNELS=="1-1.2", SYMLINK+="bridge2"
KERNEL=="ttyUSB*", KERNELS=="1-1.1", SYMLINK+="bridge3"
KERNEL=="ttyUSB*", KERNELS=="2-1.1", SYMLINK+="bridge4"
А теперь пример, в котором вместо этого используется серийный номер устройства (поэтому имя привязано к преобразователю, а не к месту его подключения):
SUBSYSTEM=="tty", ATTRS{serial}=="FTFV8YRP", SYMLINK+="bridge0"
SUBSYSTEM=="tty", ATTRS{serial}=="A600N0ER", SYMLINK+="bridge1"
SUBSYSTEM=="tty", ATTRS{serial}=="FTZ2CBOD", SYMLINK+="bridge2"
SUBSYSTEM=="tty", ATTRS{serial}=="FTZ2CBVE", SYMLINK+="bridge3"
SUBSYSTEM=="tty", ATTRS{serial}=="FTZ29GWA", SYMLINK+="bridge4"