TLP
sudo add-apt-repository ppa:linrunner/tlp
sudo apt update
sudo apt install tlp tlp-rdw
проверка настройки батарей
sudo tlp-stat -b
/sys/class/power_supply/BAT0/charge_control_start_threshold = 62 [%]
/sys/class/power_supply/BAT0/charge_control_end_threshold = 87 [%]
/sys/class/power_supply/BAT1/charge_control_start_threshold = 63 [%]
/sys/class/power_supply/BAT1/charge_control_end_threshold = 86 [%]
sudo apt install acpi-call-dkms
sudo nano /etc/tlp.conf
Разрешение дисплея
Если gpu не держит 4k/60Hz, придется снижать герцовку
расчитывалка настроек таймингов видео
curl https://raw.githubusercontent.com/kevinlekiller/cvt_modeline_calculator_12/master/cvt12.c --output cvt12.c
gcc -v
gcc cvt12.c -O2 -o cvt12 -lm -Wall
./cvt12 3840 2160 25 -r
./cvt12 3840 2160 30 -b
cat .xprofile
xrandr --newmode "3840x2160_30.00_rdb2" 257.66 3840 3848 3880 3920 2160 2177 2185 2191 +hsync -vsync
xrandr --addmode HDMI-1 "3840x2160_30.00_rdb2"
sudo autorandr --change
ШИМ
Взято из https://github.com/edio/intelpwm-udev
user@x240:~$ cat intelpwm.sh
#!/usr/bin/env bash
function usage() {
cat << EOF
intelpwm FREQ [PCH_RAWCLK_FREQ_REG [BLC_PWM_PCH_CTL2_REG]]
FREQ desired PWM frequency in Hz
PCH_RAWCLK_FREQ_REG PCH raw clock register name or offset
BLC_PWM_PCH_CTL2_REG backlight control register name or offset
EOF
}
function reg_check() {
# If the register is a mnemonic name and not an offset, make sure that it is
# known to intel_reg utility. Unknown mnemonic likely means, that we are on a
# different generation of hardware that may have different registers layout
printf "%d" "$1" 1>/dev/null 2>&1 || \
intel_reg list | grep "$1" 1>/dev/null 2>&1 || \
(>&2 echo "Register $1 is not defined on this hardware" && false)
}
function reg_read() {
# this assumes fixed position of the value in intel_reg output
# so far this has been the case though
intel_reg read "$1" | cut -c51-60
}
FREQ=$1
PCH_RAWCLK_FREQ_REG=${2:-PCH_RAWCLK_FREQ}
BLC_PWM_PCH_CTL2_REG=${3:-BLC_PWM_PCH_CTL2}
if [ -z "$FREQ" ]; then
usage
exit 1
fi
reg_check "${PCH_RAWCLK_FREQ_REG}" || exit 1
reg_check "${BLC_PWM_PCH_CTL2_REG}" || exit 1
PCH_FREQ="$(reg_read ${PCH_RAWCLK_FREQ_REG})"
BLC_CTL2="$(reg_read ${BLC_PWM_PCH_CTL2_REG})"
CYCLE="${BLC_CTL2:6:4}"
HEX=$(printf "0x%08x" $((1000000*PCH_FREQ/128/FREQ)))
PERIOD="${HEX:6:9}"
>&2 echo "Writing 0x${PERIOD}${CYCLE} to register ${BLC_PWM_PCH_CTL2_REG}"
intel_reg write "${BLC_PWM_PCH_CTL2_REG}" "0x${PERIOD}${CYCLE}"
sudo apt install intel-gpu-tools
chmod +x intelpwm.sh
./intelpwm.sh 2000
Чтобы не запускать вручную, настроить вызов скрипта через udev
Скрипт закинуть в /usr/bin без расширения
и выставить права
chown root:root intelpwm.sh
user@x240:~$ cat /etc/udev/rules.d/99-intelpwm.rules
KERNEL!="intel_backlight", SUBSYSTEM!="backlight", ACTION!="change", GOTO="backlight_pwm_rules_end"
RUN="/usr/bin/intelpwm 2000"
LABEL="backlight_pwm_rules_end"