Яркость внешних мониторов (ddcci)
У ноутбука яркость экрана регулируется стандартным способом, а у внешнего монитора, подключённого по HDMI или DisplayPort, обычно только кнопками на самом мониторе. ddcci это драйвер ядра, который позволяет менять яркость внешнего монитора из системы: ползунком в быстром меню Niti, как у встроенного экрана.
Как это работает#
Большинство мониторов понимают протокол DDC/CI: компьютер по тому же кабелю, что и картинка, может отправить монитору команду, в том числе «изменить яркость». Драйвер ddcci-driver-linux превращает такой монитор в обычное устройство подсветки:
ls /sys/class/backlight
# ddcci11После этого любая программа, которая умеет управлять подсветкой, видит внешний монитор так же, как экран ноутбука.
Что есть в образе#
| Что | Зачем |
|---|---|
Пакет dkms-ddcci | модули ядра ddcci и ddcci_backlight, собираются под ядро образа |
Служба ddcci-attach.service | при загрузке подключает драйвер к шинам i2c, где есть мониторы. При сбое повторяет попытку каждые 10 секунд, потому что монитор может ещё не успеть проснуться |
Модули ядра собираются прямо при сборке образа (DKMS), поэтому вам ничего ставить не нужно.
Если яркость не меняется#
- Проверьте, что драйвер загружен:
lsmod | grep ddcci. - Посмотрите, появился ли монитор:
ls /sys/class/backlight. Должна быть запись видаddcciN. - Включите DDC/CI в экранном меню самого монитора. На некоторых он выключен по умолчанию.
- Подключайте монитор напрямую, без переходников и док-станций: не все они передают DDC/CI.
- Перезапустите службу:
sudo systemctl restart ddcci-attach.
Для сборщиков образа#
В рецепте образа модуль лежит в src/resources/ddcci.yml. Важные детали сборки (почему DKMS нужно явно указывать версию ядра и почему gcc и make остаются в образе) разобраны на странице сборка образа и DKMS.