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アップデート:(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ますが、読み取った後もcat100が表示されます。

また、再起動後、モジュールはロードされなくなり、手動でmodprobeを再実行する必要があります。に追加してtp_smapiこの問題を解決してください/etc/modules

しかし、hdapsが動作していること/etc/defaults/hdapsを報告することができてうれしいです。 。このリンクを使用して確認しました。FORCEENABLEyeshdapsdが正しく機能していることを確認してください(Thinkpad Wiki)

関連情報