8

I have a Thinkpad 470 and I am running Ubuntu 16.04 LTS on it. I don't like to keep the keyboard backlight on during daytime because I want to save battery among other things. What I have noticed is that the backlight turns itself on even if it is woken up from a state where the screen was dimmed completely or system had gone to sleep due to inactivity. The issue is that in day time or in presence of bright lights I am unable to see the backlight is on, thus I don't switch it off and this drains the battery. I want to be able to control this setting. How do I do this?

After searching a bit in the following location :

/sys/class/leds/tpacpi::kbd_backlight

I found the following files:

rgh@arrakis:/sys/class/leds/tpacpi::kbd_backlight$ ls
brightness  brightness_hw_changed  device  max_brightness  
power  subsystem  trigger  uevent

From among these, the file trigger contains the following items inside:

[none] rfkill-any kbd-scrolllock kbd-numlock kbd-capslock kbd-kanalock 
kbd-shiftlock kbd-altgrlock kbd-ctrllock kbd-altlock kbd-shiftllock 
kbd-shiftrlock kbd-ctrlllock kbd-ctrlrlock AC-online 
BAT0-charging-or-full BAT0-charging BAT0-full 
BAT0-charging-blink-full-solid BAT1-charging-or-full 
BAT1-charging BAT1-full BAT1-charging-blink-full-solid usb-gadget 
usb-host disk-activity ide-disk mtd nand-disk cpu cpu0 cpu1 cpu2 cpu3 
panic bluetooth-power rfkill0 rfkill1 phy0rx phy0tx phy0assoc phy0radio 
hci0-power rfkill41

I am guessing something here needs to be removed to get the behaviour I am looking for? Can you please tell me if I am correct? How to get this done?

1
  • As alluded to in answer below, the "file" brightness is likely more suitable than the "file" trigger which you are focusing on now. Apr 29, 2018 at 20:02

2 Answers 2

2
+50

From this reddit post OP had opposite problem with lights always being turned off when resuming from suspend.

You can follow the same approach but change the 1 (on) to a 0 (off).

Find the folder /etc/systemd/system/sleep.target.wants/ and create kb_backlight_resume.service with these contents:

[Unit]
Description=Switch on keyboard backlight after resume
After=suspend.target
After=hibernate.target
After=hybrid-sleep.target

[Service]
ExecStart=/bin/echo 0 > "/sys/devices/platform/thinkpad_acpi/leds/tpacpi::kbd_backlight/brightness"

[Install]
WantedBy=suspend.target
WantedBy=hibernate.target
WantedBy=hybrid-sleep.target

I don't have a Thinkpad and my Dell backlight keyboard has different directory structures. I'm unable to test this for your environment. You might have to manually tweak the code if the directory names above are off.

Don't forget to reboot before testing suspend / resume.


If you have a Dell that doesn't have /etc/systemd/system/sleep.target.wants/ it can be enabled. For example see:

6
  • Comment from DmC8pR2kZLzdCQZu3v: " I am running the latest Ubuntu 16.04 on a Lenovo T460s, and this problem just started happening on my machine as well. @WinEunuuchs2Unix's solution did not resolve it for me. I am unable to comment on his/her answer to indicate this, nor can I vote on the answer." Apr 29, 2018 at 19:59
  • Dell Inspiron 13 doesn't have /etc/systemd/system/sleep.target.wants/ Sep 13, 2020 at 7:28
  • @JamesParker You shouldn't downvote my answer just because it doesn't work on your Dell system. Dell has these instructions for unmasking sleep.target in systemd: dell.com/support/article/en-ca/how12691/… Sep 13, 2020 at 20:33
  • Got it. Let me undo that. Sep 14, 2020 at 11:03
  • 1
    @JamesParker I've revised the answer so you can retract the downvote. It was good you posted a comment when you downvoted so I could comment you. So many people downvote without giving a reason. Thanks. Sep 14, 2020 at 23:23
1

Try with:

sudo apt-get install pm-utils

Create a script in /usr/lib/pm-utils/sleep.d

sudo nano /usr/lib/pm-utils/sleep.d/KB_BACK_OFF.sh

Copy and paste the following:

#!/bin/sh

case "$1" in
       resume)
             xset led off
                ;;
esac

exit 0

Make executable the script:

sudo chmod a+x /usr/lib/pm-utils/sleep.d/KB_BACK_OFF.sh

If the command in the script xset led off does not work, try to replace it with the command xset -led (YOUR NUMBER) with a number from 1 to 32. Example: xset -led 3

I personally tried to run the script for another purpose on Kubuntu 18.04 and it works on system wake up.

YOU DON'T NEED TO RESTART THE SYSTEM

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .