The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Привязка физических USB-портов к конкретным ttyUx"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Открытые системы на сервере (Система. проблемы, диагностика / FreeBSD)
Изначальное сообщение [ Отслеживать ]

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

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


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

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

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

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

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

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

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

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

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

4. "Привязка физических USB-портов к конкретным ttyUx"  +/
Сообщение от Ygor (ok) on 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 разные у устройств.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

5. "Привязка физических USB-портов к конкретным ttyUx"  +/
Сообщение от jim1406 (ok) on 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, но тогда нет информации ни о вендоре, ни о чем подобном...


Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

6. "Привязка физических USB-портов к конкретным ttyUx"  +/
Сообщение от jim1406 (ok) on 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

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Спонсоры:
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2022 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру