Thinkpad X120e에서 tp_smapi를 로드하는 방법

Thinkpad X120e에서 tp_smapi를 로드하는 방법

내 새 Thinkpad X120e는 Ubuntu Natty에서 훌륭하게 실행됩니다. 이제 나는 얻고 싶다tp_smapi 모듈배터리 충전 동작을 제어할 수 있도록 작업합니다. 불행히도 "No Thinkpad Embedded Controller"(아래)라는 메시지가 나타납니다.

thinkwiki tp_smapi 페이지에서는 이 경우 "당신은BIOS 업그레이드. 일부 이전 BIOS(예: 1.xIBM의 BIOS.

# 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 )

이 작업을 수행하는 방법에 대한 다른 아이디어가 있습니까?

dmidecode업데이트: (i.e.) 의 다른 관련 부분은 다음과 같습니다 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

답변1

소스 코드를 편집하여 이 작업을 수행할 수 있었습니다 thinkpad_ec.c.

코드는 실행 시 dmidecode -t 11출력에 "IBM ThinkPad Embedded Controller"가 언급되어야 한다고 예상합니다. 그러나 새로운 Thinkpad X120e에는 아래에 언급되지 않은 멋진 내장 컨트롤러가 있습니다 dmidecode -t 11. 결과적으로 "thinkpad_ec: ThinkPad 임베디드 컨트롤러가 없습니다!"라는 오류와 함께 코드가 실패합니다.

이 확인을 피하기 위해 현재 화이트리스트에 있는 ThinkPad 모델 목록에 ThinkPad X120e를 추가한 thinkpad_ec.c다음 모듈을 재구축했습니다. 성공적으로 로드되었으며 광고된 대로 /sys/devices/platform/smapi/BAT0에서 배터리의 충전 중지 임계값을 설정할 수 있었습니다.


Thinkpad X120e 사용자이고 이제 tp_smapi 모듈을 사용하려는 경우, 모듈 로딩 실패를 극복한 방법은 다음과 같습니다.

$ 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!

키 파일을 편집하고 vi /usr/src/tp-smapi-0.40/thinkpad_ec.c+로 표시된 줄을 추가합니다.

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,

모듈 재구축:

# 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

마지막으로 이것을 사용해보십시오 :

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

hwong557이 언급한 대로 시작 시 자동으로 로드되도록 tp_smapi추가 하세요./etc/modules


tp_smapi모듈 관리자 인 경우아니면 이 수정 사항을 "올바른" 방법으로 얻을 수 있는 지식이 있는 사람이 있습니까? 이것이 "올바른" 수정 사항입니까? Thinkpad X120e를 이 화이트리스트에 영구적으로 추가해야 합니까, 아니면 내장 컨트롤러가 있는지 확인할 수 있는 다른 방법이 있습니까? 이 변경 사항이나 문제에 대한 기타 수정 사항이 업스트림 소스에 추가되기를 바랍니다.

답변2

결정된아키텍처Linux

다운로드tp_smapiAUR용 모듈.

빌드 및 설치:makepkg -i

모듈을 로드해 보십시오:

$ 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

시스템 로그를 확인하십시오.

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

krubo의 답변에 따라 편집되어 src/tp_smapi-0.40/thinkpad_ec.c패키지에 패치를 추가했습니다.

--- 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,

새 패치를 포함하도록 PKGBUILD를 편집합니다.

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

makepkg -i이전에 빌드된 패키지를 제거한 다음 이 패치( )로 다시 빌드하고 설치합니다.

모듈을 로드하면 작업 준비가 완료됩니다.

$ 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

답변3

나는 노력했다크루프의 솔루션내 Thinkpad T420에서 작동합니다. 그러나 마지막 단계에서 성공하려면 modprobe install를 추가해야 했습니다 --force. 그렇지 않으면 원래와 동일한 오류가 발생했습니다.

그런데 배터리 설정을 수정하려고 하면 명령이 echo성공 /sys/devices/platform/smapi/BAT0/stop_charge_thresh하지만 읽은 후에도 cat여전히 100이 표시됩니다.

또한 재부팅한 후에는 모듈이 더 이상 로드되지 않으며 수동으로 modprobe를 다시 수행해야 합니다. 에 추가하여 tp_smapi이 문제를 해결하세요 /etc/modules.

그러나 hdaps가 작동 하고 있음 /etc/defaults/hdaps을 보고하게 되어 기쁩니다 . . 이 링크를 사용하여 확인했습니다.FORCEENABLEyeshdapsd가 제대로 작동하는지 확인하세요(Thinkpad Wiki).

관련 정보