แล็ปท็อป Dell ของฉันอยู่ภายใต้ข้อบกพร่องนี้ด้วยเคอร์เนล 3.14 ในฐานะที่เป็นวิธีแก้ปัญหาฉันเขียนสคริปต์ง่าย ๆ
/ usr / bin / สว่างแก้ไข:
#!/bin/bash
echo 0 > /sys/class/backlight/intel_backlight/brightnes
(และทำให้ปฏิบัติการ: chmod +x /usr/bin/brightness-fix
)
และบริการ systemd เรียกมันว่าจะดำเนินการเมื่อเริ่มต้น:
/etc/systemd/system/brightness-fix.service
[Unit]
Description=Fixes intel backlight control with Kernel 3.14
[Service]
Type=forking
ExecStart=/usr/bin/brightness-fix
TimeoutSec=0
StandardOutput=syslog
#RemainAfterExit=yes
#SysVStartPriority=99
[Install]
WantedBy=multi-user.target
และเปิดใช้งาน: systemctl enable /etc/systemd/system/brightness-fix.service
มันใช้งานได้อย่างมีเสน่ห์และฉันสามารถควบคุมความสว่างของหน้าจอได้ตามต้องการ ปัญหาเกิดขึ้นเมื่อแล็ปท็อปดำเนินการต่อหลังจากเข้าสู่โหมดสลีป (เช่นเมื่อปิดริมฝีปากแล็ปท็อป): การควบคุมความสว่างไม่ทำงานอีกต่อไปเว้นแต่ฉันจะเรียกใช้สคริปต์ fisrt ด้านบนด้วยตนเอง:/usr/bin/brightness-fix
ฉันจะสร้างบริการ systemd อื่นเช่นของฉันด้านบนเพื่อดำเนินการในเวลาดำเนินการต่อได้อย่างไร?
แก้ไข:
ตามความคิดเห็นด้านล่างฉันได้แก้ไขbrightness-fix.service
เช่นนี้:
[Unit]
Description=Fixes intel backlight control with Kernel 3.14
[Service]
Type=oneshot
ExecStart=/usr/local/bin/brightness-fix
TimeoutSec=0
StandardOutput=syslog
[Install]
WantedBy=multi-user.target sleep.target
ฉันได้เพิ่มecho "$1 $2" > /home/luca/br.log
สคริปต์ของฉันเพื่อตรวจสอบว่ามีการดำเนินการจริงหรือไม่ สคริปต์ที่ถูกเรียกใช้งานจริงนั้นยังทำงานต่อ ( post suspend
) แต่ไม่มีผลกระทบ (backlit คือ 100% และไม่สามารถเปลี่ยนแปลงได้) ฉันยังลองบันทึก$DISPLAY
และ$USER
ในเวลาที่กลับมาว่างเปล่า ดังนั้นฉันเดาว่าสคริปต์จะถูกดำเนินการเร็วเกินไปเมื่อตื่นจากการนอนหลับ คำใบ้ใด ๆ
/usr/local/bin
/usr/bin
ไดเรกทอรีนั้นสงวนไว้สำหรับผู้จัดการแพ็คเกจเท่านั้น
sleep.target
จะเรียกใช้หน่วยเมื่อคอมพิวเตอร์เข้าสู่โหมดสลีปแทนที่จะทำงานต่อ ดูคำตอบของฉันด้านล่างสำหรับไฟล์หน่วยที่ทำงานให้ฉันด้วยปัญหาที่คล้ายกัน
WantedBy=sleep.target
...