私の新しい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
アップデート:(ie)の他の関連部分は次のとおりです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で動作します。しかし、最後のステップで成功するにはmodprobeinstall
を追加する必要がありました--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)。