`udev`를 사용하여 LED / 조명 상태를 변경하기 위해 / sys의 권한을 어떻게 변경할 수 있습니까?


11

Thinkpad가 있는데 Jabber 메시지 수신에 ThinkLight (키보드를 켜도록 설계된 화면 위의 흰색 플래시 표시 등)를 사용하고 싶습니다.

/sys/class/leds/tpacpi::thinklight/brightness255 로 변경 하면 되므로 쉽게 알 수 있습니다 . 간단한 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

그룹 구성원 leds에게 모든 LED에 대한 액세스 권한을 부여하기 위해 다음과 같이 두 개의 udev 규칙을 사용하고 있습니다 .

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"동적으로 생성 된 속성을 처리 하려면 규칙이 필요합니다. 예를 들어, 경우 LED의 트리거는 "타이머"(로 설정 echo timer > trigger), 다음 추가 특성 delay_ondelay_off생성됩니다. change이 새로운 속성이 자신의 그룹과 권한이 설정 가질 수 있도록 조치가 지정됩니다.

change에 글 0을 작성하여 LED가 꺼질 때마다 이벤트가 생성되는 것을 알았 습니다 /sys/class/leds/.../brightness. 밝기가로 설정 될 때마다 Linux LED 드라이버 코드 지우기 트리거로 인한 것 같습니다 0. 그렇기 때문에 ENV{TRIGGER}!="none"LED가 꺼질 때마다 규칙이 트리거되는 것을 방지하기 위해 두 번째 규칙에 조건이 있습니다.


1

'케르 넬'설정이 잘못되었다고 생각합니다. udev 규칙을 작성하고 디버깅하기위한이 멋진 문서에서 :

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

KERNEL = brightness, 아마도 SUBSYSTEM = leds가 필요하다고 생각합니다

그런 다음 배포판에 inotify 지원이 부족한 경우. udevd가 변경 사항을보고 있는지 확인하십시오.

# udevcontrol reload_rules
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.