LINUX.ORG.RU

Создание правила udev

 


0

2

Пришлось знакомится с udev. Помогите создать свое первое правило, чтобы понять общую логику. Пытаюсь создать правило для своего стилуса – создать симлинк, – но не получается.

# touch /etc/udev/rules.d/devices.rules

# xinput list-props 'Wacom ISDv4 E6 Pen Pen (0)'
Device Node (288):	"/dev/input/event14"

# udevadm info -a -n /dev/input/event14
...
KERNELS=="input21"
SUBSYSTEMS=="input"
DRIVERS==""
...
ATTRS{name}=="Wacom ISDv4 E6 Pen"

# nano Reading rules file: /etc/udev/rules.d/device.rules

SUBSYSTEMS=="input", ATTRS{name}=="Wacom ISDv4 E6 Pen", SYMLINK+="stilus"

# udevadm control --reload-rules
# udevadm test /dev/input/event14
Reading rules file: /etc/udev/rules.d/devices.rules
Failed to open device '/sys/dev/input/event14': No such device
Unload module index
Unloaded link configuration context.

Перемещено hobbit из general



Последнее исправление: Cl_Magenta (всего исправлений: 1)

Ответ на: комментарий от arax
# udevadm info -a -n /dev/input/event14
...
looking at parent device '/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.5/2-1.5:1.0/0003:056A:00E6.0001/input/input21':
KERNELS=="input21"
SUBSYSTEMS=="input"
DRIVERS==""
...

# udevadm test '/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.5/2-1.5:1.0/0003:056A:00E6.0001/input/input21'
run: 'kmod load 'input:b0003v056Ap00E6e0111-e0,1,3,k140,141,14A,14B,14C,ra0,1,18,mlsfw''
Unload module index
Unloaded link configuration context.
Cl_Magenta
() автор топика
Ответ на: комментарий от Cl_Magenta

looking at parent device

Это не то.
Нужно

looking at device 'PATH'

PS
Хотя может и то, по идее симлинк оно должно было создать, нужно проверить тот ли он что нужно.

arax ★★
()
Последнее исправление: arax (всего исправлений: 1)
Ответ на: комментарий от arax

В обоих случаях он однозначно пишет:

Unload module index
Unloaded link configuration context.

Устройства stilus мне найти нигде не удалось.

Cl_Magenta
() автор топика
Последнее исправление: Cl_Magenta (всего исправлений: 1)
Ответ на: комментарий от Cl_Magenta

Сам стилус вытащи/вставь, симлинк должен появиться в /dev
А так udevadm test нужно из под рута запускать. И в качестве имени указывать:

looking at device 'PATH'
а не
looking at parent device 'PATH'
Или можно вот так писать:
udevadm test `udevadm info --query=path --name=/dev/input/event14`

arax ★★
()
Последнее исправление: arax (всего исправлений: 4)
Ответ на: комментарий от arax

Все еще хуже. Перезагрузил компьютер: симлинк появился, хотя я даже не доставал стилус. Не понимаю логики. Как сделать, чтобы симлинк появлялся только после того, как достанешь стилус, и он определится в системе.

Это должно быть как-то связано вот с этим: ДО:

