LINUX.ORG.RU

Как разогнать монитор на Linux с Wayland [AMD/nVidia/Intel]

 , , , ,


7

0

Рассматривается прежде всего портирование существующей конфигурации, потому что разгон монитора на Linux без готовой конфигурации - это боль. Моя система: nVidia, Wayland, KDE, Arch-based дистрибутив (CachyOS).

Введение

Разгон монитора – повышение частоты обновления монитора выше штатной, заложенной производителем в прошивку. Многие матрицы имеют возможность работать на больших частотах, но в индустрии устоялись стандарты в 60Hz, 75Hz, 90Hz, 120Hz, 144Hz и т. д., которые производитель закладывает в прошивку монитора в любом случае, даже если матирца может обновляться чаще и монитор имеет подходящий диапазон частоты обновления сигнала, например, вот одна из характеристик моего довольно старого 60Hz монитора AOC E2460S с официального сайта производителя:

Частота цифрового сигнала
30-83khz/50-76hz

Разгон монитора в целом безопасен, если матрица не может работать на большей частоте, то она просто погаснет, пока ей не дадут подходящий сигнал на меньшей частоте, либо у неё появятся артефакты и/или искажения разрешения – в таком виде пользоваться ею никто не захочет и не будет.

По сути, цель – просто повышение плавности имеющегося монитора, чтобы глазам было чуть-чуть приятнее наблюдать дискретную картинку. Заметность эффекта зависит от скачка и индивидуальной восприимчивости.

Пояснение

EDID — Extended Display Identification Data, 128-байтный или 256-байтный бинарник с параметрами (т. е. герцовка, разрешение и пр.) вашего монитора.

❯ hexdump AOC_E2460S_1920x1080@75Hz.bin
0000000 ff00 ffff ffff 00ff d041 09ff 0000 0000
0000010 0000 0301 0008 7800 eeea a395 4c54 2699
0000020 500f 0054 0000 0101 0101 0101 0101 0101
0000030 0101 0101 0101 4071 6980 3870 400c 2d23
0000040 0034 0ee0 0011 1e00 0000 1000 0000 0000
0000050 0000 0000 0000 0000 0000 0000 1000 0000
0000060 0000 0000 0000 0000 0000 0000 0000 1000
0000070 0000 0000 0000 0000 0000 0000 0000 d800
0000080

Проблема

К сожалению, Wayland пока не умеет в hot-reload EDID-файла на ходу, поэтому разгонять монитор, как в Windows при помощи CRU (Custom Resolution Utility) или панели управления nVidia, или как в X11 при помощи xrandr, с удобством пробы новых параметров без перезагрузки невозможно. По крайней мере так утверждает Google. Если параметров у вас нет, то на Wayland вы их никак не найдёте за разумное время. Да и зачем это надо, если можно перебирать их быстро за пять минут в GUI под Windows или в крайнем случае в терминале на X11. Даже если компьютер перезагружается быстро - монитор может динамически менять частоту намного быстрее.

Требования

У вас должны быть гарантированно рабочие параметры для вашего монитора, получить их можно при помощи панели nVidia или CRU в Windows. Также вам нужно знать, какой у вас загрузчик и как в нём настраивать параметры запуска ядра. Также ОБЯЗАТЕЛЬНО установите ненулевой таймер в загрузчике, чтобы откатится в случае чёрного экрана.

Подготовка

Как только у вас будут рабочие параметры разгона моинтора, нужно загрузить Windows или запустить её в виртуальной машине, чтобы открыть CRU, либо использовать Wine (хотя я не уверен, как EDID-файл из Wine себя поведёт). В CRU сделайте экспорт ваших параметров в бинарник с расширением .bin. Интерфейс у CRU очень похож на панель nVidia, поэтому надо просто аккуратно переписать все числа и выбрать одинаковые опции.

Заменяем EDID в ядре

Когда .bin-файл готов, поместите его в /lib/firmware/edid/ с каким-либо именем, например: /lib/firmware/edid/custom.bin

Затем добавьте этот custom.bin в секцию FILES (разделённые пробелом пути в скобках) в mkinitcpio.conf: sudo nano /etc/mkinitcpio.conf. У меня было вот так: FILES=(/lib/firmware/edid/custom.bin). Для вашего дистрибутива ищите подходящие инструкции по обновлению initramfs, можно безопасно попробовать без обновления, но ядро может не увидеть новый файл, и экран погаснет, но в интернете есть похожие инструкции и без этой секции про обновление initramfs.

