Como carregar o tp_smapi no Thinkpad X120e

5

Meu novíssimo Thinkpad X120e está funcionando bem com o Ubuntu Natty. Agora eu quero que o módulo tp_smapi funcione para que eu possa controlar o comportamento da carga da bateria. Infelizmente eu recebo "nenhum controlador integrado Thinkpad" (abaixo).

A página thinkwiki tp_smapi diz que neste caso "você deve atualizar seu BIOS . Algum BIOS antigo (como 1.x no X31) não manipule o controlador embutido ". Mas no meu caso, dmidecode sugere que eu já estou usando o quase mais novo BIOS da IBM .

# apt-get install tp-smapi-dkms
...(works)...
# modprobe -v tp_smapi
WARNING: Error inserting thinkpad_ec (/lib/modules/2.6.38-7-generic/updates/dkms/thinkpad_ec.ko): No such device
FATAL: Error inserting tp_smapi (/lib/modules/2.6.38-7-generic/updates/dkms/tp_smapi.ko): No such device
# tail -1 /var/log/syslog
Apr 19 23:45:05 xilotl kernel: [ 5552.149408] thinkpad_ec: no ThinkPad embedded controller!
# dmidecode -s bios-version
8FET26WW (1.10 )

Alguma outra ideia de como fazer isso funcionar?

UPDATE: aqui estão outras partes relevantes de dmidecode (ou seja, dmidecode -t0 -t1 -t11 ):

Handle 0x0000, DMI type 0, 24 bytes
BIOS Information
    Vendor: LENOVO
    Version: 8FET26WW (1.10 )
    Release Date: 03/09/2011
    ...

Handle 0x0001, DMI type 1, 27 bytes
System Information
    Manufacturer: LENOVO
    Product Name: 0596CTO
    Version: ThinkPad X120e
    ...

Handle 0x0027, DMI type 11, 5 bytes
OEM Strings
    String 1: OEM default string
    
por krubo 20.04.2011 / 06:13

3 respostas

7

Consegui fazer isso funcionar editando o código-fonte de thinkpad_ec.c .

O código espera que, quando você executar dmidecode -t 11 , sua saída deve mencionar "IBM ThinkPad Embedded Controller". No entanto, o novo Thinkpad X120e tem um bom controlador incorporado que não é mencionado em dmidecode -t 11 . Como resultado, o código falhou com o erro "thinkpad_ec: no ThinkPad embedded controller!".

Para contornar essa verificação, adicionei o ThinkPad X120e à lista atual de modelos ThinkPad na lista de permissões em thinkpad_ec.c e, em seguida, recompus o módulo. Ele foi carregado com sucesso e eu consegui definir o limite de carga parada da minha bateria em / sys / devices / platform / smapi / BAT0 como anunciado.

Se você é um usuário do Thinkpad X120e e deseja usar o módulo tp_smapi agora , aqui está como passei da falha de carregamento do módulo:

$ sudo su
# apt-get install tp-smapi-dkms
...(works)...
# modprobe -v tp_smapi
WARNING: Error inserting thinkpad_ec (/lib/modules/2.6.38-7-generic/updates/dkms/thinkpad_ec.ko): No such device
FATAL: Error inserting tp_smapi (/lib/modules/2.6.38-7-generic/updates/dkms/tp_smapi.ko): No such device
# tail -1 /var/log/syslog
Apr 19 23:45:05 xilotl kernel: [ 5552.149408] thinkpad_ec: no ThinkPad embedded controller!

edite o arquivo crucial usando vi /usr/src/tp-smapi-0.40/thinkpad_ec.c para adicionar a linha marcada com +:

diff --git a/thinkpad_ec.c b/thinkpad_ec.c
index a924d18..90d117e 100644
--- a/thinkpad_ec.c
+++ b/thinkpad_ec.c
@@ -460,6 +460,7 @@ static int __init check_dmi_for_ec(void)
                TP_DMI_MATCH("IBM", "ThinkPad A30"),
                TP_DMI_MATCH("IBM", "ThinkPad T23"),
                TP_DMI_MATCH("IBM", "ThinkPad X24"),
