* [Hardware] Много USB - RS232
@ 2006-09-06 11:23 A.Kitouwaykin
2006-09-11 21:22 ` Pavel Vainerman
0 siblings, 1 reply; 3+ messages in thread
From: A.Kitouwaykin @ 2006-09-06 11:23 UTC (permalink / raw)
To: hardware
Добрый день. Есть проблема.
Для подключения к внешней аппаратуре через RS232 с
использованием minicom и, иногда, tcp/ip через slip, к
специальному компьютеру беспорядочно подключены несколько
переходников USB - RS232C, опознаваемые как PL-2303.
Аппаратуры много, и, поскольку USB-выводов недостаточно,
все это хозяйство, опять же беспорядочно, подключается через
некоторое количество USB-хабов (были также вариации с дополнительными
USB-контроллерами).
При этом обычно непонятно, какой /dev/ttyUSBx какому
хвосту соответствует. Обычная практика определять это эмпирически,
исследуя сообщения на 12 консоли в связи с выдергиванием и обратным
подключением нужного переходника PL-2302.
В какой то момент это перестает работать. При этом может
отвалиться часть портов, а часть останется работать, могут отвалиться
все. Может проскочить сообщение о том что группа портов отвалилась
(disconnect), причем устройства тут же обнаруживаются и активизируются,
но уже с совершенно другим номером /dev/ttyUSBx. При этом связь с
открытым ранее устройством теряется, но процесс (minicom, slip)
никогда об этом не узнает.
Все это совершенно непонятно, почему. И совершенно непонятно,
почему после каких-то плясок с бубнами, перезагрузками и перетыканием
хвостов потом снова что-то начинает работать.
Система не самая свежая, мастер 2.2, но активно используемая,
поэтому до существенного обновления "руки не доходят". К тому же на
соседней, чуть менее загруженной машине с мастером 2.4 подобные глюки
тоже бывают.
Кто-нибудь что-нибудь может посоветовать полезного?
Есть ли какие-то требования к топологии такой USB-сети, или
рекомендации по ее построению?
Есть ли какие-то ограничения на количество RS-портов
(помимо ограничения, обходимого, на количество /dev/ttyUSBx)?
Есть ли возможность установить однозначное соответствие
между шнурком и номером устройства /dev/ttyUSBx? Где то мелькало,
что в ядрах 2.6...
Что смотреть в логах? Вот маленький пример, возможно не самый
удачный:
Sep 6 11:26:50 burro kernel: usb.c: USB disconnect on device 00:11.3-1.3.2 address 7
Sep 6 11:26:50 burro kernel: usbserial.c: PL-2303 converter now disconnected from ttyUSB1
Sep 6 11:26:52 burro kernel: hub.c: new USB device 00:11.3-1.3.2, assigned address 10
Sep 6 11:26:52 burro kernel: usb-uhci.c: interrupt, status 2, frame# 989
Sep 6 11:26:52 burro kernel: usb.c: couldn't get all of config descriptors
Sep 6 11:26:52 burro kernel: usb.c: unable to get device 10 configuration (error=-84)
Sep 6 11:26:52 burro kernel: hub.c: new USB device 00:11.3-1.3.2, assigned address 11
Sep 6 11:26:52 burro kernel: usb.c: couldn't get all of config descriptors
Sep 6 11:26:52 burro kernel: usb.c: unable to get device 11 configuration (error=-84)
Sep 6 11:27:08 burro kernel: usb.c: USB disconnect on device 00:11.3-1.3.4 address 9
Sep 6 11:27:08 burro kernel: usbserial.c: PL-2303 converter now disconnected from ttyUSB3
Sep 6 11:27:09 burro kernel: usb.c: USB disconnect on device 00:11.3-1.3.1 address 6
Sep 6 11:27:09 burro kernel: usbserial.c: PL-2303 converter now disconnected from ttyUSB0
Sep 6 11:27:09 burro kernel: hub.c: new USB device 00:11.3-1.3.1, assigned address 12
Sep 6 11:27:14 burro kernel: usb_control/bulk_msg: timeout
Sep 6 11:27:34 burro last message repeated 4 times
Sep 6 11:27:34 burro kernel: usb.c: couldn't get all of config descriptors
Sep 6 11:27:34 burro kernel: usb.c: unable to get device 12 configuration (error=-110)
Sep 6 11:27:35 burro kernel: usb_control/bulk_msg: timeout
Sep 6 11:27:36 burro kernel: usb_control/bulk_msg: timeout
--
Китайкин Анатолий Константинович
ОАО "Радиоавионика", СПб
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [Hardware] Много USB - RS232
2006-09-06 11:23 [Hardware] Много USB - RS232 A.Kitouwaykin
@ 2006-09-11 21:22 ` Pavel Vainerman
2006-09-11 21:25 ` Pavel Vainerman
0 siblings, 1 reply; 3+ messages in thread
From: Pavel Vainerman @ 2006-09-11 21:22 UTC (permalink / raw)
To: hardware
6 сентября 2006 15:23, A.Kitouwaykin написал:
> Добрый день. Есть проблема.
> Есть ли возможность установить однозначное соответствие
> между шнурком и номером устройства /dev/ttyUSBx? Где то мелькало,
> что в ядрах 2.6...
Здесь можно смотреть через /sys/bus/usb-serial/xxx
в этом каталоге формируются записи о каждом устройстве.
В своё время (путём проб и ошибок) был написан код программы сопоставляющий
"номер" разъёма с устройством:
Проходили по списку каталогов в каталоге "/sys/bus/usb-serial/"
и "дешефровывали" их название следующим образом:
(target - это текущая считанная запись)
void read_list(char target, ...)
{
char tmp[100]; char pci[100];
char dev[20]; char num1[20];
char usb[20]; char usb1[20];
// обнуляем
bzero(tmp,sizeof(tmp));
bzero(pci,sizeof(pci));
bzero(dev,sizeof(dev));
bzero(num1,sizeof(num1));
bzero(usb,sizeof(usb));
bzero(usb1,sizeof(usb1));
int num_ctrl(0); // номер контроллера
int num_con(0); // номер разъёма
// пример строки
// ../../../devices/pci0000:00/0000:00:02.0/usb2/2-3/2-3:1.0/ttyUSB0
int res =
sscanf(target,"%[./]devices/%[^/]/%[^/]/%[^/]/%d-%d/%[^/]/%[^/]",
&tmp,&pci,&num1,&usb,&num_con,&num_ctrl,&usb1,&dev);
if( res != 0 )
{
...
Соответственно device будет "/dev/" + dev...
...
}
...
}
Конечно всё это можно и на баше написать, нам надо было на "c"...
В общем случае каждый внешний usb-разъём всегда идентифицируется
одинаково (это номер контроллера и номер канала), но файл устройства с которым
он связывается при каждом "втыкании" может быть разным.
P.S. Я конечно не очень разбираюсь в правилах наименований в sysfs, но
это работало...
P.P.S. Надеюсь если что, старшие товарищи меня поправят...
--
Павел Вайнерман
Eternity Software Team
http://www.etersoft.ru
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [Hardware] Много USB - RS232
2006-09-11 21:22 ` Pavel Vainerman
@ 2006-09-11 21:25 ` Pavel Vainerman
0 siblings, 0 replies; 3+ messages in thread
From: Pavel Vainerman @ 2006-09-11 21:25 UTC (permalink / raw)
To: hardware
> void read_list(char target, ...)
сорри.. опечатался --> char* target
--
Павел Вайнерман
Eternity Software Team
http://www.etersoft.ru
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2006-09-11 21:25 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2006-09-06 11:23 [Hardware] Много USB - RS232 A.Kitouwaykin
2006-09-11 21:22 ` Pavel Vainerman
2006-09-11 21:25 ` Pavel Vainerman
ALT Linux hardware support
This inbox may be cloned and mirrored by anyone:
git clone --mirror http://lore.altlinux.org/hardware/0 hardware/git/0.git
# If you have public-inbox 1.1+ installed, you may
# initialize and index your mirror using the following commands:
public-inbox-init -V2 hardware hardware/ http://lore.altlinux.org/hardware \
hardware@altlinux.ru hardware@lists.altlinux.org hardware@lists.altlinux.ru hardware@lists.altlinux.com hardware@altlinux.org
public-inbox-index hardware
Example config snippet for mirrors.
Newsgroup available over NNTP:
nntp://lore.altlinux.org/org.altlinux.lists.hardware
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git