7

I recently got a Samsung NP900X3N and I am trying to make the backlight work (with Linux Mint 18.1 and Kernel 4.10 on UEFI). I have read a lot about it and I am aware that there exist many pages on that topic, but they are all old (3+ years) and I couldn't make any of them work for me (maybe because this version of the laptop is relatively new).

Some things I have tried are:

  • I have downloaded and installed the samsung-tools package, but running it gives me an error after about 2 minutes of no output.
  • I've tried to find a samsung::kbd_backlight/brightness file according to this simple answer, but apparently there is none (I could only find a phy0-led/brightness, which I don't know what does but is already set to 1).
  • I have tried to follow this guide on a very manual approach, but to be honest I wasn't able to make it too far (probably for lack of knowledge on my part, but I there must be a less convoluted approach)
  • Checking out the scan code of the key by checking the kernel log as suggested by this answer.

This last one is the one that came the closest, and the one I would like to pursue further. When pressing fn+f9 (toggle keyboard backlight) I get the scan code e02c assigned to that key. So I did

sudo setkeycodes e02c 230

as suggested by the answer. So when I press this key, I get a notification that shows a keyboard light symbol, which I believe it's a good sign, but nothing happens.

As the question states the keycode value 230 is for increasing the kbdlight, but my laptop doesn't have that: it only has the toggle kbdlight key. So I think this might be the problem, but I can't find a "toggle" keycode (which might be due to my inability to understand /usr/include/linux/input.h fully).

I tried using xmodmap -pke | less to find the "toggle keyboard backlight", which is listed as keycode 236, but apparently the numbers on that list don't really work.

Any suggestions?

EDIT

Output of ll /sys/class/backlight/:

lrwxrwxrwx  1 root root 0 Apr 28 07:16 intel_backlight -> ../../devices/pci0000:00/0000:00:02.0/drm/card0/card0-eDP-1/intel_backlight/

I had already tried changing the value at /sys/class/backlight/brightness, but this only controls the display brightness.

Output of ll /sys/class/leds/:

lrwxrwxrwx  1 root root 0 Apr 28 07:19 input3::capslock -> ../../devices/platform/i8042/serio0/input/input3/input3::capslock/
lrwxrwxrwx  1 root root 0 Apr 28 07:19 input3::numlock -> ../../devices/platform/i8042/serio0/input/input3/input3::numlock/
lrwxrwxrwx  1 root root 0 Apr 28 07:19 input3::scrolllock -> ../../devices/platform/i8042/serio0/input/input3/input3::scrolllock/
lrwxrwxrwx  1 root root 0 Apr 28 07:19 phy0-led -> ../../devices/pci0000:00/0000:00:1c.0/0000:01:00.0/leds/phy0-led/

The capslock is what it says (I've tested). The numlock doesn't appear to do anything, since I changed the value from 0 to the max and nothing happened (my keyboard doesn't have a numlock. The scrolllock also doesn't appear to do anything. I also don't know what phy0-led. It's set to 1 already, and putting 0 doesn't seem to do anything.

EDIT2

Doing modprobe samsung-laptop gives me the follow error

modprobe: ERROR: could not insert 'samsung_laptop': No such device

which appears to be an old bug.

  • 1
    I have the same model. If you turn all the room lights out, do you not see lights under the keys? – jasonwryan Apr 29 '17 at 0:28
  • @jasonwryan Nope. Do you? What kernel are you running? Are you booting UEFI? – TomCho Apr 29 '17 at 0:43
  • Yes; UEFI booting with vanilla and custom kernels. No special modules or setup, /sys/class/leds is the same as you report. The lighting is not super bright, but just enough to read the keys in a dark room. – jasonwryan Apr 29 '17 at 1:09
  • @jasonwryan That's weird. I really don't see anything. Can you post your grub file please? – TomCho Apr 29 '17 at 6:33
  • I don't use grub, I use systemd-boot. – jasonwryan Apr 29 '17 at 6:38
1

There are two parts to being able to control the backlight with special keys from the keyboard:

  • understand the events that are produced when the keys are pressed
  • actually change backlight intensity

And you need a program, for example a window manager, that reacts to the events and then changes intensity.

You are ok on the first part, you get an event, and we can sort out the necessary translations later. As for the second part, you need some driver that knows how to control the backlight intensity, and then some interface to this driver.

Very often these are found in the /sys, hierarchy, so try

ll /sys/class/backlight
ll /sys/class/led

and edit your question with the output. These directories should contain links to other directories with a file named brightness and a file named max_brightness. If you can't figure out from the name what it is, look at the contents of max_brightness, and as root, try writing numbers between 0 and the max value to each of those files like

echo 0 > /sys/class/led/phy0-led/brightness

and see if you can identify what it controls.

Edit:

Ok, looks like there are no controls for the keyboard backlight, and you need a specific driver. phy0-led is very likely a WLAN LED connector, which may or may not be actually connected to anything. You can check with lspci and look for the device at 00:1c.0.

The samsung::kbd_backlight controls are provided by the asus-wmi driver for ASUS Laptops using the WMI interface. The is something similar for Samsung, namely samsung-laptop, it provides leds/samsung::kbd_backlight, and there is also a debugfs interface for more direct access.

No idea if this will work on your model. Try

modprobe samsung-laptop

as root, veryify with lsmod if it's loaded, look at dmesg to see if there were any problems or other messages, and see if something turns up.

  • Edited the question but couldn't identify anything. FYI, I have also identified another option in the comment of this anwer which modified the grub file. But I think I'll wait to see if we can solve this in a more direct way since I don't know much about the grub, and I think changing /etc/default/grub has a high probably that it'll make my distro unbootable. – TomCho Apr 28 '17 at 14:43
  • Thanks for the edit. Also edited my question with your suggestion but it didn't really work (apparently they prevent this module to be loaded if booting in UEFI for instability reasons ("bricking")). I'm going to look into debugfs, since I have no idea what that is or how to use it. – TomCho Apr 29 '17 at 0:27
  • 1
    So can you boot from legacy mode instead of UEFI to test that this is what prevents the module from loading? debugfs is a filesystem that allows direct access to parts of the kernel for debugging; for this module, it allows you to issue specific commands, and one commands changes keyboard backlights at least for some models. But that doesn't help if the module doesn't load/can't work because of UEFI. – dirkt Apr 29 '17 at 9:13
  • I think it's very likely, based on the things I've read, that it would work in legacy mode. The thing is that because this is a work laptop I can't re-install the system in legacy, so I guess if this is the only next step, we hit a dead-end for now. – TomCho Apr 29 '17 at 14:20
  • 2
    Looks like it. For reference, here is the commit that introduced the check. – dirkt Apr 29 '17 at 18:01

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.