Затем обновите: sudo mkinitcpio -P.

Далее определите ваш интерфейс подключения монитора при помощи: xrandr --query. У меня было DVI-D-1 connected:

❯ xrandr --query
Screen 0: minimum 16 x 16, current 1920 x 1080, maximum 32767 x 32767
DVI-D-1 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 480mm x 270mm
   1920x1080     74.48*+
   1440x1080     74.46  
   1400x1050     74.51  
   1280x1024     74.57  
   1280x960      74.43  
   1152x864      74.46  
   1024x768      74.54  
   800x600       74.52  
   640x480       74.16  
   320x240       73.82  
   1680x1050     74.49  
   1440x900      74.57  
   1280x800      74.41  
   1152x720      74.38  
   960x600       74.52  
   928x580       74.36  
   800x500       74.40  
   768x480       74.20  
   720x480       74.51  
   640x400       74.23  
   320x200       72.67  
   1600x900      74.52  
   1368x768      74.48  
   1280x720      74.48  
   1024x576      74.49  
   864x486       74.15  
   720x400       74.23  
   640x350       73.68

Теперь надо добавить параметр загрузки ядра в параметры загрузчика. Мой загрузчик - Limine. Для вашего загрузчика ищите инструкции отдельно, в случае с Grub они будут очень похожи на эти.

Откроем конфигурацию загрузчика: sudo nano /etc/default/limine.

Добавим (не забудьте указать именно ваш интерфейс подключения монитора, заменив мой DVI-D-1 на свой вариант) drm.edid_firmware=DVI-D-1:edid/custom.bin к секции KERNEL_CMDLINE[default]+= или к тому, что там должно быть в случае другого загрузчика.

Обновление загрузчика: limine-update.

Перезагрузитесь и проверьте настройки монитора в вашей DE или через hardware-меню монитора с помощью кнопок или чего бы то ни было, что есть на вашем мониторе. Если используете KDE, то в настройках яркости в трее имя монитора поменяется на Microsoft.

Система сама применит параметры разгона.

Если вдруг чёрный экран

Если экран перестал работать, то перезагрузите компьютер, в меню загрузчика поменяйте параметры ядра, нажав на e или TAB и удалив параметры, которые вы добавляли. Так монитор снова заработает на нативной EDID конфигурации.

Бонус (?)

В играх появляется опция с разгоном для фуллскрина. Если я правильно помню, в Windows в играх были только нативные герцовки, а для игры с разгоном монитора обязательно надо использовать окно без рамок. Не уверен даёт ли это хоть какой-то плюс, но такой вот бонус (если это вообще можно так назвать) появляется при подмене EDID через параметры ядра…



Проверено: hobbit ()
Последнее исправление: mndtr0 (всего исправлений: 6)

Хорошо бы дать в начале статьи кратенькое описание того, как работает «разгон» монитора и сопутствующие процессу подводные камни.

Далее определите ваш интерфейс подключения монитора: xrandr –query. У меня было DVI-D-1 connected.

А чего, под вяленым своего xrandr не существует?

Bfgeshka ★★★★★
()
Ответ на: комментарий от Bfgeshka

Насчёт альтернативы xrandr конкретно под Wayland ничего не знаю. У меня под Wayland xrandr --query работает и даёт нужную информацию. Добавил в статью пример вывода.

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

Хорошо бы дать в начале статьи кратенькое описание того, как работает «разгон» монитора и сопутствующие процессу подводные камни.

Добавил.

mndtr0
() автор топика
Ответ на: комментарий от Bfgeshka

Нашёл вот такое обсуждение на англоязычном форуме Arch Linux: https://bbs.archlinux.org/viewtopic.php?id=290142

Там есть и ссылка на GitHub с гайдом на разгон через xrandr, где в конце даже рассматривается вариант перезаписи EDID в прошивке монитора (помечено как «не рекомендуется»). На мой взгляд слишком радикальное решение - проще и безопаснее просто подменять его с диска с ОС…

mndtr0
() автор топика
Ответ на: комментарий от etwrq

Разметка? Тебя напрягает, что человек знает, как в маркдауне подзаголовки и куски кода выделять? Извини, это уже напоминает недавнюю историю на пикабе, там тётке какие-то дегенераты начали ставить на вид, что она использует кавычки-ёлочки и букву «ё», мол, это признак того, что статья сгенерирована ИИ.

