Шалом, котаны.
На некоторых ноутбуках нет возможности регулировки подсветки при помощи intel_backlight, xbacklight etc, аппаратные клавиши подсветки не работают. Такое же разочарование ждало меня и с HP Pavillion dv4-1050er (видео - GeForce 9200M GS). Однако опытным путём было установлено, что ядерный модуль acpi_video создаёт строку hw.acpi.video.lcd0.brightness
в sysctl, которая всё-таки позволяет менять яркость подсветки. Чтобы не дёргать каждый раз sysctl, я набросал небольшой скрипт для удобства, так сказать. Вдруг кому-нибудь пригодится. Модуль acpi_video.ko должен быть загружен (в /boot/loader.conf acpi_video_load="YES"
). Работает, как и предыдущий скрипт, от имени суперпользователя.
#!/bin/sh
acpi_backlight_sysctl="sysctl"
ACPI_BACKLIGHT_VALUE_SYSCTL="hw.acpi.video.lcd0.brightness"
ACPI_BACKLIGHT_VALUE_MIN="0"
ACPI_BACKLIGHT_VALUE_MAX="$(($(${acpi_backlight_sysctl} -n hw.acpi.video.lcd0.fullpower) / 10))"
ACPI_BACKLIGHT_OPT1="$1"
ACPI_BACKLIGHT_OPT2="$2"
[ "$(id -u)" -eq "0" ] || { echo "Only root can run $(basename $0)." ; exit 1 ; }
acpi_backlight_help_msg() {
ACPI_BACKLIGHT_BASENAME="$(basename $0)"
echo "Use: ${ACPI_BACKLIGHT_BASENAME} <+|-|=> <DEC_VALUE>"
echo " ${ACPI_BACKLIGHT_BASENAME} -q"
echo "Max value can be no more ${ACPI_BACKLIGHT_VALUE_MAX}"
exit 0
}
ACPI_BACKLIGHT_VALUE_PRESENT="$(($(${acpi_backlight_sysctl} -n ${ACPI_BACKLIGHT_VALUE_SYSCTL}) / 10))"
if [ "$1" = "-q" ] ; then
echo "${ACPI_BACKLIGHT_VALUE_PRESENT}" ; exit 0
fi
if [ ! "$2" ] ; then
echo "Current value is ${ACPI_BACKLIGHT_VALUE_PRESENT}"
acpi_backlight_help_msg
fi
if [ "$1" = "+" -o "$1" = "-" ] ; then
ACPI_BACKLIGHT_VALUE_EXP="$((${ACPI_BACKLIGHT_VALUE_PRESENT} ${1} ${ACPI_BACKLIGHT_OPT2}))"
elif [ "$1" = "=" ] ; then
ACPI_BACKLIGHT_VALUE_EXP="${ACPI_BACKLIGHT_OPT2}"
else
acpi_backlight_help_msg
fi
if [ "${ACPI_BACKLIGHT_VALUE_EXP}" -gt "${ACPI_BACKLIGHT_VALUE_MAX}" ] ; then
echo "Value (${ACPI_BACKLIGHT_VALUE_EXP}) must not be greater than ${ACPI_BACKLIGHT_VALUE_MAX}" ; exit 1
elif [ "${ACPI_BACKLIGHT_VALUE_EXP}" -lt "0" ] ; then
echo "Value (${ACPI_BACKLIGHT_VALUE_EXP}) must not be less than 0" ; exit 1
fi
echo "Set backlight: ${ACPI_BACKLIGHT_VALUE_PRESENT} -> ${ACPI_BACKLIGHT_VALUE_EXP}"
${acpi_backlight_sysctl} ${ACPI_BACKLIGHT_VALUE_SYSCTL}=$((${ACPI_BACKLIGHT_VALUE_EXP} * 10)) > /dev/null
Проверено на FreeBSD-12.0-RELEASE, но скорее всего будет работать на любой версии, где есть acpi_video.
По всем вопросам обращайтесь в личку.