让你的Thinkpad在SUSE下工作得更好更完美(3)

害怕电池充放电太多
thinkpad在windows下支持的电池充放电上下限管理是一大特色, 据说有效地保护电池延长寿命呢...
根据thinkwiki的介绍



我需要的是tp_smapi,去下载tp_smapi的源代码包.有很多版本,我在2.6.16版本内核上最高只可以使用0.31把本, 在 2.6.27版本上可以用0.40版本.大家可以根据自己的内核版本多试试不同的版本,在解压后的目录下运行(root):

make load HDAPS=1
或者 make load HDAPS=1 FORCE_IO=1 (针对T400/T500等新机型)

首先在SUSE上会报错找不到aio_abi.h文件, 这个文件在/usr/src/linux/include/linux里,报错是因为在/usr/src/linux-obj里面没有
把它copy到linux-obj里面相应的include/linux里面,继续

不成功的话换一个版本, 成功的话接着

make install HDAPS=1

好了,已经安装好,但系统不会自动加载,要做到这点,在yast2 -> /etc/sysconfig editor -> system -> kernel -> modules_loaded_on_boot中加入hdaps tp_smapi.
保存,重启电脑后, 运行 dmesg > a, 打开a文件,搜索hdaps, tp_smapi,看到没有报错信息就ok了. 在2.6.16 kernel + 0.31 tp_smapi情况下,看到hdaps报错,说找不到thinkpad model.看来是机型和原来的设计不匹配, x61对 0.31来说太新了.于是我打开tp_smapi里面的hdaps.c文件,看到有段:

struct dmi_system_id hdaps_whitelist[] = {
HDAPS_DMI_MATCH_INVERT("IBM","ThinkPad R50p"),
HDAPS_DMI_MATCH_INVERT("IBM","ThinkPad T41p"),
HDAPS_DMI_MATCH_INVERT("IBM","ThinkPad T42p"),
HDAPS_DMI_MATCH_INVERT("LENOVO","ThinkPad T60"),
HDAPS_DMI_MATCH_INVERT("LENOVO","ThinkPad X60"),
{ .ident = NULL }
};

直接把X60改成X61,重新安装一次, okay了~~现在执行

echo 15 > /sys/devices/platform/smapi/BAT0/inhibit_charge_minutes
echo 20 > /sys/devices/platform/smapi/BAT0/start_charge_thresh
echo 100 > /sys/devices/platform/smapi/BAT0/stop_charge_thresh


好了,电池设置好了, start_charge_thresh是开始充电的阈值, stop_charge_thresh是停止充电的阈值,运行一次后设置就保存了,只要不拆下电池设置就不会丢失.

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/27948.html