LINUX.ORG.RU

Правило udev для /dev/usb помогите исправить

 ,


0

1

ЛОР, помогите исправить правило для создания в каталоге /dev/bus/usb структуры правильной.

сейчас создает /dev/bus/usb/1 а надо вроде чтобы было /dev/bus/usb/001

Посмотрите в своих дистрибутивах как оно будет правильно.

# libusb device nodes
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", MODE="0664"
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ENV{ID_USB_INTERFACES}=="", IMPORT{program}="usb_id --export %p"
ACTION=="add", SUBSYSTEM=="usb", ATTR{devnum}=="?*", ATTR{busnum}=="?*", PROGRAM="/bin/sh -c 'printf bus/usb/%%03i/%%03i $attr{busnum} $attr{devnum}'", NAME="%c", MODE="0644"
SUBSYSTEM=="usb", ATTR{devnum}=="?*", ATTR{busnum}=="?*", NAME="bus/usb/$attr{busnum}/$attr{devnum}", MODE="0644"
★★★★★

l /dev/bus/usb
итого 0
drwxr-xr-x 2 root root 60 фев 11 00:15 001
drwxr-xr-x 2 root root 60 фев  8 21:47 002
drwxr-xr-x 2 root root 60 фев  8 21:47 003
drwxr-xr-x 2 root root 80 фев  8 21:47 004
drwxr-xr-x 2 root root 60 фев  8 21:47 005

l /dev/bus/usb/*/*
crw-rw-r-- 1 root root 189,   0 фев  8 21:47 /dev/bus/usb/001/001
crw-rw-r-- 1 root root 189, 128 фев  8 21:47 /dev/bus/usb/002/001
crw-rw-r-- 1 root root 189, 256 фев  8 21:47 /dev/bus/usb/003/001
crw-rw-r-- 1 root root 189, 384 фев  8 21:47 /dev/bus/usb/004/001
crw-rw-r-- 1 root root 189, 385 фев  8 21:47 /dev/bus/usb/004/002
crw-rw-r-- 1 root root 189, 512 фев  8 21:47 /dev/bus/usb/005/001
dhampire ★★★
()
Ответ на: комментарий от dhampire

/dev/bus/usb/005/001

это правильная структура, а командами которые я привел создается /dev/bus/usb/5/1 соответственно некоторые программы, например usb_modeswitch пугаются и отказываются работать.

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

у меня так. похожего в стд. правилах не наблюдается

grep 'SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device",' /usr/lib/udev/rules.d/* -A 10 -n
/usr/lib/udev/rules.d/50-udev-default.rules:45:SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", MODE="0664"
/usr/lib/udev/rules.d/50-udev-default.rules:46:SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", IMPORT{builtin}="usb_id", IMPORT{builtin}="hwdb --subsystem=usb"
/usr/lib/udev/rules.d/50-udev-default.rules-47-
/usr/lib/udev/rules.d/50-udev-default.rules-48-# printer
/usr/lib/udev/rules.d/50-udev-default.rules-49-KERNEL=="parport[0-9]*", GROUP="lp"
/usr/lib/udev/rules.d/50-udev-default.rules-50-SUBSYSTEM=="printer", KERNEL=="lp*", GROUP="lp"
/usr/lib/udev/rules.d/50-udev-default.rules-51-SUBSYSTEM=="ppdev", GROUP="lp"
/usr/lib/udev/rules.d/50-udev-default.rules-52-KERNEL=="lp[0-9]*", GROUP="lp"
/usr/lib/udev/rules.d/50-udev-default.rules-53-KERNEL=="irlpt[0-9]*", GROUP="lp"
/usr/lib/udev/rules.d/50-udev-default.rules:54:SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ENV{ID_USB_INTERFACES}=="*:0701??:*", GROUP="lp"
/usr/lib/udev/rules.d/50-udev-default.rules-55-
/usr/lib/udev/rules.d/50-udev-default.rules-56-# block
/usr/lib/udev/rules.d/50-udev-default.rules-57-SUBSYSTEM=="block", GROUP="disk"
/usr/lib/udev/rules.d/50-udev-default.rules-58-
/usr/lib/udev/rules.d/50-udev-default.rules-59-# floppy
/usr/lib/udev/rules.d/50-udev-default.rules-60-SUBSYSTEM=="block", KERNEL=="fd[0-9]", GROUP="floppy"
/usr/lib/udev/rules.d/50-udev-default.rules-61-
/usr/lib/udev/rules.d/50-udev-default.rules-62-# cdrom
/usr/lib/udev/rules.d/50-udev-default.rules-63-SUBSYSTEM=="block", KERNEL=="sr[0-9]*", GROUP="optical"
/usr/lib/udev/rules.d/50-udev-default.rules-64-SUBSYSTEM=="scsi_generic", SUBSYSTEMS=="scsi", ATTRS{type}=="4|5", GROUP="optical"
--
/usr/lib/udev/rules.d/99-systemd.rules:48:SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ENV{ID_USB_INTERFACES}=="*:0701??:*", TAG+="systemd", ENV{SYSTEMD_WANTS}+="printer.target"
/usr/lib/udev/rules.d/99-systemd.rules-49-
/usr/lib/udev/rules.d/99-systemd.rules-50-# Apply sysctl variables to network devices (and only to those) as they appear.
/usr/lib/udev/rules.d/99-systemd.rules-51-
/usr/lib/udev/rules.d/99-systemd.rules-52-SUBSYSTEM=="net", KERNEL!="lo", RUN+="/usr/lib/systemd/systemd-sysctl --prefix=/proc/sys/net/ipv4/conf/$name --prefix=/proc/sys/net/ipv4/neigh/$name --prefix=/proc/sys/net/ipv6/conf/$name --prefix=/proc/sys/net/ipv6/neigh/$name"
/usr/lib/udev/rules.d/99-systemd.rules-53-
/usr/lib/udev/rules.d/99-systemd.rules-54-# Asynchronously mount file systems implemented by these modules as
/usr/lib/udev/rules.d/99-systemd.rules-55-# soon as they are loaded.
/usr/lib/udev/rules.d/99-systemd.rules-56-
/usr/lib/udev/rules.d/99-systemd.rules-57-SUBSYSTEM=="module", KERNEL=="fuse", ACTION=="add", TAG+="systemd", ENV{SYSTEMD_WANTS}+="sys-fs-fuse-connections.mount"
/usr/lib/udev/rules.d/99-systemd.rules-58-SUBSYSTEM=="module", KERNEL=="configfs", ACTION=="add", TAG+="systemd", ENV{SYSTEMD_WANTS}+="sys-kernel-config.mount"

может это зависит от версии udev

LANG=C y -Qi systemd | grep Version
Version        : 197-4

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

благодарю. хоть есть с чем сравнить и подумать.

У меня udev-173 еще без systemd :)

irton ★★★★★
() автор топика

вобщем пока разобрался что для каждого девайса в sys есть файл uevent в котором есть строка к примеру DEVPATH=bus/usb/002/001 есть еще параметры DEVNUM и BUSNUM вот их бы как то подкинуть в правило udev

irton ★★★★★
() автор топика

Проблема решена, упростил правило до

# libusb device nodes
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", MODE="0664"
дополнительно в стартовом скрипте прописал udevadm trigger --subsystem-match=usb для создания полной структуры в /dev/bus/usb

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