/ uの権限を変更して、 `udev`を使用してLED /ライトの状態を変更するにはどうすればよいですか?


11

Thinkpadを持っているので、着信Jabberメッセージの通知にThinkLight(キーボードの上を照らすように設計された画面の上の白いフラッシュライト)を使用したいと思います。

/sys/class/leds/tpacpi::thinklight/brightness255に変更する必要があるだけなので、簡単に実現できます。ライトを3回点滅させる単純な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

次のように2つのudevルールを使用して、グループのメンバーledsにすべてのLEDへのアクセスを許可しています。

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場合は、LEDが書き込むことによってオフにされるたびに生成される0のを/sys/class/leds/.../brightness。これは、明るさがに設定されて0いるときはいつでも、Linux LEDドライバーコードのクリアトリガーが原因であるようです。そのため、2番目のルールには、ENV{TRIGGER}!="none"LEDがオフになるたびにルールがトリガーされないようにする条件があります。


1

「KERNEL」の設定が間違っていると思います。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.