I had exactly the same problem on my MSI GE70 Apache Pro and while the answer is out there it is not easy to find, so I'm documenting my experience here.
- The backlight was stuck on full brightness and did not respond to brightness function keys.
- /sys/class/backlight is empty, indicating that ACPI functions for controlling the backlight are unavailable.
I found the vital clue in the Arch Linux wiki entry "backlight":
On Nvidia Optimus laptops, the kernel parameter nomodeset can interfere with the ability to adjust the backlight.
The MSI GE70 has Intel graphics as well as a discrete NVIDIA 860M. In order to get the Fedora 20 installer to work I had to boot with the nomodeset kernel parameter. This made it into the installed GRUB2 configuration. I'm not sure whether that is intentional or not, but it is unnecessary because the installed GRUB2 configuration includes parameters to blacklist the nouveau driver, which conflicts with the NVIDIA hardware.
The full final solution is to remove the nomodeset kernel parameter and add the acpi_backlight=vendor kernel parameter. The procedure is as follows:
- First, to test that this is the solution, reboot the system and at the GRUB2 boot menu, press 'e' to edit the configuration, scroll down and edit the linux or linuxefi line (depending on whether you have a BIOS or UEFI - my laptop had UEFI).
- Remove the nomodeset parameter if present.
- Add the parameter acpi_backlight=vendor
- My configuration also contained "nouveau.modeset=0 rd.driver.blacklist=nouveau" which I believe is the magic incantation to prevent nouveau from conflicting with the NVIDIA driver. I left that in there and it did no harm.
- Press F10 to continue booting the system. You should be able to adjust screen brightness with the keyboard and a symlinked directory /sys/class/backlight/intel_backlight will now exist.
- Untested: I believe that a range of client applications that depend on ACPI data in the /sys filesystem will now work also.
Making the Fix Permanent
- As root, edit /etc/default/grub and modify the GRUB_CMDLINE_LINUX= line to:
- Remove the nomodeset parameter.
- Add acpi_backlight=vendor
- Finalise the changes to the GRUB2 configuration.
- On Ubuntu, the command is apparently "update-grub".
- On Fedora 20, with UEFI, I first backed up /etc/grub2-efi.cfg and then did:
grub2-mkconfig -o /etc/grub2-efi.cfg. I have read elsewhere that the file to update is /etc/grub2.cfg, however, on my system that is a blind symlink and when I tried using it the changes did not take effect. I assume that file is only consulted on BIOS systems.
- That's it. You can then reboot the system and it should all work.