控制 LG Gram 2019 版在 Linux 下的充电程度

前几年买了 LG Gram 2018 版, 因为据说有 Linux 内核开发的 Contributer 也买了并提供了相关的驱动, 用起来还是非常巴适的. 结果好景不长, 因为做工因素返厂了, 然后京东就给我换了一台新的 2019 版 LG 的做工是真的不行, 2019 后来其实又返厂过了, 顺便京东的售后真的好顶赞, 结果原来可以使用的电池充电控制功能废了.

一开始也并不是很在意就没管, 前段时间刷了下 Reddit , 发现已经有大佬自己修改并提供了相关的补丁, 就下来刷了下发现确实可以用了.

下面说下用法, 以 archlinux 为例:

  1. 安装 linux-header、gcc、make, 这些是编译这个驱动必要的依赖:

    1
    yay -S linux-headers gcc make
  2. 解压下载来的压缩包, 进行编译:

    1
    make -j 4
  3. 进行安装, 需要 root 权限:

    1
    sudo make install
  4. 手动挂载:

    1
    2
    sudo rmmod lg-laptop
    sudo insmod /usr/lib/modules/`uname -r`/extra/drivers/platform/x86/lg-laptop.ko
  5. 进行限制:

    1
    echo "80" > /sys/devices/platform/lg-laptop/battery_care_limit

这样就成功了, 唯一的问题是重启和更新内核版本后功能失效.

鉴于个人使用习惯, 关机还是蛮频繁的, 因此写了个自动挂载启动脚本:

1
2
3
4
5
6
7
8
9
[Unit]
Description=Set lg-laptop battery charge limit

[Service]
Type=oneshot
ExecStart=/usr/bin/bash -c 'rmmod lg-laptop && insmod /usr/lib/modules/`uname -r`/extra/drivers/platform/x86/lg-laptop.ko && /usr/bin/echo "80" > /sys/devices/platform/lg-laptop/battery_care_limit'

[Install]
WantedBy=multi-user.target

把以上内容放到 /etc/systemd/system/battery-limit.service 中, 并使用 systemctl enable battery-limit 激活开机启动功能就好.

ArchLinux 好像是支持安装特定软件时使用 PostInstall Hook, 哪天有空看看写个跟随系统内核自动编译的脚本好了.