LINUX.ORG.RU
ФорумAdmin

Нумерация USB устройств part2


0

0

Спасибо за дельные советы в первой части. Все получилось, как я и рассчитывал. Но сейчас возникла другая проблема. На сервере всякое USB устройство автоматически добавляется в /dev/serial/by-id/<devname>. И при этом devname настолько длинный, что когда я пытаюсь сослаться на него в файлах настройки minicom то вижу что minicom не дочитывает имя устройства до конца и говорит что такого устройства нет.

Пробовал как на более старых серверах прописывать правила для udev и все вроде работает, но почему то созданный симлинк смотрит на устройство (к примеру) ../bus/usb/002/061 и ничего из этого устройства не прочитать и не записать. При том что созданные автоматически симлинки в serial/by-id смотрят на устройства ttyUSB* и работают правильно.

Подскажите, в какую сторону копать? Хотелось бы иметь единую систему именования на всех северах, не зависимо от версии ядра. Видимо, на более свежем ядре надо как-то иначе правила для udev писать.

P.S. Создавать руками симлинки с короткими именами на serial/by-id/<etc> не хотелось бы,так как в /dev/ они не переживают перезагрузку.


Покажи правило, которым линки создаешь. У меня такое было со своими правилам, но сейчас не вспомню сразу в чем дело, может по правилу вспомню.

vga ★★
()
Ответ на: комментарий от vga

SUBSYSTEMS==«usb», ATTRS{serial}==«1111111111», SYMLINK+=«fld/device1»

Вот такие правила прекрасно работают на ядре 2.6.27. На ядре 2.6.34 такое правило создает нерабочую линку. Если добавляю вначале SUBSYSTEM==«tty» то симлинк не создается

bobych
() автор топика
Ответ на: комментарий от bobych

А надо, именно субсистем=tty, иначе он хватает первое с подходящими субсистемс, и это будет само юсб.

В прошлой теме я кидал стандартное правило, там вначале идет SUBSYSTEM!=«tty», GOTO=«persistent_serial_end», это и есть защита от всех других.

Покажи udevadm info -a -p /sys/class/ttyUSBТВОЙНОМЕР на 27м и 34м.

vga ★★
()
Ответ на: комментарий от vga

udevadm info -a -p /sys/class/tty/ttyUSB0

Udevadm info starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.

looking at device '/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.5/2-1.5.1/2-1 .5.1:1.0/ttyUSB0/tty/ttyUSB0':
KERNEL==«ttyUSB0»
SUBSYSTEM==«tty»
DRIVER==«»

looking at parent device '/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.5/2-1. 5.1/2-1.5.1:1.0/ttyUSB0':
KERNELS==«ttyUSB0»
SUBSYSTEMS==«usb-serial»
DRIVERS==«cp210x»
ATTRS{port_number}==«0»

looking at parent device '/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.5/2-1. 5.1/2-1.5.1:1.0':
KERNELS==«2-1.5.1:1.0»
SUBSYSTEMS==«usb»
DRIVERS==«cp210x»
ATTRS{bInterfaceNumber}==«00»
ATTRS{bAlternateSetting}==" 0"
ATTRS{bNumEndpoints}==«02»
ATTRS{bInterfaceClass}==«ff»
ATTRS{bInterfaceSubClass}==«00»
ATTRS{bInterfaceProtocol}==«00»
ATTRS{modalias}==«usb:v10C4pEA60d0100dc00dsc00dp00icFFisc00ip00»
ATTRS{supports_autosuspend}==«0»
ATTRS{interface}==«CP2103 USB to UART Bridge Controller»

