URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 92404
[ Назад ]

Исходное сообщение
"Привязка физических USB-портов к конкретным ttyUx"

Отправлено jim1406 , 07-Окт-11 18:15 
Имеется программное обеспечение, которое работает с устройствами на последовательных портах (через файлы /dev/...). С COM-портами все очевидно (ttyu0 всегда ttyu0). Когда я подключаю одно USB-устройство, проблем особых тоже нет (ttyU0). Но большее количество USB-устройств вносит путаницу. Если при загрузке системы я могу кое-как контролировать порядок инициализации, то при подключении устройств "на живую" проблема остается, кто первый, тот и ttyU0 и т.д. Естественное решение, которое напрашивается - привязка к физическому порту. Но как это сделать? Что посоветуете?!

Содержание

Сообщения в этом обсуждении
"Привязка физических USB-портов к конкретным ttyUx"
Отправлено tuxic , 07-Окт-11 18:55 
> Имеется программное обеспечение, которое работает с устройствами на последовательных
> портах (через файлы /dev/...). С COM-портами все очевидно (ttyu0 всегда ttyu0).
> Когда я подключаю одно USB-устройство, проблем особых тоже нет (ttyU0). Но
> большее количество USB-устройств вносит путаницу. Если при загрузке системы я могу
> кое-как контролировать порядок инициализации, то при подключении устройств "на живую"
> проблема остается, кто первый, тот и ttyU0 и т.д. Естественное решение,
> которое напрашивается - привязка к физическому порту. Но как это сделать?
> Что посоветуете?!

Через udev привяжите vendorID:deviceID к создаваемому устройству(ttyu0), пример не приведу- уже не помню как делается- я так в свое время шнурок для сотового к конкретному имени устройства привязывал.


"Привязка физических USB-портов к конкретным ttyUx"
Отправлено jim1406 , 08-Окт-11 09:39 
> Через udev привяжите vendorID:deviceID к создаваемому устройству(ttyu0), пример не приведу-
> уже не помню как делается- я так в свое время шнурок
> для сотового к конкретному имени устройства привязывал.

Гмм... На сколько я понял, в FreeBSD udev-а нет... Или я не прав?


"Привязка физических USB-портов к конкретным ttyUx"
Отправлено tuxic , 08-Окт-11 14:44 
>> Через udev привяжите vendorID:deviceID к создаваемому устройству(ttyu0), пример не приведу-
>> уже не помню как делается- я так в свое время шнурок
>> для сотового к конкретному имени устройства привязывал.
> Гмм... На сколько я понял, в FreeBSD udev-а нет... Или я не
> прав?

Оуч- да,  вероятно нет.
не обратил внимания где тема размещена.


"Привязка физических USB-портов к конкретным ttyUx"
Отправлено Ygor , 08-Окт-11 21:44 
> Имеется программное обеспечение, которое работает с устройствами на последовательных
> портах (через файлы /dev/...). С COM-портами все очевидно (ttyu0 всегда ttyu0).
> Когда я подключаю одно USB-устройство, проблем особых тоже нет (ttyU0). Но
> большее количество USB-устройств вносит путаницу. Если при загрузке системы я могу
> кое-как контролировать порядок инициализации, то при подключении устройств "на живую"
> проблема остается, кто первый, тот и ttyU0 и т.д. Естественное решение,
> которое напрашивается - привязка к физическому порту. Но как это сделать?
> Что посоветуете?!

Наваять в /etc/devd.conf создание симлинков на устройства примерно такого типа:

attach 100 {
#       match "system" "USB";
        device-name "tty[0-9]+";
        match "vendor" "0x03a0";
        match "product" "0x3v18";
        action "ln -s /dev/$device-name /dev/cotik";
};

И работать уже с этими симлинками.

Это естественно если vendor и product разные у устройств.


"Привязка физических USB-портов к конкретным ttyUx"
Отправлено jim1406 , 09-Окт-11 22:10 

>[оверквотинг удален]
> attach 100 {
> #       match "system" "USB";
>         device-name "tty[0-9]+";
>         match "vendor" "0x03a0";
>         match "product" "0x3v18";
>         action "ln -s /dev/$device-name
> /dev/cotik";
> };
> И работать уже с этими симлинками.
> Это естественно если vendor и product разные у устройств.

Так уже попробовал, но уперся в то, что через attach виден только uplcom[0-9]; ttyU[0-9] виден через notify, но тогда нет информации ни о вендоре, ни о чем подобном...



"Привязка физических USB-портов к конкретным ttyUx"
Отправлено jim1406 , 11-Окт-11 08:07 
Вопрос решен, хотя и не однозначно. Если кто-то предложит более правильный вариант, буду признателен. Так же спасибо всем, кто постил варианты решения - оба варианта (и линуксовый) дали нужное направление.

Итак...

/etc/devd.conf
# When the ICPCON USB Converters appears...
attach 100 {
    match "device-name" "uplcom[0-9]";
    match "vendor" "0x067b";
    match "product" "0x2303";
    match "release" "0x0d01";
    action "/root/uplcom2ttyU $device-name /dev/icpcon0";
};
detach 100 {
    match "device-name" "ugen+";
    match "vendor" "0x067b";
    match "product" "0x2303";
    match "release" "0x0d01";
    action "rm /dev/icpcon0";
};

/root/uplcom2ttyU
#!/bin/sh
# arg #1 - $device-name from devd.conf - uplcomX; arg #2 - new link to ttyUX - /dev/.....
ln -s $(echo /dev/$1 | sed 's/uplcom/ttyU/g') $2