Git

Яркость внешних мониторов (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), поэтому вам ничего ставить не нужно.

Если яркость не меняется#

  1. Проверьте, что драйвер загружен: lsmod | grep ddcci.
  2. Посмотрите, появился ли монитор: ls /sys/class/backlight. Должна быть запись вида ddcciN.
  3. Включите DDC/CI в экранном меню самого монитора. На некоторых он выключен по умолчанию.
  4. Подключайте монитор напрямую, без переходников и док-станций: не все они передают DDC/CI.
  5. Перезапустите службу: sudo systemctl restart ddcci-attach.

Для сборщиков образа#

В рецепте образа модуль лежит в src/resources/ddcci.yml. Важные детали сборки (почему DKMS нужно явно указывать версию ядра и почему gcc и make остаются в образе) разобраны на странице сборка образа и DKMS.