Если ты про другое, напиши конкретно, что имеешь в виду.

P.S. дефисы на тире я заменил при подтверждении, если что. :P

hobbit ★★★★★
()
Последнее исправление: hobbit (всего исправлений: 1)
Ответ на: комментарий от hobbit

кавычки-ёлочки и букву «ё»

Раскладка Бирмана под Windows и macOS существует со второй половины 2000-ых, на Линукс по крайней мере в KDE точно есть альтернатива из коробки и включается в настройках раскладки, недавно тут же, на LOR’е, была статья про ввод типографских символов на Линуксе (главным образом ударений, кстати, ввод такой диакритики в KDE существенно отличается от раскладки Бирмана, я сам сначала ошибочно подумал, что её тут просто нет и был немного расстроен).

Есть ещё кое-какие опечатки:

Как только у будут рабочие параметры разгона моинтора

бонус (если это вообще можно так назвать) появлятся при подмене EDID

Сейчас поправлю.

mndtr0
() автор топика
Ответ на: комментарий от mndtr0

Да на ЛОРе даже это не всегда нужно. Кавычки-ёлочки подставляются автоматически, за исключением кода. Тире получается из двух дефисов.

hobbit ★★★★★
()

Сколько трудов вместо двух команд для x11. Мы точно в правильную сторонудвижемся на десктопном линуксе?

einhander ★★★★★
()
Ответ на: комментарий от einhander

Мы (то есть я) движемся правильно: то есть не разгоняем, а просто пользуемся. Рекомендации ы статье лишены практической ценности.

Partisan ★★★★★
()
Ответ на: комментарий от Partisan

На мониторах с частотой от 100 Hz, конечно, мало что можно выжать из матрицы да и смысла особо нет, но если моник старый с частотой до 100 Hz то не вижу никакой проблемы в том, чтобы попытаться. На Windows это совсем просто было - просто в GUI кликаешь и числа с интернета вводишь, в худшем случае в калькуляторе считаешь по формулам-шаблонам с интернета, а на Линуксе просто чуть больше телодвижений

mndtr0
() автор топика
Ответ на: комментарий от einhander

У декстопа одно лишь требование есть - чтобы стоял на столе.

Merionet ★★
()
Ответ на: комментарий от hobbit

она использует кавычки-ёлочки и букву «ё», мол, это признак того, что статья сгенерирована ИИ.

Лол, ну и дегенераты. Это признак грамотности, если уж на то пошло.

Но так-то пугает мир, где нормально быть малограмотным быдлом.

Mobutu_Sese_Seko ★★
()
Ответ на: комментарий от firkax

Какие дистрибутивы идут с ДЕ по умолчанию на иксах?

einhander ★★★★★
()

Может стоит начать с того что бы запросить текущие параметры через monitor-edid ? Затем воспользоваться калькулятором и логическими операциями и проверить что если у вас

ModeLine "3840x2160" 533.25 3840 3888 3920 4000 2160 2163 2168 2222 -hsync +vsync

а

Max video bandwidth: 600 MHz

То максимум что вы получите 67 Hz на 3840x2160, а добиться хотя бы 75 Hz это уже 110% от номинала пропускной способности интерфейса. Получается совсем рулетка с успехом в единицы процентов. А не дай бог вы подключаетесь через USB-C то можно даже не заикаться про разгон.

Zoonoid
()
Ответ на: комментарий от etwrq

вот в том то и дело что похожа

Пфф, а если он написал статью сам, и просто дал ИИ вычитку сделать и типографику поправить)

goingUp ★★★★★
()
Ответ на: комментарий от goingUp

Пользовался поиском Google, а там нынче хочешь - не хочешь, но будет выжимка от LLM, сделал порт для своего экрана, проверил, что всё работает, далее написал в KWrite краткую инструкцию в MarkDown

mndtr0
() автор топика

прочитал статью и не понял - со скольки до скольки Hz разогналось? wlr-randr показывает что у меня максимальна возможная частота 74.984001Hz запускаю

$ wlr-randr --output DVI-I-1 --custom-mode 1440x900@74.984001Hz

монитор моргнул и переключился на заданую частоту… где мне теперь эту повышеную плавность увидеть - на глаз не замечаю ничего.

amd_amd ★★★★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.