ALT Linux hardware support
 help / color / mirror / Atom feed
* [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