Шалом, котанчики.
В общем есть нетбук с GMA3600 под FreeBSD, в котором невозможно было регулировать яркость. Лупила на всю. xbacklight и intel_backlight не работали, видимо потому что вместо видео там проклятый всеми ОС Intel GMA3600. Поэтому я соорудил небольшой скриптик, позволяющий регулировать яркость. К сожалению, только от root'а. Впрочем, %wheel ALL=(ALL) NOPASSWD: /path/to/intel_bl
легко решает эту проблему. Если вдруг кому-то пригодится:
#!/bin/sh
intel_bl_setpci="pciconf -w"
intel_bl_getpci="pciconf -r"
INTEL_BL_DEVICE="pci0:0:2:0"
INTEL_BL_REGISTER="0xf4"
INTEL_BL_MAX_VALUE="255"
INTEL_BL_COMMAND="$1"
INTEL_BL_SET_VALUE="$2"
[ "`id -u`" -eq "0" ] || { echo "Only root can run `basename $0`." ; exit 1 ; }
intel_bl_use() {
echo "Use: `basename $0` <+|-|=> <DEC_VALUE>"
echo "Final max value can be no more ${INTEL_BL_MAX_VALUE}"
exit 0
}
INTEL_BL_CUR_VALUE="`${intel_bl_getpci} ${INTEL_BL_DEVICE} ${INTEL_BL_REGISTER}`"
INTEL_BL_CUR_VALUE_DEC="`let 0x${INTEL_BL_CUR_VALUE}`"
if [ ! "$2" ] ; then
echo "Current value is ${INTEL_BL_CUR_VALUE_DEC}"
intel_bl_use
fi
if [ "$1" = "+" -o "$1" = "-" ] ; then
INTEL_BL_EXP_VALUE="$((${INTEL_BL_CUR_VALUE_DEC} ${1} ${INTEL_BL_SET_VALUE}))"
elif [ "$1" = "=" ] ; then
INTEL_BL_EXP_VALUE="${INTEL_BL_SET_VALUE}"
else
intel_bl_use
fi
if [ "${INTEL_BL_EXP_VALUE}" -gt "${INTEL_BL_MAX_VALUE}" ] ; then
echo "${INTEL_BL_EXP_VALUE} must not be greater than ${INTEL_BL_MAX_VALUE}" ; exit 1
elif [ "${INTEL_BL_EXP_VALUE}" -lt "0" ] ; then
echo "${INTEL_BL_EXP_VALUE} must not be less than 0" ; exit 1
fi
echo "Set backlight: ${INTEL_BL_CUR_VALUE_DEC} -> ${INTEL_BL_EXP_VALUE}"
${intel_bl_setpci} ${INTEL_BL_DEVICE} ${INTEL_BL_REGISTER} 0x`printf "%x" ${INTEL_BL_EXP_VALUE}`
Он же на pastebin.
В параметре INTEL_BL_DEVICE указывается код девайса из pciconf, с вероятностью 99,9% менять не придётся. Запуск без параметров возвращает текущее значение в десятичной системе от 0 до 255. Между +, - или = и значением необходим пробел. Скрипт легко заставить работать в Линуксе, если подправить значения intel_bl_setpci, INTEL_BL_DEVICE, INTEL_BL_REGISTER.
Будут впоросы, пишите в личку.