# xinput list
⎡ Virtual core pointer                    	id=2	[master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer              	id=4	[slave  pointer  (2)]
⎜   ↳ SynPS/2 Synaptics TouchPad              	id=13	[slave  pointer  (2)]
⎜   ↳ Wacom ISDv4 E6 Finger                   	id=11	[slave  pointer  (2)]
⎜   ↳ TPPS/2 IBM TrackPoint                   	id=14	[slave  pointer  (2)]
⎣ Virtual core keyboard                   	id=3	
...
    ↳ Wacom ISDv4 E6 Pen    

ПОСЛЕ:

xinput list
⎡ Virtual core pointer                    	id=2	[master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer              	id=4	[slave  pointer  (2)]
⎜   ↳ SynPS/2 Synaptics TouchPad              	id=13	[slave  pointer  (2)]
⎜   ↳ Wacom ISDv4 E6 Finger                   	id=11	[slave  pointer  (2)]
⎜   ↳ TPPS/2 IBM TrackPoint                   	id=14	[slave  pointer  (2)]
⎜   ↳ Wacom ISDv4 E6 Pen Pen (0)         

То есть стилус определяется при загрузке системы, но потом, когда он достается из корпуса, появляется Wacom ISDv4 E6 Pen Pen (0). Как создать правило не для Wacom ISDv4 E6 Pen, а для Wacom ISDv4 E6 Pen Pen (0) ?

Cl_Magenta
() автор топика
Последнее исправление: Cl_Magenta (всего исправлений: 1)
Ответ на: комментарий от Cl_Magenta

Как сделать, чтобы симлинк появлялся только после того, как достанешь стилус, и он определится в системе.

Так а в /dev/input/ что нибудь появляется новое после того как достаешь стилус?
Если да, то вот для него правило и делай.

arax ★★
()
Последнее исправление: arax (всего исправлений: 1)
Ответ на: комментарий от Cl_Magenta

при этом я делал так:

# xinput list-props 'Wacom ISDv4 E6 Pen Pen (0)'

И, соответственно, получал:

Device Node (288):	"/dev/input/event14"

Но теперь выяснилось, что:

# xinput list-props 'Wacom ISDv4 E6 Pen'
Device Node (288):	"/dev/input/event14"

Имеет то же имя. Как сделать, чтобы правило срабатывало не при обнаружении устройства: это произойдет при загрузке ОС, – а при его активации, то есть извлечении из корпуса?

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

«Так а в /dev/input/ что нибудь появляется новое после того как достаешь стилус?»

Да, появляется устройство stilus, но оно появляется при загрузке системы, когда определяется устройство Wacom ISDv4 E6 Pen.

Cl_Magenta
() автор топика
Последнее исправление: Cl_Magenta (всего исправлений: 1)
Ответ на: комментарий от Cl_Magenta

Как сделать, чтобы правило срабатывало не при обнаружении устройства: это произойдет при загрузке ОС, – а при его активации, то есть извлечении из корпуса?

Вставь стилус, запусти udevadm monitor, вытащи стилус, выложи что udevadm monitor выводит.

PS
Лучше вот такое запусти

udevadm monitor --property --udev

Там сразу пропертя покажет

arax ★★
()
Последнее исправление: arax (всего исправлений: 2)
Ответ на: комментарий от Cl_Magenta

Все выглядит так что «Wacom ISDv4 E6 Pen Pen (0)» существует на уровне libinput(проверить можно запустив sudo libinput debug-events вставить/вытащить стилус) и при помощи udev тут ничего не сделать, раз никаких событий в udevadm monitor не регистрируется.

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

Значит на уровне драйвера планшета в иксах, в любом случае если udevadm monitor не реагирует на извлечение стилуса, то при помощи udev ничего не сделать.

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

TABLET_TOOL_PROXIMITY

Это не то, события должны быть типов DEVICE_ADDED/DEVICE_REMOVED.
А точно что устройство Wacom ISDv4 E6 Pen Pen (0) появляется/исчезает при извлечении стилуса? Или может оно только один раз появляется, а затем если вставить стилус не исчезает?

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

Симлинк я хотел создать для того, чтобы понять, как создавать правила.

Вообще, мне надо, чтобы при определении устройства запускался скрипт, настраивающий кнопки стилуса.

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

Вообще, мне надо, чтобы при определении устройства запускался скрипт, настраивающий кнопки стилуса.

Вот с этого и нужно было начинать, посмотри https://wiki.archlinux.org/title/Graphics_tablet#Remapping_buttons там что то про это есть.

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

Если телефон как то в системе появляется после подключения, то должно.

~ ❯ udevadm monitor                                                                                                    1m36s ✘ 130
monitor will print the received events for:
UDEV - the event which udev sends out after rule processing
KERNEL - the kernel uevent

KERNEL[8576.612790] add      /devices/pci0000:00/0000:00:01.2/0000:02:00.0/usb1/1-7/1-7.2 (usb)
KERNEL[8576.637697] add      /devices/pci0000:00/0000:00:01.2/0000:02:00.0/usb1/1-7/1-7.2/1-7.2:1.0 (usb)
KERNEL[8576.637724] bind     /devices/pci0000:00/0000:00:01.2/0000:02:00.0/usb1/1-7/1-7.2 (usb)
UDEV  [8576.638457] add      /devices/pci0000:00/0000:00:01.2/0000:02:00.0/usb1/1-7/1-7.2 (usb)
UDEV  [8576.639102] add      /devices/pci0000:00/0000:00:01.2/0000:02:00.0/usb1/1-7/1-7.2/1-7.2:1.0 (usb)
UDEV  [8576.639656] bind     /devices/pci0000:00/0000:00:01.2/0000:02:00.0/usb1/1-7/1-7.2 (usb)

arax ★★
()