23

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?

Kelly
  • 593

5 Answers5

25

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

damadam
  • 2,833
cheesus
  • 471
20
  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:

Kelly
  • 593
  • 1
    I would add a link to https://askubuntu.com/questions/28848/what-does-the-kernel-boot-parameter-set-acpi-osi-linux-do or http://redsymbol.net/linux-kernel-boot-parameters/ – lrkwz Nov 13 '17 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 09 '18 at 00: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 09 '19 at 15:31
  • This made my system stop loading :D I had to load in recovery mode and undo all things I've done) – Frankie Drake Mar 21 '20 at 11:21
  • Sorry, I did same but noting worked for me. I am using ubuntu 18.04. – Sun Feb 19 '21 at 03:22
  • No result in Xubuntu 20.04, Asus X541UJ :( – Vitaly Zdanevich Aug 01 '21 at 14:38
  • This solution has a negative effect on the performance of the graphics card and other things – Amir Jul 14 '22 at 18:52
4

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.

Qutory
  • 41
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.

Amir
  • 281