From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: Pavel Vainerman To: hardware@altlinux.ru Date: Tue, 12 Sep 2006 01:22:14 +0400 User-Agent: KMail/1.9.1 References: <20060906152320.771a6582.cetus@newmail.ru> In-Reply-To: <20060906152320.771a6582.cetus@newmail.ru> MIME-Version: 1.0 Content-Disposition: inline Content-Type: text/plain; charset="koi8-r" Content-Transfer-Encoding: 8bit Message-Id: <200609120122.14704.VPashka@nm.ru> Content-Transfer-Encoding: 8bit Subject: Re: [Hardware] =?koi8-r?b?7c7Px88gVVNCIC0gUlMyMzI=?= X-BeenThere: hardware@lists.altlinux.org X-Mailman-Version: 2.1.7 Precedence: list Reply-To: hardware@altlinux.ru, VPashka@nm.ru List-Id: ALT Linux hardware support List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 11 Sep 2006 21:22:58 -0000 Archived-At: List-Archive: List-Post: 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