'Não há bateria presente' em um Toshiba Satellite L655

2

Eu uso o laptop Toshiba L655, recentemente instalei o Ubuntu 10.10. No gnome-power-manager não há um toque para 'On Battery'. Quando eu executo o comando: dmesg | grep batt ele retorna:

[ 0.752856] ACPI: Battery Slot [BAT1] (battery absent)

Por favor, alguém ajude a resolver isso!

thuci@ubuntu:~$ cat /sys/firmware/acpi/tables/DSDT > DSDT.dat
cat: /sys/firmware/acpi/tables/DSDT: Permission denied
    
por thuci 26.06.2011 / 18:42

1 resposta

1

Existe uma correção sugerida, conforme descrito por este blogueiro aqui .

Eu reproduzi o artigo aqui para completar a resposta à pergunta.

NOTA IMPORTANTE: Esta correção sugerida está muito envolvida e envolve a recompilação do seu próprio kernel. Então esteja preparado para algumas horas de trabalho. Eu recomendo strongmente que você faça um backup do seu sistema primeiro - por exemplo, use clonezilla.

Também recomendo que você leia os comentários do blog primeiro para ver se algum dos problemas relatados pode se referir a você. Já que você está usando 10.10 - há um comentário sobre a criação do kernel 2.6.35 que pode se aplicar a você.

"A causa do problema é que a Toshiba incluiu dois conjuntos de dados de inicialização que informam ao SO qual hardware existe na máquina. O Windows lê o correto enquanto o Linux não. Precisamos construir nosso próprio kernel para fazer isso Nós precisaremos extrair a DSDT (Tabela de Descrição do Sistema Diferenciado) da máquina, a ASL modificada, e um novo DSLT da AML pode ser compilado.As seções abaixo mostram a maneira de dizer ao Linux para usar este DSDT modificado em vez da versão que veio com o BIOS.

Obtenha o DSDL original da máquina:

sudo su
cat /sys/firmware/acpi/tables/DSDT > DSDT.dat

Desmonte-o

iasl -d DSDT.dat

Faça as alterações:

vi DSDT.dsl

pesquisa por linha: OperationRegion (EMEM, SystemMemory, 0xFF808001, 0xFF) e substituí-lo por: OperationRegion (EMEM, EmbeddedControl, 0 × 00, 0xFF) salve o arquivo.

Construa:

iasl -tc DSDT.dsl

Isto irá criar um arquivo DSDT.hex (Este arquivo é usado para recompilação do kernel)

Recebi os dois erros abaixo durante esta compilação

N: B: - Você pode realmente ignorar esses erros, isso funciona mesmo com esses erros não corrigidos. Mas, se estiver interessado, você pode resolver isso. Else diretamente para a seção "Recompilação do Kernel".

DSDT.dsl  2656:                     0x00000000,         // Length
Error    4122 -                              ^ Invalid combination of Length and Min/Max fixed flags

DSDT.dsl  2663:                     0x00000000,         // Length
Error    4122 -                              ^ Invalid combination of Length and Min/Max fixed flags

Correção: (Se você não recebeu nenhum erro, pule esta parte)

abra o arquivo DSDT.dsl e vá para a linha onde o iasl indicou o erro. No meu caso eu vou para as linhas 2656 e 2663.

iasl está reclamando da linha “Length” “0 × 00000000 ″. Isto está errado. Olhe para o "Range Minimum" e "Range Maximum". Abra o seu Kcalc ou o que as pessoas do Gnome usem e mude para o modo Numeral System. Verifique se HEX está selecionado e agora subtraímos o intervalo mínimo do intervalo máximo e então adicionamos 1. Como o intervalo mínimo é 0 (E você não pode subtrair 0) eu vou inserir FEAFFFFF e então adicionar 1 que me dá FEB00000 ( Não fique confuso, estou simplesmente omitindo "0x", a calculadora não precisa disso. Eu mudo 0 × 00000000 para 0xFEB00000 por Comprimento. Então agora parece com isso:

0×00000000,         // Granularity
0×00000000,         // Range Minimum
0xFEAFFFFF,         // Range Maximum
0×00000000,         // Translation Offset
0xFEB00000,         // Length

A linha 2663 foi alterada para

0×00000000,    // Granularity
0xFED40000,         // Range Minimum
0xFED44FFF,         // Range Maximum
0×00000000,         // Translation Offset
0×00005000,         // Length

compile novamente.

Recompilação de Kernel:

Instalar os pacotes necessários:

apt-get install fakeroot kernel-wedge build-essential makedumpfile kernel-package libncurses5 libncurses5-dev
apt-get build-dep --no-install-recommends linux-image-$(uname -r)
mkdir /root/source

cd /root/source

apt-get source linux-image-$(uname -r)

NB: Meu uname -r era 2.6.38.2-generic

cd linux-2.6.38

(substitua isso pela sua versão do kernel)

copie o arquivo de configuração do kernel do seu kernel atual:

cp -vi /boot/config-'uname -r' .config

agora copie o arquivo DSDT.hex para a pasta include dentro da fonte do kernel

cp DSDT.hex /root/source/linux-2.6.38/include

abra o arquivo .config que acabamos de copiar

vi /root/source/linux-2.6.38/.config

Faça as alterações abaixo

CONFIG_STANDALONE=n
CONFIG_ACPI_CUSTOM_DSDT=y
CONFIG_ACPI_CUSTOM_DSDT_FILE="DSDT.hex"

salve e saia.

Meu pwd: /root/source/linux-2.6.38

comece a compilar o Kernel:

make menuconfig

carregue o arquivo .config, salve o arquivo de menu e saia.

Estamos prestes a iniciar o processo de compilação. Um pequeno truque que você pode fazer é definir a variável CONCURRENCY_LEVEL para acelerar a compilação do kernel. O número deve ser o número de processadores que você tem mais um. Então, no meu caso, eu tenho um processador dual core, então adicionarei um que seria três.

export CONCURRENCY_LEVEL=3

Começar a criar:

Aqui eu nomeei meu kernel personalizado como tuxsage, substitua-o pelo que você deseja.

make-kpkg clean
fakeroot make-kpkg --initrd --append-to-version=-tuxsage kernel-image kernel-headers

(Isso levará algum tempo)

Uma vez que isto esteja completo, você encontrará o kernel construído em um diretório a partir do seu diretório atual

cd /root/source
dpkg -i linux-image-2.6.38.(This part will be whatever name you gave it).deb
dpkg -i linux-headers-2.6.38.(This part will be whatever name you gave it).deb

Faça o initramfs:

update-initramfs -c -k 2.6.38+tuxsage (replace tuxsage with correct name)

Atualizar o Grub:

update-grub

Reinicie para o novo Kernel "

    
por fossfreedom 26.06.2011 / 19:03