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