Естественно, речь о работе с батареей в ноутбуках ThinkPad (тех самых, которые раньше были IBM, а сейчас Lenovo) в операционных системах на базе ядра Linux, в частности в Debian’е. Под Windows обычно идет куча всяких программ от производителя ноутбука, которые часто не очень-то и нужны. А вот в Linux’е в этом плане не скажу, что хуже, просто немного по-другому. И можно не только мониторить батарею, но и управлять ее контроллером.
Установка
Естественно, нужно для начала работы установить пакет. Он называется tp-smapi-dkms.
1 |
apt-get install tp-smapi-dkms |
После этого нужно подключить модуль ядра, если он не подключился автоматически.
1 |
modprobe tp_smapi |
И после этого можно приступать непосредственно к работе с контроллером батареи.
Что появляется в системе
После установки модуля ядра в системе появляется интерфейс для работы с батареями в виде директории /sys/devices/platform/smapi, в которой находятся различные поддиректории. Нас в первую очередь интересует наличие там директорий с названием BAT0 и BAT1 (Если вы используете дополнительную батарею). В каждой директории содержится некоторое количество псевдо-файлов, которые можно использовать для получения информации и взаимодействия с батареями.
Как взаимодействовать с контроллером батареи
Именно с контроллером батареи, а не с самой батареей. Сама батарея — это просто набор повербанков. Всю информацию обрабатывает контроллер, с которым мы работаем через SMAPI интерфейс.
Работать с псевдо-файлами очень просто. Мы либо выводим их содержимое, получая статус батареи, либо записываем в них что-то, изменяя настройки контроллера батареи таким образом. То есть, считываем настройку:
1 |
cat /sys/devices/platform/smapi/BAT0/<файл> |
И изменяем ее:
1 |
echo "значение" > /sys/devices/platform/smapi/BAT0/<файл> |
Что мы можем делать
Проверка наличия батареи
Самое первое, с чего начнем — это проверим, есть ли батарея
1 |
cat /sys/devices/platform/smapi/BAT0/installed |
Содержимое — 0 или 1 в зависимости от того, установлена батарея или нет.
Получение информации о батарее
Производитель:
1 |
cat /sys/devices/platform/smapi/BAT0/manufacturer |
Производитель на самом деле SANYO
Модель батареи:
1 |
cat /sys/devices/platform/smapi/BAT0/model |
В моем случае это 42T4791
Тип батареи:
1 |
cat /sys/devices/platform/smapi/BAT0/chemistry |
У меня это LION, литий-ионная батарея, для которой, например, очень вреден перегрев, он приводит к деградации батареи.
Следующая характеристика — серийный номер.
1 |
cat /sys/devices/platform/smapi/BAT0/serial |
Эта характеристика нужна, возможно, если вы будете обращаться с батареей в официальный сервис по гарантии. Больше вариантов использования серийного номера батареи сложно предложить. Разве что мониторить факт замены батареи.
Еще один идентификационный параметр — штрихкод
1 |
cat /sys/devices/platform/smapi/BAT0/barcoding |
Следующие две характеристики более интересны. Это дата производства батареи и дата ее первого использования.
1 2 |
cat /sys/devices/platform/smapi/BAT0/manufacture_date cat /sys/devices/platform/smapi/BAT0/first_use_date |
У меня это 2011-05-30 и 2011-10-17 соответственно. То есть, с момента производства батарея первый раз использовалась через 4,5 месяца. Кроме того, используется она уже без двух недель 4 года, и это объясняет деградацию емкости.
И, естественно, присутствуют параметры, указывающие на запланированные емкость и силу тока.
1 2 |
cat /sys/devices/platform/smapi/BAT0/design_capacity cat /sys/devices/platform/smapi/BAT0/design_voltage |
Эти характеристики помогут вам сориентироваться при замене батареи. У меня это 47520 и 10800 соответственно. То есть, 47520 mWh и 10,8 V.
Функциональные характеристики
Статус батареи
1 |
cat /sys/devices/platform/smapi/BAT0/state |
Возможны 3 состояния: idle (не заряжается), discharging (разряжается) и charging (заряжается)
Температура
1 |
cat /sys/devices/platform/smapi/BAT0/temperature |
Температура выражается в милли-Цельсиях, то есть в тысячных долях градусов по Цельсию. 32600 — это 32,6 градуса по Цельсию
Количество циклов разрядки-зарядки
1 |
cat /sys/devices/platform/smapi/BAT0/cycle_count |
Текущая сила тока
1 |
cat /sys/devices/platform/smapi/BAT0/voltage |
На сколько процентов заряжена батарея
1 |
cat /sys/devices/platform/smapi/BAT0/remaining_percent |
Текущая емкость (mWh)
1 |
cat /sys/devices/platform/smapi/BAT0/remaining_capacity |
Сколько времени работы осталось (минут)
1 |
cat /sys/devices/platform/smapi/BAT0/remaining_running_time |
Управление контроллером батареи
Для управления есть следующие возможности:
Отсрочить зарядку на указанное количество минут (не заряжать в течение указанного количества минут):
1 |
echo КОЛИЧЕСТВО > /sys/devices/platform/smapi/BAT0/inhibit_charge_minutes |
Для отмены отсрочки записывается значение 0
Форсированная разрядка, даже если ноутбук подключен к сети:
1 |
echo 1 > /sys/devices/platform/smapi/BAT0/force_discharge |
Для отмены форсированной разрядки, соответственно,
1 |
echo 0 > /sys/devices/platform/smapi/BAT0/force_discharge |
Установка минимального значения, при котором начинается зарядка
1 |
echo 40 > /sys/devices/platform/smapi/BAT0/start_charge_thresh |
Установка максимального значения, до которого будет заряжаться батарея
1 |
echo 80 > /sys/devices/platform/smapi/BAT0/stop_charge_thresh |
Но эти ограничения можно выставлять не на всех устройствах. Поэтому предварительно можно попробовать вывести командой cat соответствующее значение. Если возникает ошибка, значит это ограничение на вашем устройстве не поддерживается. У меня, например, уровень минимального значения не поддерживается, а вот максимальный уровень заряда поддерживается.
Считается, что для литий-ионных батарей неполная зарядка и неполная разрядка могут увеличить срок службы батареи.
Сохранение настроек
Для сохранения настроек между перезагрузками нужно установить пакет sysfsutils
1 |
apt-get install sysfsutils |
И после установки пакета можно записать необходимые параметры в файл /etc/sysfs.conf в следующем виде:
1 |
devices/platform/smapi/BAT0/stop_charge_thresh = 80 |
Вот, собственно, и всё. Плюс к этому рекомендую, если вы пользуетесь ThinkPad’ом, посмотреть пакеты thinkfan и tpb.