Не удалось перезаписать значение под /sys/class/power_supply/CMB0/charge_control_end_threshold – Ubuntu 22.04 (6.8.0-45-generic)

Вопрос или проблема

Некоторое время назад я создал простой скрипт, который устанавливает лимит заряда батареи на моем ноутбуке в соответствии с документацией.

Я даже изменил crontab, чтобы он оставался между перезагрузками.

Однако, как мне кажется, спустя некоторое короткое время (возможно, день или два) я заметил, что он перестал работать. Когда я пытаюсь изменить /sys/class/power_supply/CMB0/charge_control_end_threshold, он просто возвращается к 0 (не имеет значения, запускаю ли я sudoedit или любой другой метод).

Ранее я замечал такое поведение с различными функциями, описанными на странице документации, но я просто предполагал, что они не поддерживаются в определенном смысле.

Буду признателен за любые комментарии или мнения.

$ echo 80 | sudo tee /sys/class/power_supply/CMB0/charge_control_end_threshold 
[sudo] пароль для kornel: 
80
kornel@kornel-LG:~$ cat /sys/class/power_supply/CMB0/charge_control_end_threshold 
0

(в качестве примечания, у меня ноутбук LG Gram)

Это известная ошибка ядра. Вам нужна как минимум версия ядра 6.10.7. Смотрите: https://github.com/linrunner/TLP/issues/747

Ответ или решение

Проблема, с которой вы столкнулись, связана с известной ошибкой в ядре Linux, касающейся ограничения заряда батареи на некоторых моделях, таких как ваш LG Gram. Как вы уже заметили, изменения в файле /sys/class/power_supply/CMB0/charge_control_end_threshold не сохраняются и возвращаются к значению 0, несмотря на ваши попытки изменить его с помощью команды echo.

Эта проблема была зафиксирована в версии ядра ниже 6.10.7. Поэтому самым эффективным решением будет обновление вашего ядра до более новой версии, где эта ошибка исправлена. Вот шаги, которые вы можете предпринять для обновления ядра:

  1. Проверьте текущую версию ядра:
    Вы можете сделать это, выполнив команду:

    uname -r
  2. Установите новое ядро:
    Вы можете использовать Ubuntu Mainline Kernel Installer или другую утилиту для установки последней версии ядра. Если вы предпочитаете терминал, вы можете установить новое ядро следующим образом:

    sudo apt update
    sudo apt install linux-generic-hwe-22.04
  3. Перезагрузите систему:
    После установки нового ядра перезагрузите компьютер:

    sudo reboot
  4. Проверьте версию ядра снова:
    После перезагрузки подтвердите, что версия ядра обновлена:

    uname -r
  5. Попробуйте снова установить лимит заряда:
    После обновления ядра попробуйте снова изменить значение в файле:

    echo 80 | sudo tee /sys/class/power_supply/CMB0/charge_control_end_threshold

После выполнения этих шагов вы должны быть в состоянии установить лимит заряда батареи на своем ноутбуке без каких-либо дальнейших проблем. Если вы столкнетесь с новыми ошибками или проблемами, рекомендуем следить за обновлениями от разработчиков ядра или рассмотреть возможность использования другой версии системы, если проблема не решится.

Оцените материал
Добавить комментарий

Капча загружается...