+               TP_DMI_MATCH("LENOVO", "ThinkPad X120e"),
                { .ident = NULL }
        };
        return dmi_find_substring(DMI_DEV_TYPE_OEM_STRING,

reconstrua o módulo:

# dkms remove -m tp-smapi -v 0.40 --all
# dkms add -m tp-smapi -v 0.40
# dkms build -m tp-smapi -v 0.40
# dkms install -m tp-smapi -v 0.40
# modprobe tp-smapi

e, finalmente, tente usá-lo:

# cd /sys/devices/platform/smapi/BAT0
# echo 60 > stop_charge_thresh

Como hwong557 menciona, adicione tp_smapi a /etc/modules para que ele seja carregado automaticamente na inicialização.

Se você é o mantenedor do módulo tp_smapi ou outra pessoa experiente que consiga corrigir isso "certo": Essa é a correção "certa"? O Thinkpad X120e deve ser permanentemente adicionado a essa lista de permissões, ou existe outra maneira de verificar a existência do controlador incorporado? Espero que essa alteração ou alguma outra correção para o problema seja adicionada à origem do envio.

    
por 03.05.2011 / 03:30
2

Uma correção no Arch Linux

Faça o download dos módulos tp_smapi do AUR.

Compile e instale: makepkg -i

Tentativa de carregar o módulo:

$ sudo  modprobe -v tp_smapi   
insmod /lib/modules/2.6.38-ARCH/extra/thinkpad_ec.ko.gz 
WARNING: Error inserting thinkpad_ec (/lib/modules/2.6.38-ARCH/extra/thinkpad_ec.ko.gz): No such device
FATAL: Error inserting tp_smapi (/lib/modules/2.6.38-ARCH/extra/tp_smapi.ko.gz): No such device

Verifique o registro sys:

$ dmesg | tail -1           
[ 1009.371778] thinkpad_ec: no ThinkPad embedded controller!

Edite src/tp_smapi-0.40/thinkpad_ec.c como a resposta do krubo diz, adicionando um patch ao pacote:

--- thinkpad_ec.c.orig  2011-05-15 13:35:28.556634244 -0700
+++ thinkpad_ec.c       2011-05-15 13:35:40.466634616 -0700
@@ -460,6 +460,7 @@
                TP_DMI_MATCH("IBM", "ThinkPad A30"),
                TP_DMI_MATCH("IBM", "ThinkPad T23"),
                TP_DMI_MATCH("IBM", "ThinkPad X24"),
+               TP_DMI_MATCH("LENOVO", "ThinkPad X120e"),
                { .ident = NULL }
        };
        return dmi_find_substring(DMI_DEV_TYPE_OEM_STRING,

Edite o PKGBUILD para incluir o novo patch:

patch -Np1 < "$srcdir/thinkpad-x120e.patch"     

Remova qualquer pacote criado anteriormente e reconstrua e instale o pacote ( makepkg -i ) com este patch

Carregue o módulo e você deve estar no negócio:

$ sudo modprobe  tp_smapi
$ dmesg | tail -1
[ 1735.966431] tp_smapi successfully loaded (smapi_port=0xb0).
$ ls /sys/devices/platform/smapi 
ac_connected  BAT0  BAT1  driver  modalias  power 
smapi_request  subsystem  uevent
    
por 15.05.2011 / 22:45
2

Eu tentei a solução do krubo para o meu Thinkpad T420. No entanto, na última etapa com install , tive que adicionar um --force para tornar o modprobe bem-sucedido; caso contrário, ele me deu o mesmo erro inicialmente.

No entanto, quando tento modificar minhas configurações de bateria, o comando echo para /sys/devices/platform/smapi/BAT0/stop_charge_thresh é bem-sucedido, mas ao lê-lo, cat ainda fornece 100.

Além disso, após a reinicialização, o módulo não é mais carregado e eu preciso modificar manualmente a modprobe novamente. Isso foi corrigido adicionando tp_smapi a /etc/modules .

No entanto, estou feliz em informar que o hdaps está funcionando; Eu tive que mudar a última configuração em /etc/defaults/hdaps , FORCEENABLE to yes . Eu verifiquei usando este link: Verificando o hdapsd está funcionando (Thinkpad Wiki) .

    
por 19.05.2011 / 11:31