मैं `udev` का उपयोग करके एलईडी / प्रकाश की स्थिति को बदलने के लिए / sys में अनुमतियों को कैसे बदल सकता हूं?


11

मुझे एक थिंकपैड मिला है और आने वाले जाबेर संदेशों पर सूचनाओं के लिए थिंकलाइट (कीबोर्ड के ऊपर तैयार की गई सफेद फ्लैश लाइट) का उपयोग करना चाहते हैं।

यह महसूस करना आसान है क्योंकि किसी को केवल /sys/class/leds/tpacpi::thinklight/brightness255 में बदलने की आवश्यकता है । मैं इसे एक साधारण बैश स्क्रिप्ट के साथ करूँगा, जो तीन बार प्रकाश को झपका देगा।

लेकिन ऐसा करने में सक्षम होने के लिए, मुझे अनुमतियों को बदलने की आवश्यकता है, कि न केवल रूट इस फ़ाइल को बदलने में सक्षम है।
और मैं 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एलईडी नियमों का उपयोग कर रहा हूं, सभी एल ई डी के लिए समूह के सदस्यों को देने के लिए:

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। ऐसा लगता है कि जब भी ब्राइटनेस सेट होती है तो लिनक्स एलईडी ड्राइवर कोड क्लियरिंग ट्रिगर के कारण होता है 0। यही कारण है कि दूसरे नियम में ENV{TRIGGER}!="none"शर्त है, नियम को रोकने के लिए हर बार एक एलईडी बंद कर दिया जाता है।


1

मुझे लगता है कि आपके पास गलत 'KERNEL' सेटिंग है। Udv नियमों को लिखने और डिबगिंग के लिए इस भयानक डॉक से:

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

मुझे लगता है कि आपको केर्नेल = चमक, और शायद एक SUBSYSTEM = एल ई डी की आवश्यकता है

फिर, यदि आपके डिस्ट्रो में इनोटिफ़ाइड सपोर्ट की कमी है। सुनिश्चित करें कि आपके बदलाव udvd द्वारा देखे जा रहे हैं:

# udevcontrol reload_rules
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.