26

Some Lenovo laptops have keyboard backlights, and they can be turned on using Fn + Space. There are three states: off, normal and bright.

When I start Ubuntu, these laptops always default back to a burning sun screen brightness and the keyboard lights off.

I want a medium brightness and keyboard lights on by default, because I usually use this laptop in dark environments.

The backlight is easy. Internet is filled with information about this.
echo 10 > /sys/class/backlight/acpi_video0/brightness

But how do I turn on the keyboard backlights with a command? I've been looking here but it seems to do nothing:
/sys/class/leds/tpacpi\:\:thinklight


Updates

I tried for i in {1..32}; do xset led $i; done but nothing changes. Perhaps the keyboard backlight for Lenovo laptops has a proprietary driver and can only be controlled through tpacpi?

Also tried for i in $(find /sys/devices/platform/thinkpad_acpi/leds/ | grep /brightness\); do echo 255 > $i; done of no avail.

3
  • Either xset led (that is almost 100% likely to be Caps Lock, etc, but I'll add it in anyway) or setleds. Edit: Found this
    – Wilf
    Nov 28, 2013 at 19:32
  • It doesn't work. I tried for i in {1..32}; do xset led $i; done but nothing changes.
    – Redsandro
    Nov 28, 2013 at 23:29
  • 1
    Thank you for the Fn-space combo since I could not figure it out for quite some time.
    – alamar
    Jul 16, 2021 at 21:21

5 Answers 5

18

This is really needed to be fixed!

I think this is a common bug in new thinkpads. If you light keyboard manually fn + space then executed:

echo 0 > /sys/class/leds/tpacpi\:\:thinklight/brightness

keyboard will fade out. Please see the following link if it helps:

http://www.spinics.net/lists/ibm-acpi-devel/msg03090.html

3
  • Hey you're right, I didn't know. Since we can turn it off, it 'feels' like it would be a piece of cake to fix this for developers. Is there a bugreport yet?
    – Redsandro
    Dec 29, 2013 at 16:11
  • The email suggested this workaround: gist.github.com/hadess/6847281 Any idea how can we implement it ?
    – rashad
    Dec 29, 2013 at 17:14
  • Note the "thinklight" is different to the keyboard backlight. Mine does not have a thinklight.
    – Criggie
    Sep 21, 2022 at 5:59
11

Looks as this has been updated, my X1C with ubuntuMATE 16.04 LTS has

/sys/class/leds/tpacpi\:\:kbd_backlight/brightness

which works as expected ie:

# echo 2 > /sys/class/leds/tpacpi\:\:kbd_backlight/brightness

Brings it to full light :)

2
  • Hey, yes indeed! Thanks for taking the time to share this to an old question. :)
    – Redsandro
    Jul 26, 2016 at 11:56
  • 1
    No probs, it was the first hit when I was looking, thought it can't be that hard, so thought I should update this one with my findings :)
    – wuxmedia
    Jul 27, 2016 at 7:27
5

This is the bash script I use:

https://gist.github.com/vzaliva/0adba7bc40e2f31a0b5f802af2a63267

Works on IBM ThinkPad X260 with Ubuntu 16.04.

3
  • IBM? That laptop has got to be at least 10 years old! But it works on my Carbon X1, too! To be fair, the code from hadess as answered by rashad did the same, but I don't want to take 5 steps and install compilers. I was looking for a simple bash command. And this is something I can use. Thank you for responding to my 3 year old question. Accepted.
    – Redsandro
    May 22, 2016 at 23:59
  • Glad you found it useful. Of course I have meant Lenovo Thinkpad and my X260 is brand new. I just had the same problem and found this answer, but I did not like C program which also requires manual modprobe, so I re-wrote it as a script. The original C program authors did all heavy-lifting.
    – krokodil
    May 23, 2016 at 20:52
  • Thank you. Works in 2022 just as good :)
    – gnzg
    May 3, 2022 at 21:26
3

Ok, it works fine with me with this gist:

https://gist.github.com/hadess/6847281

  • First of all download the gist above, I renamed it to ThinkLight.c instead of tmp.c.
  • Make sure you have glib-2.0 installed:

    sudo apt-get install libglib2.0-dev
    
  • Compile ThinkLight.c as the following:

    gcc -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include ThinkLight.c -o ThinkLight -lglib-2.0
    
  • Load ec_sys module ( this can be added to /etc/modules on boot ):

    sudo modprobe ec_sys
    
  • Finally execute ThinkLight with level argument (0, 1, or 2):

     sudo ./ThinkLight 0
     sudo ./ThinkLight 1
     sudo ./ThinkLight 2
    

Special thanks to hadess for making this happen!

3
  • Any idea how to run this without sudo? Trying to run this within another script, and that runs as my user.
    – zsquare
    Jun 21, 2015 at 20:13
  • I tried this and got some errors :( ThinkLight.c: In function ‘main’: ThinkLight.c:56:6: warning: implicit declaration of function ‘lseek’ [-Wimplicit-function-declaration] if (lseek (fd, 0xd, SEEK_CUR) < 0) { ^~~~~ ThinkLight.c:60:6: warning: implicit declaration of function ‘write’ [-Wimplicit-function-declaration] if (write (fd, &levels[level], 1) < 0) { ^~~~~ Jul 2, 2019 at 4:58
  • @HeribertoJuarez this is an old answer, you can manipulate this directly with the new Linux kernels. Check wuxmedia's answer
    – rashad
    Jul 25, 2019 at 20:21
1

My T450s would not re-enable keyboard backlight upon resume with kernels older then 4.6. FWIW, with 4.6 now, keyboard backlight is set to the brightness it had before suspend.

You must log in to answer this question.

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