Olá amigos, recentemente (alguns meses atrás) eu adquiri um notebook Acer 5050-3284, um notebook muito legalzinho, com processador AMD Turion 64, 120 GB de HD e 1GB de ram, entre outras configs.
Então lá vou eu instalar o linux nele, e como bom Slacker que tento ser, instalei o Slackware 12. Eu já havia pesquisado um bocado na internet antes de comprar o notebook, procurei a respeito de notebooks que vinham com Linux pré-instalado, eu pensava assim: “se vem com linux pré-instalado, ele deve ser compatível!”. E foi assim que eu decidi comprar um Acer, e também por causa do preço né. rsrsr…
Mas como no mundo dos técnicos nada é tão simples assim, descobri que de compatível ele não tinha muita coisa não, então foi uma surra atrás da outra para conseguir configurar o hardware dele, e uma das coisas que mais me irritava, era o fato do ACPI não funcionar, tudo isso porque a BIOS utilizada no notebook (Phoenix Bios) foi compilada utilizando um compilador Microsoft - só para constar, quando eu vi isso no site oficial deles, quase troquei meu notebook de raiva!
Mas enfim, eu não desisti, então iniciei uma caçada a conteúdos na net, todas dizendo que eu deveria desassemblar, corrigir e recompilar minha DSDT, e eu fui fazendo tudo, mas nada resolvia, talvez eu tivesse “corrigindo” a DSDT de forma errada. Até que um dia encontrei um kra, chamado Wagner de Queiroz, e já aproveito aqui para deixar meu MUITO OBRIGADO, graças a você sou um homem mais feliz.. rsrsr! Esse kra tem um notebook igual ao mencionado nesse artigo, e ele conseguiu configurar a DSDT, mas usando um procedimento diferente (incluir a DSDT no initrd).
E com base no link que ele me passou, consegui a DSDT já corrigida, e pude executar os passos a que descreverei, no meu caso eu preferi recompilar o kernel com a DSDT já imbutida, vamos lá:
Baixando a DSDT corrigida
Esse passo é simples, execute o comando abaixo para baixar a DSDT, já corrigida para o Acer 5050:
$ wget -O dsdt.asl http://blakecmartin.googlepages.com/acer-aspire-5050.asl
Baixando e instalando o iasl
Através do link http://www.lesswatts.org/downloads/, você poderá baixar o ACPICA (Advanced Configuration & Power Interface Component Architecture), entre esses programinhas você terá o iasl, que precisamos para compilar a DSDT que acabamos de baixar. Depois de baixado, descompacte em algum lugar, no meu caso vamos supor que eu descompactei eles no dir /tmp/acpica (para facilitar o entendimento).
Vamos agora criar um ALIAS par facilitar as coisas, supondo que nosso iasl está no diretório /tmp/acpica/compiler/iasl, o aliás ficará assim:
$ alias iasl="/tmp/acpica/compiler/iasl"
Compilando a DSDT baixada
Basta rodar o seguinte comando (troque o path da DSDT.asl conforme ela está no seu)
$ iasl -tc dsdt.asl
Você deverá ver uma saida como a abaixo:
Intel ACPI Component Architecture
ASL Optimizing Compiler version 20061109 [Oct 23 2007]
Copyright (C) 2000 - 2006 Intel Corporation
Supports ACPI Specification Revision 3.0a
dsdt.asl 131: Method (_WAK, 1, NotSerialized)
Warning 1079 - ^ Reserved method must return a value (_WAK)
dsdt.asl 5280: Method (Z00I, 2, NotSerialized)
Warning 1086 - ^ Not all control paths return a value (Z00I)
dsdt.asl 5345: Method (Z00O, 2, NotSerialized)
Warning 1086 - ^ Not all control paths return a value (Z00O)
dsdt.asl 5818: Method (WMBD, 3, NotSerialized)
Warning 1086 - ^ Not all control paths return a value (WMBD)
ASL Input: dsdt.asl - 6278 lines, 228063 bytes, 2606 keywords
AML Output: dsdt.aml - 25216 bytes 745 named objects 1861 executable opcodes
Compilation complete. 0 Errors, 4 Warnings, 0 Remarks, 978 Optimizations
Não se preocupe com os Warnings, eles não atrapalharam em nada.
Terminada a compilação, será gerado um arquivo chamado dsdt.hex, mova-o para o path: /usr/src
$ mv dsdt.hex /usr/src/
Atualizando o Kernel
Compile um kernel mais novo, eu recomento o 2.6.22.15, que foi o que eu compilei aqui e está funcional. Siga todo o procedimento para compilar o kernel, mas NÃO COMPILE ainda, precisamos alterar algumas coisinhas no .config:
Altere o valor da string CONFIG_STANDALONE de y para n, ficando assim:
CONFIG_STANDALONE=n
E adicione as seguintes entradas (adicione-as junto as demais strings de configuração do ACPI):
CONFIG_ACPI_CUSTOM_DSDT=y
CONFIG_ACPI_CUSTOM_DSDT_FILE="/usr/src/dsdt.hex"
Pronto, agora pode compilar o kernel, e prossiga com o restante da instalação do kernel como de constume. Se tudo der certo, eu sinceramente espero que sim, ao reiniciar o seu linux, verifique se os módulos necessários estáo carregados, são eles:
ac
battery
button
fan
thermal
Será que funcionou?
Você pode checar isso através do comando lsmod, caso esteja faltando algum deles, utilize o comando modprobe para carregá-los, ou use o script abaixo para isso:
LIST="ac battery button fan thermal"
for MOD in $LIST; do
modprobe $MOD
done
Agora basta dar um cat nos arquivos:
cat /proc/acpi/battery/BAT1/state
cat /proc/acpi/battery/BAT1/info
Se você estiver vendo algo como abaixo, significa de deu certo:
present: yes
capacity state: ok
charging state: charged
present rate: 0 mA
remaining capacity: 3613 mAh
present voltage: 12452 mV
É isso aí pessoal, caso tenham alguma dúvida, seguem os links muito úteis, se se preferirem, podem postar comentários no meu blog, t+
Links:
Compilador iasl: http://www.lesswatts.org/downloads/
LessWatts: http://www.lesswatts.org/projects/acpi/faq.php
Download da DSDT: http://blakecmartin.googlepages.com/acer-aspire-5050.asl
Procedimento alternativo para Ubuntu: http://ubuntuforums.org/archive/index.php/t-609925.html