USB
Всякая полезная всячина на тему USB
Привязка устройства к физическому порту
Бывают ситуации, когда необходимо идентифицировать USB-устройство по порту физицеского подключения. Простой пример: у нас есть две разные сети RS-485 к которым подключены разные устройства и нам нужно ними управлять. Для обмена данными с с этими устройствами мы хотим использовать два одинаковых USB<->RS485 конвертора. Всё хорошо до тех пор, пока не выяснится, что наша любимая ОС предоставляет доступ к этим переходникам через устройства /dev/ttyUSB0 и /dev/ttyUSB1. Причём кто из них кто зависит скорее всего от фазы луны (ну или от расположения созвездий).
Хорошая новость в том, что в системе есть подсистема udev и мы можем на это поведение влиять. Udev предоставляет механизм назначения символических ссылок для устройств основываясь на их атрибутах. В нашем случае подходит атрибут ID_PATH - расположение устройства на внутренней шине.
Для того чтобы узнать куда подключено устройство воспользуемся такой командой:
udevadm info /dev/ttyUSB0 | grep ID_PATH
ID_PATH=