looking at parent device '/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.5/2-1. 5.1':
KERNELS==«2-1.5.1»
SUBSYSTEMS==«usb»
DRIVERS==«usb»
ATTRS{configuration}==«»
ATTRS{bNumInterfaces}==" 1"
ATTRS{bConfigurationValue}==«1»
ATTRS{bmAttributes}==«80»
ATTRS{bMaxPower}==«100mA»
ATTRS{urbnum}==«26»
ATTRS{idVendor}==«10c4»
ATTRS{idProduct}==«ea60»
ATTRS{bcdDevice}==«0100»
ATTRS{bDeviceClass}==«00»
ATTRS{bDeviceSubClass}==«00»
ATTRS{bDeviceProtocol}==«00»
ATTRS{bNumConfigurations}==«1»
ATTRS{bMaxPacketSize0}==«64»
ATTRS{speed}==«12»
ATTRS{busnum}==«2»
ATTRS{devnum}==«5»
ATTRS{devpath}==«1.5.1»
ATTRS{version}==" 1.10"
ATTRS{maxchild}==«0»
ATTRS{quirks}==«0x0»
ATTRS{avoid_reset_quirk}==«0»
ATTRS{authorized}==«1»
ATTRS{manufacturer}==«Silicon Labs»
ATTRS{product}==«CP2103 USB to UART Bridge Controller»
ATTRS{serial}==«0367C28C26F0»

looking at parent device '/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.5':
KERNELS==«2-1.5»
SUBSYSTEMS==«usb»
DRIVERS==«usb»
ATTRS{configuration}==«»
ATTRS{bNumInterfaces}==" 1"
ATTRS{bConfigurationValue}==«1»
ATTRS{bmAttributes}==«e0»
ATTRS{bMaxPower}==" 0mA"
ATTRS{urbnum}==«137»
ATTRS{idVendor}==«04cc»
ATTRS{idProduct}==«1521»
ATTRS{bcdDevice}==«0200»
ATTRS{bDeviceClass}==«09»
ATTRS{bDeviceSubClass}==«00»
ATTRS{bDeviceProtocol}==«00»
ATTRS{bNumConfigurations}==«1»
ATTRS{bMaxPacketSize0}==«64»
ATTRS{speed}==«12»
ATTRS{busnum}==«2»
ATTRS{devnum}==«3»
ATTRS{devpath}==«1.5»
ATTRS{version}==" 2.00"
ATTRS{maxchild}==«7»
ATTRS{quirks}==«0x0»
ATTRS{avoid_reset_quirk}==«0»
ATTRS{authorized}==«1»

looking at parent device '/devices/pci0000:00/0000:00:1d.0/usb2/2-1':
KERNELS==«2-1»
SUBSYSTEMS==«usb»
DRIVERS==«usb»
ATTRS{configuration}==«»
ATTRS{bNumInterfaces}==" 1"
ATTRS{bConfigurationValue}==«1»
ATTRS{bmAttributes}==«e0»
ATTRS{bMaxPower}==" 0mA"
ATTRS{urbnum}==«6812»
ATTRS{idVendor}==«8087»
ATTRS{idProduct}==«0020»
ATTRS{bcdDevice}==«0000»
ATTRS{bDeviceClass}==«09»
ATTRS{bDeviceSubClass}==«00»
ATTRS{bDeviceProtocol}==«01»
ATTRS{bNumConfigurations}==«1»
ATTRS{bMaxPacketSize0}==«64»
ATTRS{speed}==«480»
ATTRS{busnum}==«2»
ATTRS{devnum}==«2»
ATTRS{devpath}==«1»
ATTRS{version}==" 2.00"
ATTRS{maxchild}==«8»
ATTRS{quirks}==«0x0»
ATTRS{avoid_reset_quirk}==«0»
ATTRS{authorized}==«1»

