Разгон монитора и исправление цветового диапазона в Linux

Пост опубликован в блогах iXBT.com, его автор не имеет отношения к редакции iXBT.com

Здравствуй, многоуважаемый читатель! Мы продолжаем серию материалов, посвящённых настройке и оптимизации систем на базе ядра Linux. В этой небольшой инструкции вы узнаете, как исправить давнюю проблему с ограниченным цветовым диапазоном в Linux, а также как всего за пару кликов разогнать матрицу монитора вне зависимости от используемой модели видеокарты, протокола графического сервера (Xorg, Wayland) или рабочего окружения (Gnome, KDE, Xfce, I3).


Система автора

Пояснение проблемы

Прежде чем переходить к исправлению проблемы, необходимо чуть подробней разобрать, что она из себя представляет.

При использовании цифрового подключения HDMI/DVI-D, Linux не всегда правильно выставляет цветовой диапазон и частоту обновления экрана монитора, что приводит к плохому качеству отображаемой картинки и потери плавности мыши.

Наглядно продемонстрировать проблему весьма сложно, так как это не связано с параметрами цветовой палитры файла, а является ограничением передаваемого сигнала на ваш монитор. То есть видите это только вы. Тем не мене, если вы заметили, что тёмные цвета стали отдавать белизной, а былые яркие картины потускнели и как-то выглядят не так, то эта инструкция вам точно необходима!

Full RGB и разгон монитора

В настоящее время в Linux происходит плавная замена протокола графического сервера Xorg на более новую и быструю реализацию Wayland, что приносит настоящий хаос в настройку конфигурации. Но мы воспользуемся не стандартным методом и создадим универсальный конфигурационный файл для нашего монитора.

1. Открываем терминал и вводим команду find /sys/devices/pci*/ -name edid. Она нам необходима, чтобы узнать, где хранится файл конфигурации edid.

У меня монитор подключен по HDMI, а значит я просто выделяю и копирую всю первую строку.


2. Копируем файл edid в домашнюю директорию с помощью команды:

cp /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/drm/card0/card0-HDMI-A-1/edid ~/edid.bin

Если вы всё сделали правильно, то в /home/ваше_имя появится файл edid.bin.

3. Теперь нам необходимо установить ПО для чтения и внесения изменений в файл edid.bin. Я рекомендую использовать нативный редактор wxEDID.

Выполняем установку wxEDID и зависимостей:

sudo pacman -S git base-devel grub-customizer                           # Скачать зависимости и редактор grub


git clone https://aur.archlinux.org/wxedid.git                               # Стянуть исходники ПО

cd wxedid                                                                                             # Перейти в папку с исходниками

makepkg -sric                                                                                       # Собрать и установить программу

4. Запускаем программу через команду в терминале sudo wxedid и в окне программы выбираем наш edid.bin. File -> Open EDID binary.

Для активации полного цветового диапазона меняем данные в строках:

  • SPF: Supported features -> изменить значение vsig_format на 0b00
  • CHD: CEA-861 header -> изменить значение YCbCr4:2:2 и YCbCr4:4:4 на 0
  • VSD: Vendor Specific Data Block -> изменить значение DC_Y444 на 0

Для разгона матрицы монитора выбираем изменяем данные (Пропустите раздел, если вам не нужен разгон):

Выбираем DTD: Detailed Timing Descriptor и переключаемся на вкладку DTD Constructor, где в поле Pixel clock постепенно повышаем частоту обновления монитора до необходимых значений. Для различных мониторов пределы разгона отличаются. 

Сохраняем изменения через File-> Save EDID Binary. Для удобства я назову новый конфигурационный файл edid2.bin.

5. Теперь необходимо заставить систему использовать модифицированный файл edid2.bin вместо системного. Создаём по пути /usr/lib/firmware/ папку edid и переносим туда наш модифицированный edid2.bin.

Вводим команды:

cd /usr/lib/firmware/                                                                           # Перейти в нужный раздел

sudo mkdir edid                                                                                  # Создать папку от администратора

cd                                                                                                      # Перейти в домашнюю папку

sudo cp edid2.bin /usr/lib/firmware/edid                                               # Скопировать файл edid2.bin

6. Добавляем модифицированный файл в наш загрузчик.

Запускаем grub-customizer и добавляем в параметры ядра (в самый конец) команду drm.edid_firmware=edid/edid2.bin, которая заставит Linux подхватывать наш изменённый конфигурационный файл при загрузке ядра. 

Сохраняем изменения через кнопку "Сохранить" в левом углу ПО и смотрим на представленную ниже картинку.

Если всё было сделано правильно, то после перезагрузки вы сразу почувствуете разницу в плавности движения мыши, а картинка с прекрасной Morrigan засияет новыми красками.

Заключение

Вот, собственно, и всё! Не знакомому с Linux-миром человеку вся эта инструкция может показаться пугающим шаманством, но она и не рассчитана на него, а повествует лишь о необычном способе исправления древнего бага и существенного повышения комфорта при использовании Linux. Уважайте свободу, используйте Linux и ни в коем случае не предавайте себя.

Видеоверсия