22

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?

2

5 Answers 5

23

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

1
  • 2
    Thanks!! You saved my day! Oct 15, 2020 at 21:45
19
  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:

7
  • 1
    I would add a link to askubuntu.com/questions/28848/… or redsymbol.net/linux-kernel-boot-parameters
    – lrkwz
    Nov 13, 2017 at 22:12
  • 1
    The 20-intel.conf file fixed my issue, but the grub changes caused my splash screen to not show up and broke the trackpad. Reverted that and kept the .conf file, and everything is perfect.
    – Jacob
    Aug 9, 2018 at 0:56
  • 1
    On my laptop (Sony VAIO PCG-4K1M running Lubuntu) just the GRUB part was sufficient to make it work. The brightness changes in small steps, so I needed to press multiple times to see it work.
    – Paul
    Mar 9, 2019 at 15:31
  • This made my system stop loading :D I had to load in recovery mode and undo all things I've done) Mar 21, 2020 at 11:21
  • Sorry, I did same but noting worked for me. I am using ubuntu 18.04.
    – Sun
    Feb 19, 2021 at 3:22
3

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.

3
  • 1
    Worked for me, using Keychron keyboard (MacOS layout) May 13, 2020 at 18:35
  • 1
    Perhaps a wild coincidence, but I also had this problem and I am also using a Keychron keyboard, but with the Windows layout. Great.
    – 2-bits
    Oct 4, 2020 at 22:28
  • Keychron keyboard as well. Just so anyone seeing this answer might manage their expectations.
    – Qutory
    Sep 19 at 7:29
0

Thank you @Kelly for your solution! It helped me to localize the problem on my own system (Ubuntu 19.04, Dell XPS 15 7590 FN11..FN12 not working).

  1. Backup GRUB config file

    sudo cp /etc/default/grub /etc/default/grub.backup
    
  2. Edit GRUB config file

    • type sudo gedit /etc/default/grub
    • Find this line: GRUB_CMDLINE_LINUX="quiet splash" (it may contain different options based on your specific configuration)
    • Add acpi_osi=Linux immediately following quiet splash to give: GRUB_CMDLINE_LINUX_DEFAULT="quiet splash acpi_osi=Linux"
    • The next line may look differently depending on your configuration, but it SHOULD NOT contain acpi_backlight=vendor. remove this option if it's present. the resulting line should be for example: GRUB_CMDLINE_LINUX="" or GRUB_CMDLINE_LINUX="nouveau.blacklist=1 acpi_osi=! acpi_osi=Linux mem_sleep_default=deep"
    • SAVE the file
    • sudo update-grub
  3. 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  "Intel Graphics"
         Driver      "intel"
         Option      "Backlight"      "intel_backlight"
         BusID       "PCI:0:2:0"
      EndSection
      
    • SAVE the file

  4. Reboot computer

0

I know that the questioner got the answer, but since I was involved in this issue and I guess others may have the same problem as me, so I will raise this.

I have another keyboard connected to my laptop and these fn keys did not work.

First, test your keyboards physically before executing any commands. If you have a laptop, check the fn keys on its built-in keyboard.

It might sound strange but connecting it to a USB hub was causing problems for me. Connect the keyboard directly to the laptop or change its port. Your problem may be solved.

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