LV
Back to writing

// Linux · Linux Mint Debian Edition

Fixing Brightness Control on a Linux Laptop

I own the Samsung X420 ultrabook. A laptop made to be light, portable and with long battery life. And it really is. Overall it's a good laptop considering its low-power 1.3 GHz Core 2 Duo processor.

The default hotkeys on this laptop for brightness control are fn (function) + up arrow or down arrow. Right after installing Linux Mint 12 Debian Edition I tried to adjust the brightness and nothing. The problem is the same for all the distributions I tested: Ubuntu 11.10, Ubuntu 12.04 and Fedora 16. When pressing fn + up arrow the brightness icon appeared on screen but nothing happened, and when pressing fn + down arrow the brightness was set to the maximum and the icon showed it was a little below the maximum, which was strange.

Searching the net I found the solution to the problem, and it seems to be common among laptops with the Intel GS45 + ICH9MS chipset, so if your laptop has this chipset or if you're having the same problem, try the fix below:

The fix consists of adding a Linux Kernel configuration parameter at boot. To test it, press "e" on the Linux boot screen to edit the boot commands and insert acpi_osi= at the end of the "linux /boot/…" line. On my computer it looked like this (line 9):

setparams 'LinuxMint GNU/Linux, with Linux 3.3.0-6.dmz.1-liquorix-amd64

insmod gzio
insmod part_msdos
insmod ext2
set root='(/dev/sda, msdos1) '
search --no-floppy --fs-uuid --set=root 321e9577-ad48-4370-9276-06399e26b6da
echo 'Loading Linux 3.3.0-6.dmz.1-liquorix-amd64 ... '
linux /boot/vmlinuz-3.3.0-6.dmz.1-liquoriz-amd64 root=UUID=321e9577-ad48-4370-9276-06399e26b6da ro quiet acpi_osi=
echo 'Loading initial ramdisk ...'
initrd /boot/initrd.img-3.3.0-6.dmz.1-liquorix-amd64

According to what I read, the Linux kernel by default identifies itself as some version of Windows to the BIOS, and the problem is that some BIOSes have code branches to work around Windows Vista bugs, which ends up affecting Linux.

Another alternative is to use the parameter below if your BIOS supports Linux:

acpi_osi=”Linux”

Or use the following parameter to make Linux identify itself as Windows Vista and run compatibility commands with it:

**acpi_osi=”Windows 2006″
**

To use the parameter permanently

As mentioned above, to test the parameter you can press "e" in the Grub2 boot menu and insert the parameter, but that will only work until the next boot. To make the parameter permanent you need to edit a grub configuration file as follows:

$ sudo nano /etc/default/grub

The nano editor will open the file and its content will look something like this:

# If you change this file, run 'update-grub' afterwards to update
 # /boot/grub/grub.cfg.
 # For full documentation of the options in this file, see:
 #   info -f grub -n 'Simple configuration'

GRUB_DEFAULT=0
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet"
GRUB_CMDLINE_LINUX=""

# Uncomment to enable BadRAM filtering, modify to suit your needs
# This works with Linux (no patch required) and with any kernel that obtains
# the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...)
#GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"

# Uncomment to disable graphical terminal (grub-pc only)
#GRUB_TERMINAL=console

# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
#GRUB_GFXMODE=640x480

# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
#GRUB_DISABLE_LINUX_UUID=true

# Uncomment to disable generation of recovery mode menu entries
#GRUB_DISABLE_RECOVERY="true"

# Uncomment to get a beep at grub start
#GRUB_INIT_TUNE="480 440 1"

Add the parameter to the GRUB_CMDLINE_LINUX_DEFAULT line as shown below:

GRUB_CMDLINE_LINUX_DEFAULT="quiet acpi_osi="

