Як я можу змінити дозволи в / sys, щоб змінити стан світлодіода / світла за допомогою `udev`?


11

У мене є Thinkpad, і я хотів би використовувати ThinkLight (білий спалах над екраном, призначений для освітлення клавіатури) для оповіщення про вхідні повідомлення Jabber.

Це легко зрозуміти, оскільки потрібно лише змінити /sys/class/leds/tpacpi::thinklight/brightnessзначення 255. Я зроблю це за допомогою простого сценарію Bash, який дозволить світлі блимати три рази.

Але для того, щоб зробити це, мені потрібно змінити дозволи, щоб не лише root міг змінити цей файл.
І я не хочу sudo chmod o+w /sys/class/leds/tpacpi::thinklight/brightnessпісля кожного завантаження.

Я думаю, найкраще рішення udevдля цього використовується. Однак я ніколи раніше не користувався udevі мене дуже бентежить навчальні посібники, які я знайшов в Інтернеті.

Я спробував це udevправило:

KERNEL=="tpacpi::thinklight", MODE="0666"

так само, як

KERNEL="thinklight", MODE="0666"

Але це не працює. Хоча я не отримую помилок під час роботиudevadm test /class/leds

Дякуємо за будь-яку допомогу та звернення. А може й інші рішення.


гарна ідея з повідомленням, треба зробити це теж :) спасибі
K1773R

Відповіді:


7

Я використовую два правила udev наступним чином, щоб надати членам групи ledsдоступ до всіх світлодіодів:

SUBSYSTEM=="leds", ACTION=="add", RUN+="/bin/chgrp -R leds /sys%p", RUN+="/bin/chmod -R g=u /sys%p"
SUBSYSTEM=="leds", ACTION=="change", ENV{TRIGGER}!="none", RUN+="/bin/chgrp -R leds /sys%p", RUN+="/bin/chmod -R g=u /sys%p"

Зверніть увагу, що ACTION=="change"правило потрібне для обробки динамічно створених атрибутів. Наприклад, якщо тригер світлодіода встановлений в положення «таймер» ( echo timer > trigger), то додаткові атрибути delay_onі delay_offстворені. changeДія задається так , що ці нові атрибути їх групи і права доступу встановлені.

Я помітив, що changeподія генерується щоразу, коли світлодіод вимикається при записі 0на /sys/class/leds/.../brightness. Це, мабуть, пов’язано з очищенням світлодіодного світлодіодного коду Linux, коли спрацьовує яскравість 0. Ось чому друге правило має ENV{TRIGGER}!="none"умову - запобігати спрацьовуванню правила кожного разу, коли світлодіод вимикається.


1

Я думаю, у вас неправильна установка "KERNEL". З цього дивовижного документа для написання та налагодження правил udev:

http://www.reactivate.net/writing_udev_rules.html#basic

Я думаю, що вам потрібен KERNEL = яскравість, а можливо, SUBSYSTEM = світлодіоди

Тоді, у випадку, якщо у вашому дистрибутиві не вистачає підтримки, виклик. Переконайтесь, що ваші зміни бачать udevd:

# udevcontrol reload_rules
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.