歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> 在Fedora 14下保護thinkpad筆記本電池

在Fedora 14下保護thinkpad筆記本電池

日期:2017/2/28 16:22:46   编辑:Linux教程
Linux的好處不用講,缺點也一大堆,實在是我等懶人不太好使用的。比如我的工作筆記本T61,堅持3年用下來,因為RHEL5.x操作系統沒有集成電池充放保護模塊,電池滿的時候交流電也還在充,弄壞了2塊電池,雖然是資本家出錢不心疼,總歸不爽。朋友推薦Ubuntu下面有個tp_smapi模塊什麼的,可以像windows一樣保護電池,google一把,發現Fedora這方面居然落伍了,沒有將upstream集成進來,可惜可惜,只有麻煩點DIY了。

根據高手的指導,搞這個東東需要先使用akmods,裝好akmod-tp_smapi之後,再進行modprobe裝載smapi電池管理模塊,最後設置充電起始和終止的阈值,細節如下:

點擊這裡下載為Fedora編譯好的akmod模塊,版本低點沒關系。
解壓後使用rpm -ivh akmod-tp_smapi-0.40-1.fc11.i686.rpm安裝之,注意,這個rpm需要kernel devel的支持
調用service akmods restart,之後rpm -qa|grep smapi一下,可以看到為F14有關kernel弄好的rpm已經生成安裝了
這時候可以使用modprobe -l| grep smapi看看模塊是不是ready了,隨後modprobe tp_smapi裝載模塊試試。
於是乎,可以使用下面的指令設置充電阈值,BAT表示筆記本默認的電池(BAT1好像是BIOS電池,不用管它)
  1. # echo 20 > /sys/devices/platform/smapi/BAT0/start_charge_thresh
  2. # echo 80 > /sys/devices/platform/smapi/BAT0/stop_charge_thresh
# echo 20 > /sys/devices/platform/smapi/BAT0/start_charge_thresh
# echo 80 > /sys/devices/platform/smapi/BAT0/stop_charge_thresh


做到這裡,基本上4和5是在每次需要啟用這個功能之前必須做的,因此,不如搞個service,缺省啟動,用起來方便(/etc/init.d/tp_smapi):
  1. #!/bin/sh
  2. #
  3. # chkconfig: 12345 21 80
  4. . /etc/init.d/functions
  5. SMAPILOCK=/var/lock/tp_smapi_lock
  6. start()
  7. {
  8. echo -n $"Starting tp_smapi service: "
  9. /sbin/modprobe -q tp_smapi
  10. echo 20 > /sys/devices/platform/smapi/BAT0/start_charge_thresh
  11. echo 80 > /sys/devices/platform/smapi/BAT0/stop_charge_thresh
  12. echo
  13. touch $SMAPILOCK
  14. echo
  15. }
  16. stop()
  17. {
  18. /sbin/modprobe -r tp_smapi
  19. rm -f $SMAPILOCK
  20. }
  21. status()
  22. {
  23. status=0
  24. if [ -f $SMAPILOCK ]; then
  25. echo "RUNNING"
  26. else
  27. echo "UNUSED"
  28. status=1
  29. fi
  30. return $status
  31. }
  32. case "$1" in
  33. start)
  34. start
  35. ;;
  36. stop)
  37. stop
  38. ;;
  39. restart)
  40. stop
  41. start
  42. ;;
  43. status)
  44. status
  45. exit $?
  46. ;;
  47. *)
  48. echo "Usage: $0 {start|stop|status|restart}"
  49. exit 1
  50. ;;
  51. esac
#!/bin/sh
#
# chkconfig: 12345 21 80
. /etc/init.d/functions
SMAPILOCK=/var/lock/tp_smapi_lock
start()
{
echo -n $"Starting tp_smapi service: "
/sbin/modprobe -q tp_smapi
echo 20 > /sys/devices/platform/smapi/BAT0/start_charge_thresh
echo 80 > /sys/devices/platform/smapi/BAT0/stop_charge_thresh
echo
touch $SMAPILOCK
echo
}
stop()
{
/sbin/modprobe -r tp_smapi
rm -f $SMAPILOCK
}
status()
{
status=0
if [ -f $SMAPILOCK ]; then
echo "RUNNING"
else
echo "UNUSED"
status=1
fi
return $status
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
status)
status
exit $?
;;
*)
echo "Usage: $0 {start|stop|status|restart}"
exit 1
;;
esac
每一次F14升級內核後,有關的akmod都要重新弄,偷懶寫個腳本解決吧
  1. #!/bin/sh
  2. echo 'looking for old rpms ...'
  3. for rpm in `sudo rpm -qa| grep smapi`
  4. do
  5. echo undeploying $rpm ...
  6. sudo rpm -e $rpm
  7. done
  8. echo 'installing akmod ...'
  9. sudo rpm -ivh akmod-tp_smapi-0.40-1.fc11.i686.rpm
  10. sudo /usr/sbin/akmods --force
  11. sudo service akmods restart
  12. echo 'mod status:'
  13. sudo modprobe -l | grep smapi
  14. echo 'set battery thresholds ...'
  15. sudo service tp_smapi restart
  16. echo 'done.'
Copyright © Linux教程網 All Rights Reserved