If you need to use parameters that contain quotes ("), you need to escape the quotes as shown below:

GRUB_CMDLINE_LINUX_DEFAULT="quiet acpi_osi=\"Linux\""

Save the file and enter the following command to update the grub settings:

$ sudo update-grub

That’s all folks!

Comments 28

  • Vinicius

    Sensacional! Super simples! Funcionou perfeitamente aqui! O meu é um samsung SF410 e estou usando ubuntu 12.04.

    Obrigado!

  • Roger Trancozo

    Funcionou de primeira. Muito Obrigado.

  • greysonsilva

    Muito obrigado eu estou de ubuntu 13.04 e funcionou perfeitamente!

  • marxluz

    Muito obrigado fera, resolveu meu problema

  • +1 & share (#1) | Um Panda na Garagemlinked this post

    […] Corrigindo o controle de brilho no notebook com Linux […]

  • Marcos André

    Muito obrigado Leonardo resolveu também meu problema meu distro é Debian 7.4

  • Raphael

    Bem legal! Funciona mesmo! Estou iniciando no mundo Linux com o Ubuntu, pois acho que é a distribuição mais simples de se usar. Estou batendo cabeça ainda, mas encontrando tutoriais como esse, estou vendo que o nível da galera está bem alto! Valeu mesmo!

    • Que bom que funcionou!
      Quanto a distro eu sugiro você usar o Linux Mint que é baseado no Ubuntu mas tem uma interface gráfica diferente, mais parecida com o Windows e melhor ainda: BEM menos bugs.
      O primeiro passo você já deu, continua usando Linux que o conhecimento vai vindo gradativamente.
      Abraço e boa sorte!

  • Links (UPNG) | duarthiago's logbooklinked this post

    […] Corrigindo o controle de brilho no notebook com Linux […]

  • Funcionou certinho, muito obrigado!

  • Vinicus Ovile

    Boa noite, estou com este problema em um notebook 5060m, já tentei as formas que você passou mas não deu certo. Tem alguma sugestão? Obrigado

    • Uma breve pesquisa na net percebi que o seu note é da Positivo. Desculpa falar isso mas são os piores. O colégio é bom mas os computadores não. Mas nesse caso, pelo que percebi, seu notebook é bem mais novo que o meu. O problema deve ter a mesma raiz mas a solução deve ser um pouco diferente. Procure no google por “5060 positivo brilho linux” ou para ser mais preciso, tente saber o modelo do chipset, bios e placa mãe e procure em inglês como “brightness control”. Tente usar algum software como o everest para detectar seu chipset. Boa sorte!

    • Esqueci de perguntar: qual distribuição/versão do Linux você está tentando instalar?

  • Deyves

    Obrigado funcionou perfeitamente.

  • vinicius

    mint 17 not samsung rv 415 funcionou teclas fn e setas

  • Thiago

    Amigo, por favor, eu imploro, me ajude! Tou morto de dor de cabeça, olhos lacrimejando e não consigo resolver no meu. Eu sou leigo e não entendi bem sua matéria, onde devo colocar este “e”? e os códigos após? Agradeço se responder!!!

    • Desculpa, eu só li agora. Fiquei um tempo sem dar atenção ao meu site. Prometo ficar mais atento!

  • Thiago

    Olá! cara, você merece Marte de presente. Já faziam duas semanas que eu tentava resolver e nada! Já tinha visto essa sua matéria e não havia entendido como fazer os procedimentos, estava desesperado e decidido a desinstalar o Zorin OS 11 do meu notebook Positivo Master. Passei uma noite procurando entender sobre Grub, Grub2, Setup, Bios, Boot, root, vaaarias coisas pra poder descobrir como fazer, hahah
    Mas enfim, está tudo resolvido. Meus sinceros agradecimentos!

  • Wandaymo Gomes

    Muito obrigado por sua dica!!!

  • Thiago

    Ola! esse foi o unico metodo que funcionou aqui, muito obrigado!
    eu instalei 3 distros linux e funcionou perfeitamente, porem tenho tambem o android x86 instalado e com ele ja rodei a internet e não achei uma solução… nos arquivos dele tambem tem o grub (grub/menu.lst) e tem as seguintes informações:

    default=0
    timeout=6
    splashimage=/grub/android-x86.xpm.gz
    root (hd0,4)

    title Android-x86 4.4-r1
    kernel /android-4.4-r1/kernel quiet root=/dev/ram0 androidboot.hardware=android_x86 video=-16 SRC=/android-4.4-r1
    initrd /android-4.4-r1/initrd.img

    title Android-x86 4.4-r1 (Debug mode)
    kernel /android-4.4-r1/kernel root=/dev/ram0 androidboot.hardware=android_x86 video=-16 DEBUG=2 SRC=/android-4.4-r1
    initrd /android-4.4-r1/initrd.img

    title Android-x86 4.4-r1 (Debug nomodeset)
    kernel /android-4.4-r1/kernel nomodeset root=/dev/ram0 androidboot.hardware=android_x86 video=-16 DEBUG=2 SRC=/android-4.4-r1
    initrd /android-4.4-r1/initrd.img

    title Android-x86 4.4-r1 (Debug video=LVDS-1:d)
    kernel /android-4.4-r1/kernel video=LVDS-1:d root=/dev/ram0 androidboot.hardware=android_x86 video=-16 DEBUG=2 SRC=/android-4.4-r1
    initrd /android-4.4-r1/
    initrd.img

    tem alguma dica do que fazer nesse caso??

    • Obrigado por compartilhar as informações. Realmente não sei dizer pois no Android pode ser um pouco diferente esta questão.