![Thinkpad X120e에서 tp_smapi를 로드하는 방법](https://linux55.com/image/1280/Thinkpad%20X120e%EC%97%90%EC%84%9C%20tp_smapi%EB%A5%BC%20%EB%A1%9C%EB%93%9C%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95.png)
내 새 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
을 보고하게 되어 기쁩니다 . . 이 링크를 사용하여 확인했습니다.FORCEENABLE
yes
hdapsd가 제대로 작동하는지 확인하세요(Thinkpad Wiki).