이러한 추가된 하드웨어나 기능을 위해 독자적인 규격인 SMAPI (System Management Application Program Interface)가 있습니다.
리눅스에서는 커널모듈 thinkpad_acpi, thinkpad_ec, tp_smapi, hdaps로 이러한 하드웨어에 접근할 수 있습니다.
ThinkPad에 리눅스를 설치하면, 일반적인 컴퓨터의 ACPI같이 thinkpad_acpi는 제대로 올려집니다.
hdaps와 tp_smapi는 사용자가 직접 설정을 해야하는 경우가 있습니다.
Debian 리눅스에서 tp_smapi 모듈이 올려질 때 thinkpad_ec가 같이 올려집니다
ThinkPad L410 모델을 사용하면서 배터리 전원관리는 완벽하지는 않지만 잘 되나,
하드 디스크 충격 보호는 에러로 사용하지 못하고, 팬 조절은 내장된 EC회로에서 하는 것이 좋아보여 그대로 사용중입니다.
새로운 ThinkPad 랩탑이 나올 때 SMAPI도 조금 바뀌거나 개선되므로 모델마다 차이가 있으며, 바이오스가 새로 개정될 때에도 변화가 있습니다. ThinkPad L410도 바이오스를 업데이트를 한 후에 설정이 원할하였습니다.
# dmidecode -t 11
SMBIOS 정보와 Embedded Controller가 있는지 알 수 있습니다.
HDAPS (Hard Drive Active Protection System)
랩탑에 내장된 가속센서(accelerometer)가 충격이 감지하여, 하드디스크의 헤드를 파킹하여 보호하게 됩니다.
Solid State Disk (SSD)는 물리적인 헤드가 없으므로 해당되지 않습니다.
리눅스 커널에 hdaps가 있으나, tp-smapi-dkms를 설치하면 커널보다 향상된 hdaps가 설치됩니다.
내장된 가속센서(accelerometer) -> hdaps -> sysfs interface -> hdapsd 과정을 거쳐서, hdapsd가 하드 디스크 헤드 파킹을 하게 됩니다.
그러나 L410에서 하드디스크 충격보호기능은 사용하지 못하였습니다.
부팅시에 아래의 에러가 보이며, 모듈 thinkpad_ec tp_smapi 조차도 올려지지 않았습니다.
thinkpad_ec: thinkpad_ec_read_row: failed requesting row: (0x11:0x00)->0xfffffff0
hdaps init failed at: hdaps_get_ec_mode failed
직접 임의로 /etc/modprobe.d/hdaps.conf를 만들어 install hdaps /bin/false으로 기록하여 hdaps를 사용하지 않게 한 후, 리부팅해도 같은 에러가 보이며 모듈 thinkpad_ec tp_smapi도 올려지지 않았습니다.
결국에는 하드웨어 리셋(배터리 및 전원 빼고, 전원버튼 30초 이상 눌러 노트북안에 남은 전기를 모두 방전하게 함) 한 후에,
/etc/modprobe.d/hdaps.conf가 있는 상태에서 새로 부팅해야 thinkpad_ec tp_smapi이나마 정상적으로 올려집니다.
참고로 HDAPS는 랩탑에 내장된 가속센서 뿐 아니라, 이에 맞게 하드 디스크 자체에도 알맞게 헤드를 파킹하는 기능이 있어야 합니다. 일반적인 헤드 파킹이 아닌 하드 디스크의 firmware에서 HDAPS에 맞게 지원이 필요하다고 합니다.
HDAPS (Hard Drive Active Protection System)
랩탑에 내장된 가속센서(accelerometer)가 충격이 감지하여, 하드디스크의 헤드를 파킹하여 보호하게 됩니다.
Solid State Disk (SSD)는 물리적인 헤드가 없으므로 해당되지 않습니다.
리눅스 커널에 hdaps가 있으나, tp-smapi-dkms를 설치하면 커널보다 향상된 hdaps가 설치됩니다.
내장된 가속센서(accelerometer) -> hdaps -> sysfs interface -> hdapsd 과정을 거쳐서, hdapsd가 하드 디스크 헤드 파킹을 하게 됩니다.
그러나 L410에서 하드디스크 충격보호기능은 사용하지 못하였습니다.
부팅시에 아래의 에러가 보이며, 모듈 thinkpad_ec tp_smapi 조차도 올려지지 않았습니다.
thinkpad_ec: thinkpad_ec_read_row: failed requesting row: (0x11:0x00)->0xfffffff0
hdaps init failed at: hdaps_get_ec_mode failed
직접 임의로 /etc/modprobe.d/hdaps.conf를 만들어 install hdaps /bin/false으로 기록하여 hdaps를 사용하지 않게 한 후, 리부팅해도 같은 에러가 보이며 모듈 thinkpad_ec tp_smapi도 올려지지 않았습니다.
결국에는 하드웨어 리셋(배터리 및 전원 빼고, 전원버튼 30초 이상 눌러 노트북안에 남은 전기를 모두 방전하게 함) 한 후에,
/etc/modprobe.d/hdaps.conf가 있는 상태에서 새로 부팅해야 thinkpad_ec tp_smapi이나마 정상적으로 올려집니다.
참고로 HDAPS는 랩탑에 내장된 가속센서 뿐 아니라, 이에 맞게 하드 디스크 자체에도 알맞게 헤드를 파킹하는 기능이 있어야 합니다. 일반적인 헤드 파킹이 아닌 하드 디스크의 firmware에서 HDAPS에 맞게 지원이 필요하다고 합니다.
tp_smapi
커널 모듈인 tp_smapi를 설치하면 랩탑의 배터리를 관리할 수 있습니다.
일반적으로 리듐이온 배터리는 저온 상태에서 사용해야 수명이 오래가고, 완전 충전이나 완전 방전시에 배터리 수명이 짧아진다고 합니다.
온도는 어쩔 수 없더라도, 배터리 용량의 40%에서 80%에서 충전과 방전을 하는 것이 배터리 수명을 늘린다고 합니다.
tp_smapi는 ThinkPad 랩탑에 내장된 하드웨어에서 얻은 정보를 /sys/devices/platform/smapi/에 보여주며,
반대로 /sys/devices/platform/smapi/에 사용자가 변경한 정보를 하드웨어에 전달합니다.
- 설치.
# aptitude install tp-smapi-dkms
# echo tp_smapi >> /etc/modules
이제 부팅시 tp_smapi 모듈이 올려지며, 의존 모듈인 thinkpad_ec도 같이 올려집니다.
# echo "install hdaps /bin/false" > /etc/modprobe.d/hdaps.conf
위의 HDAPS 문제로 사용하지 않게 하였습니다.
# echo "35" > /sys/devices/platform/smapi/BAT0/start_charge_thresh
이렇게 하면 배터리가 35%이상인 상태에서는 충전이 되지 않고, 배터리 전원이 아닌 AC 전원을 사용하게 됩니다.
확인은 /sys/devices/platform/smapi/BAT0/state를 보면 idle이 AC 전원을 사용중인 상태입니다.
이렇게 정한 값은 다시 부팅을 하여도 유지가 되나, 배터리를 뺐다 끼우거나 교체하면 새로 설정해주어야 합니다.
자주 교체하는 경우에는 script를 만들어 update-rc.d하거나 sysfsutils을 설치하여 /etc/sysfs.conf에 설정하여 부팅시마다 설정이 되도록 하는 것이 필요할 수 있습니다.
start_charge_thresh를 설정하면 stop_charge_thresh 값이 바뀌고,
반대로 stop_charge_thresh를 설정하면 start_charge_thresh가 바뀝니다.
배터리 충전 횟수를 줄이기 위해 start_charge_thresh만 사용중입니다.
thinkfan
추가로 fan control을 직접 조절할 수 있는데, EC회로에서 자동으로 하는 것과 특별한 차이가 없어서 설정을 안하고 사용중입니다.
/sys/module/thinkpad_acpi/parameters/fan_control 값이 N 으로 EC회로에서 자동으로 조절하여 사용중입니다.
fancontrol 하려면 아래와 같이 설치한 후,
# apt-get install thinkfan
/etc/default/thinkfan.conf 에서 START=yes
/etc/modprobe.d/thinkfan_acpi.conf 에서 options thinkpad_acpi fan_control=1
CPU와 하드디스크 온도에 따라 팬 조절을 추가로 설정하면 됩니다.
댓글 없음:
댓글 쓰기