====== Разрешение экрана и частота монитора в Xorg ====== **OUTDATED**: скорее всего информация частично устарела, т.к. и xorg, и драйверы видеокарт многократно обновлялись. Страница не удаляется, т.к. всё ещё может быть кому-то полезна. * Q: Почему нужное разрешение экрана может отсутствовать в списке доступных? * A: Потому, что операционная система не знает о том, что монитор поддерживает нужный нам режим. * Q: Откуда система может об этому узнать? * A: Она может узнать об этом из EDID или же мы можем сами ей об этом рассказать * Q: Что такое EDID? * A: [[wp>EDID]] (Extended display identification data - расширенные данные идентификации монитора) - блок информации, получаемый от монитора по каналу DDC ([[wp>Display_Data_Channel]]) через видеокарту, позволяющий корректно определить допустимые видеорежимы. В некоторых случаях эта информация считывается драйвером неправильно или не считывается вовсе, в этом случае система будет использовать режимы, которые она считает безопасными для данного монитора. * Q: Как посмотреть информацию EDID получаемую от монитора? * A: Для Ubuntu * Из пакета read-edid: ''**sudo get-edid|parse-edid**'' * Из пакета xresprobe: ''**sudo ddcprobe**'' * Если первые два способа не дали положительный результат попробуйте поправить кабель монитора и повторить * Если и 3-й способ не помог ищите информацию о своём мониторе в документации или в Google (вам нужны в первую очередь горизонтальная (HorizSync) и вертикальная (VertRefresh) частоты развёртки, а во вторую рекомендуемый режим, например 1024x768@75Hz) * Q: И как всё же решить проблему с разрешением и частотой экрана? * A: Для этого нужно рассказать [[wp>X-Window]] (Xorg) что умеет ваш монитор на самом деле (какие видеорежимы поддерживает) выполняя следующие настройки в [[wp>xorg.conf]] (**/etc/X11/xorg.conf**). После каждой добавленной строки перезапускайте X-Window (для Ubuntu **screen sudo /etc/init.d/gdm restart**) пока не добьётесь нужного результата: * Для начала проверяем присутствие разрешение в списке Modes, если его там нет - дописываем, перезапускаем X-Window и проверяем, это выглядит примерно так: Section "Screen" ... SubSection "Display" Depth 24 Modes "1024x768" "800x600" EndSubSection ... EndSection * Если результата нет, вписываем в секцию Monitor параметры HorizSync и VertRefresh и перезапускаем X-Window. Эти параметры для вашего монитора можно узнать с помощью вышеописанных утилит или найти в интернет, например: Section "Monitor" ... HorizSync 30-70 VertRefresh 50-120 ... EndSection * Если это не помогло, оставляем эти строки и дописываем новую - Modeline. Получаем строку Modeline воспользовавшись утилитой gtf и паспортными данными монитора. После этого помещаем её в секцию Monitor и ссылку этот новый режим в секцию Screen, например: $ gtf 1024 768 100 # 1024x768 @ 100.00 Hz (GTF) hsync: 81.40 kHz; pclk: 113.31 MHz Modeline "1024x768_100.00" 113.31 1024 1096 1208 1392 768 769 772 814 -HSync +Vsyn Section "Monitor" ... HorizSync 30-70 VertRefresh 50-120 Modeline "1024x768_100.00" 113.31 1024 1096 1208 1392 768 769 772 814 -HSync +Vsyn ... EndSection ... Section "Screen" ... SubSection "Display" Depth 24 Modes "1024x768_100.00" "1024x768" "800x600" EndSubSection ... EndSection * Если вы подключаете монитор по DVI и используете драйвер nvidia, то поиск решения нужно начинать с опции "ModeValidation" "NoMaxPClkCheck" в секции Device (с другими драйверами не проверялось): Section "Device" Identifier "NVIDIA Corporation NV17 [GeForce4 MX 440]" Driver "nvidia" Option "ModeValidation" "NoMaxPClkCheck" .... EndSection **PS:** В процессе настройки каждый раз смотрите лог X-Window на предмет validated modes. Он подскажет где вы ошибаетесь. * Для всех $ grep -i modeline /var/log/Xorg.0.log * Для NVidia $ grep -iA20 -B20 "validated modes" /var/log/Xorg.0.log **PPS:** Для видео-драйвера nvidia: иногда нужно отключить использование EDID. **В том случае, если информацию EDID система получает, но неправильно, то перечисленное выше может не работать и нужно принудительно отключить использование EDID, а после этого повторить все этапы снова.** Section "Device" Identifier "NVIDIA" Driver "nvidia" Option "UseEDID" "FALSE" ... EndSection А это идентично следующему: Section "Device" Identifier "NVIDIA" Driver "nvidia" Option "UseEDIDFreqs" "FALSE" Option "UseEDIDDpi" "FALSE" Option "ModeValidation" "NoEdidModes" ... EndSection Подробнее об этом почитать можно в README к драйверу nvidia-glx: $ zcat /usr/share/doc/nvidia-glx/README.txt.gz |grep 'Option "UseEDID"' -A20 {{tag>xorg}}