looking at parent device '/devices/pci0000:00/0000:00:1d.0/usb2':
KERNELS==«usb2»
SUBSYSTEMS==«usb»
DRIVERS==«usb»
ATTRS{configuration}==«»
ATTRS{bNumInterfaces}==" 1"
ATTRS{bConfigurationValue}==«1»
ATTRS{bmAttributes}==«e0»
ATTRS{bMaxPower}==" 0mA"
ATTRS{urbnum}==«40»
ATTRS{idVendor}==«1d6b»
ATTRS{idProduct}==«0002»
ATTRS{bcdDevice}==«0206»
ATTRS{bDeviceClass}==«09»
ATTRS{bDeviceSubClass}==«00»
ATTRS{bDeviceProtocol}==«00»
ATTRS{bNumConfigurations}==«1»
ATTRS{bMaxPacketSize0}==«64»
ATTRS{speed}==«480»
ATTRS{busnum}==«2»
ATTRS{devnum}==«1»
ATTRS{devpath}==«0»
ATTRS{version}==" 2.00"
ATTRS{maxchild}==«3»
ATTRS{quirks}==«0x0»
ATTRS{avoid_reset_quirk}==«0»
ATTRS{authorized}==«1»
ATTRS{manufacturer}==«Linux 2.6.34-8-desktop ehci_hcd»
ATTRS{product}==«EHCI Host Controller»
ATTRS{serial}==«0000:00:1d.0»
ATTRS{authorized_default}==«1»

looking at parent device '/devices/pci0000:00/0000:00:1d.0':
KERNELS==«0000:00:1d.0»
SUBSYSTEMS==«pci»
DRIVERS==«ehci_hcd»
ATTRS{vendor}==«0x8086»
ATTRS{device}==«0x3b34»
ATTRS{subsystem_vendor}==«0x8086»
ATTRS{subsystem_device}==«0x0037»
ATTRS{class}==«0x0c0320»
ATTRS{irq}==«23»
ATTRS{local_cpus}==«00000000,00000000,00000000,00000000,00000000,00000000,00 000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,0 000000f»
ATTRS{local_cpulist}==«0-3»
ATTRS{modalias}==«pci:v00008086d00003B34sv00008086sd00000037bc0Csc03i20»
ATTRS{numa_node}=="-1"
ATTRS{dma_mask_bits}==«32»
ATTRS{consistent_dma_mask_bits}==«32»
ATTRS{enable}==«1»
ATTRS{broken_parity_status}==«0»
ATTRS{msi_bus}==«»
ATTRS{companion}==«»

looking at parent device '/devices/pci0000:00':
KERNELS==«pci0000:00»
SUBSYSTEMS==«»
DRIVERS==«»

bobych
() автор топика
Ответ на: комментарий от bobych

Попробовал у себя, получилась странно немного, правило с SUBSYSTEM=«tty» не сработало когда называлось 00-myrule.rules (вернее оно сработало, но линка почему-то нет), но сработало после переминования в 90-myrule.rules

vga ★★
()
Ответ на: комментарий от vga

P.S. Да, само правило (у меня нет сериала, поэтому вендор/девайс, ну для сериал аналогично)

$ cat /etc/udev/rules.d/90-myrule.rules 
SUBSYSTEM=="tty", ATTRS{idVendor}=="067b", ATTRS{idProduct}=="2303", SYMLINK+="ttyMyDevice"

Смотреть что происходит с удевом можно при помощи udevadm control --log-priority=debug, он тогда в сислог много чего напишет.

vga ★★
()
Ответ на: комментарий от vga

P.P.S. У меня виновником такого поведения оказался /lib/udev/rules.d/40-usb_modeswitch.rules - вот его корявое правило

KERNEL==«ttyUSB*», PROGRAM=«/usr/bin/tclsh /lib/udev/usb_modeswitch symlink name %p», SYMLINK=«%c»

Они здесь явно задают SYMLINK= вместо SYMLINK+=, поэтому если правило будет иметь номер меньше 40 - наш симлинк потеряется.

vga ★★
()

сотвори котортки симлинк :)

true_admin ★★★★★
()
Ответ на: комментарий от vga

Cпасибо! помогло. поменял номер файла с правилами с 10 на 99 и заработало.

bobych
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.