Function Keys Do Not work (Brightness & Sound) Ubuntu 16.04

Installed Ubuntu 16.04 on ASUS laptop, everything worked except fn keys. Cannot mute/increase/decrease volume (f10, f11, f12) or increase/decrease screen brightness (f5, f6).

In troubleshooting I found people have similar issues regardless of machine (ASUS, ACER, Dell) or Ubuntu version, anywhere from 8.0-16.04

How do I fix this?


You might have the FnLock activated. You might be able to deactivate it by pressing Fn + Esc. Source


  1. Edit GRUB config file to pass a kernel boot parameter

    • Open Terminal
    • type sudo -H gedit /etc/default/grub
    • Find this line: GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
    • Add acpi_osi= immediately following quiet splash to give: GRUB_CMDLINE_LINUX_DEFAULT="quiet splash acpi_osi="
    • The next line should look like this: GRUB_CMDLINE_LINUX=""
    • SAVE and CLOSE file
    • In terminal, type sudo update-grub
  2. Create .CONF file

    • Open Terminal
    • type (or copy/paste): sudo -H gedit /usr/share/X11/xorg.conf.d/20-intel.conf
    • Enter this in the file line for line:

      Section "Device"
      Identifier  "card0"
      Driver      "intel"
      Option      "Backlight"  "intel_backlight"
      BusID       "PCI:0:2:0"
      EndSection
      
    • SAVE and CLOSE file

  3. Reboot computer

The above steps fixed my problem and I was able to use the function keys to control brightness and volume on my machine. I tried several things and edited the GRUB file several times, updating and rebooting every time. Some threads suggested edited the BIOS, others suggested installing xbacklight. It took a while to troubleshoot. If my solution doesn't work for you, here are threads that helped me:

  • This one edits GRUB slightly differently
  • This is what I used the create the 20-intel.conf file (but the GRUB specifics did not work for me)
  • Why does the Kernel Boot Parameter Set ACPI OSI Linux
  • Linux Kernel Boot Parameters

Please check this article. You might need to change the fnmode value in sys/module/hid_apple/parameters/fnmode. For me it worked by changing it from 1 to 0. I did not need to reboot or anything.