LINUX.ORG.RU

Debian 7. Nvidia. Смена разрешения экрана.

 , ,


1

1

Суть проблемы следующая: 1. Установлен Debian 7 (stable ветка, за исключением приложения darktable, взятого из testing; через dpkg установлен steam). Ядро версии 3.2. 2. Видеокарта NVidia GT 440 с драйвером nvidia-glx 304.88-1; монитор Samsung SyncMaster T190 (подключен через d-sub).

В меню nvidia-settings отображаются только 3 доступных разрешения, в основном с соотношением сторон 4:3 (монитор 16:10), родного разрешения монитора или любого другого с нужным соотношением нет.

xrandr, соответственно, показывает, что доступны тоже только этих 3 разрешения. Попытки напрямую прописать нужное мне разрешение в «xorg.cong», «/xorg.conf.d/20-nvidia.conf» или поменять его путём добавления нового режима через xrandr (посредством добавления строчек выводимых, например, gtf) к положительному результату не привели.

Кто нибудь сталкивался с подобным и удалось ли решить подобную проблему без перехода в testing/unstble?

Пока что только наткнулся на тему, где пишут, что это такая «фича» в новых драйверах nvidia (начиная с версий 3xx). Там же приводят комментарий из кода wine:

    + /* Recent (304.64, possibly earlier) versions of the nvidia driver only
    + * report a DFP's native mode through RandR 1.2 / 1.3. Standard DMT modes
    + * are only listed through RandR 1.0 / 1.1. This is completely useless,
    + * but NVIDIA considers this a feature, so it's unlikely to change. The
    + * best we can do is to fall back to RandR 1.0 and encourage users to
    + * consider more cooperative driver vendors when we detect such a
    + * configuration. */
Получается, что решить проблему можно только переходом на более старые версии RandR?

★★★★★

Обновите драйвер, вашу видео карту поддерживает драйвер 319.49, а можете вообще поставить 325.15, смотрите вкладку «ПОДДЕРЖИВАЕМЫE ПРОДУКТЫ» .

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

Спасибо. Была такая мысль и похоже придётся так сделать, хоть и хотелось поддерживать систему средствами родного менеджера пакетов без подобного выхода за пределы stable. Не поломать бы :)

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

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

Ну в установке нескольких пакетов из нестабильных веток нет ничего плохого. Если это у Вас десктоп, то лучшим вариантом поставить драйвер из experimental, там как раз 325.15-1

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

Это я боюсь после неудачного опыта несколько лет назад снова систему почти сразу угробить, что после использования gentoo оказалось неожиданно просто сделать :\ Видать совсем плохо на тот момент разобрался с системой управления пакетами.

Но прежде чем ставить пакеты из unstable попробую сначала до testing всю систему обновить.

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

Поставил 325.15 после обновления до ветки testing. В nvidia-settings в advanced появились новые настройки, но принудительно поменять само разрешение всё равно не позволил. Возможно, при подключении через dvi ситуация была бы лучше. Но систему я всё равно умудрился потом поломать при попытке поставить из testing драйвер libgl1-nvidia-glx:386. Попробую почистить недоустановленные пакеты и ещё раз поставить, может где накосячил.

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

В nvidia-settings в advanced появились новые настройки, но принудительно поменять само разрешение всё равно не позволил

А как не позволяет то? В «X Server Display Configuration» активнен список «Resolution»?

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

Список активен, но в нём всё те же 3 разрешения на выбор, что и до этого. Но в режиме «advanced» (примерно как здесь]) теперь 3 поля вместо одного и второй параметр «ViewPortOut» «1024х768+0+0» не хочет меняться на «1280x800+0+0» (странно, что этих опций я не видел в версии 304.88). Первый и третий меняются, но картинка при этом становилась очень мыльной, что ожидаемо при подобном масштабировании.

"ViewPortOut" : задает область режима отображения
"ViewPortIn" : задает размер области отображения на Х-экране в ViewPortOut 

Сначала попробую исправить то, что сломал. До версии experimental драйвер обновлял используя этот метод, с той лишь разницей, что добавил везде ключ "-t experimental" в apt-get. После перезагрузки всё работало, но вот последующий «apt-get -t experimental install libgl1-nvidia-glx:i386» захотел почти всё только что установленное удалить, с чем я согласился - но тут уж сам виноват. Теперь буду разгребать half-installed пакеты в виде xserver-xorg-video-nvidia. Если починю, попробую найти dvi-кабель, хотя в windows xp и через d-sub практически любые разрешения выставлялись.

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

Как разберусь с поломкой, попробую ещё раз вот это. До этого пробовал чуть другой способ, разбираемый выше в той же теме. Похоже, что проблема всё-таки с правильным определением разрешений и частот монитора, поэтому они так и занижены, чтобы его не повредить.

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

Всё, восстановил систему, удалив (забэкапив) файлы с информацией dpkg о half-installed пакете xserver-xorg-video-nvidia и выполнив #apt-get -f install. После чего заново поставил драйвера от nvidia в соответствии с этой инструкцией, но так как ставил на testing из experimental, то выглядело это так:

# apt-get install module-assistant
# apt-get install -t experimental nvidia-kernel-source
# module-assistant a-i nvidia-kernel-source
# apt-get install -t experimental nvidia-glx
# apt-get install -t experimental libgl1-nvidia-glx:i386

Дальше начинается радость доступная в отдельных случаях счастливым обладателям видеокарт nvidia с драйверами 300-й серии (с более ранними версиями подобной проблемы, похоже. не было). О данной проблеме созданы темы на различных форумах, в том числе и на LOR. Хотя как монитор работает через DVI-D кабель я не проверял.

После генерации xorg.conf в nvidia-settings появилась возможность выставить разрешение 1280x1024. Также в настройках nvidia-settings (скриншот) > «X Server Display Configuration» > «Advanced» (после включения вместо неё кнопка «Basic») можно было масштабированием «выставить» нужное мне разрешение 1280х800 (16:10):

ViewPortIn : 1280x800
ViewPortOut : 1280x1024 +0+0
Panning : 1280x800

Но после перезагрузки всё равно выставлялось 1024x768, да и способ получения нужного соотношения сторон масштабированием явно не в лучшую сторону влияет на изображение.

Покопавшись в man nvidia-xconfig нашёл параметр Option «UseEdid» «False» для Section «Screen» в xorg.conf (или /etc/X11/xorg.conf.d/20-nvidia.conf), который должен отключать проверку EDID у монитора. Погуглив, ещё добавил Option «ModeValidation» «AllowNonEdidModes» в Section «Device» но, полагаю, можно и без этого параметра. В итоге мой «xorg.conf» после многочисленных ручных правок с выставлением частот и режимов стал выглядеть примерно так:

Section "Monitor"
    Identifier     "Monitor0"
    VendorName     "Samsung"
    ModelName      "SyncMaster T190"
    HorizSync       30.0 - 81.0
    VertRefresh     56.0 - 75.0
    ModeLine       "1280x800" 83.50 1280 1352 1480 1680 800 803 809 831 -hsync +vsync
    ModeLine       "nvidia-auto-select" 83.50 1280 1352 1480 1680 800 803 809 831 -hsync +vsync
    Option         "DPMS"
EndSection

Section "Device"
    Identifier     "Device 0"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    Option "ModeValidation" "AllowNonEdidModes"
EndSection

Section "Screen"
    Identifier     "Screen0"
    Device         "Device 0"
    Monitor        "Monitor0"
    DefaultDepth    24
    Option         "metamodes" "1280x800_60 +0+0"
    Option         "NoLogo" "True"
    Option         "UseEdid" "False"
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection

После перезагрузки xrandr и nvidia-settings вывели достаточно большой список доступных разрешений экрана, включая нужный мне режим 1280x800. Но после смены разрешения рабочий стол в XFCE упорно продолжал загружаться в режиме 1024x768.

Но при этом я заметил (по ширине курсора), что в какой-то момент старта xserver разрешение экрана всё-таки то, которое должно быть, но затем оно снова сбрасывается.

Ещё раз просмотрев Xorg.0.conf, обратил внимание, что инициализация и настройка оборудования происходит 2 раза о_О :

[    29.764] (**) NVIDIA(0): Option "ModeValidation" "AllowNonEdidModes"
[    29.764] (**) NVIDIA(0): Option "UseEDID" "False"
[    29.764] (**) NVIDIA(0): Option "MetaModes" "1280x800_60 +0+0"
[    29.764] (**) NVIDIA(0): Enabling 2D acceleration
[    29.764] (**) NVIDIA(0): Ignoring EDIDs

....

[    30.525] (II) NVIDIA(GPU-0): Not probing EDID on CRT-1.
...
[    30.527] (**) NVIDIA(0): Using HorizSync/VertRefresh ranges from the EDID for display
[    30.527] (**) NVIDIA(0):     device CRT-1 (Using EDID frequencies has been enabled on
[    30.527] (**) NVIDIA(0):     all display devices.)
[    30.527] (II) NVIDIA(0): Mode Validation Overrides for CRT-1:
[    30.527] (II) NVIDIA(0):     AllowNonEdidModes
[    30.538] (II) NVIDIA(0): Validated MetaModes:
[    30.538] (II) NVIDIA(0):     "1280x800_60+0+0"
[    30.538] (II) NVIDIA(0): Virtual screen size determined to be 1280 x 800
[    30.566] (WW) NVIDIA(0): Unable to get display device CRT-1's EDID; cannot compute DPI
[    30.566] (WW) NVIDIA(0):     from CRT-1's EDID.
[    30.566] (==) NVIDIA(0): DPI set to (75, 75); computed from built-in default
[    30.566] (--) Depth 24 pixmap format is 32 bpp
...
[    30.571] (II) NVIDIA(0): Setting mode "1280x800_60+0+0"

...

[    40.179] (II) NVIDIA(GPU-0): Not probing EDID on CRT-1.
[    40.179] (**) NVIDIA(0): Using HorizSync/VertRefresh ranges from the EDID for display
[    40.179] (**) NVIDIA(0):     device CRT-1 (Using EDID frequencies has been enabled on
[    40.179] (**) NVIDIA(0):     all display devices.)
[    40.179] (II) NVIDIA(0): Mode Validation Overrides for CRT-1:
[    40.179] (II) NVIDIA(0):     AllowNonEdidModes
[    40.196] (II) NVIDIA(0): Setting mode "VGA-0: 1024x768_60 @1024x768 +0+0 {ViewPortIn=1024x768, ViewPortOut=1024x768+0+0}"

Решил, что это уже шалит сам XFCE залез в аплет настроек «Экран» (или как он там называется) и на всякий случай выставил нужное разрешение и через него, как и в случае с nvidia-settings. После пары перезагрузок выставленное мной разрешение не сбрасывалось.

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

Спасибо. Да уж... чтобы столько возиться с xorg.config, такого точно никогда не было :\ Даже в 2004-м в Gentoo иксы на ati9800pro с fglrx-драйвером и то сразу настроились нормально по стандартному конфигу.

grem ★★★★★ ()

Можно было сделать проще

... тоже сталкивался. NVIDIA X server setting /X server display configuration Выставляем нужное разрешение.(Если их нет в с писке, то добавляем через Xrandr или NoEDiD). Затем там же «Save to X configuration file». Добавляем туда свои опции по вкусу, ну типа triplebuffer, nologo, Xinerama, etc... Заменяем /etc/X11/xorg.conf исправленным, перегружаемся и PROFIT...

evilbyte ()
Ответ на: Можно было сделать проще от evilbyte

Через xrandr я первым делом пытался создать режим и добавить его - но не вышло (о чём я сразу писал в начале темы), он просто выдавал ошибку и не добавлял режим для нужного мне вывода VGA-0. Могу вечером пару ссылок на обсуждения проблемы скинуть, где тоже безуспешно пытались через xrandr добавить режим. Проблема дополнилась ещё и тем, что даже когда я добился появления нужных режимов в xrandr путём добавления Option «UseEdid» «False» в xorg.conf, то разрешение всё равно сбрасывалось на другое после перезагрузки.

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

Такая же беда. Поэтому и заменил сгенерированый xorg.conf на выданный NVIDIA настройщиком. После этого и заработало на нужном мне разрешении после перезагрузки, а так да — тоже сбрасывалось.

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

Это я тоже пробовал :( Но до добавления дополнительных опций из допустимых для nvidia-xconfig для принудительного отключения edid (даже с результатами modelines из cvt или gtf и прочих родных для xorg.conf опций), нужные разрешения даже не видел и единственным доступным разрешением выше 1024x768 появлялось 1280х1024. Возможно кабель такой, что информацию неправильно передавал, может просто особенность конкретной связки видеокарта-монитор. До отключения edid он прописанные режимы даже не находил и не добавлял, о чём сообщал в Xorg.0.log.

Но вот всё ещё смущает в Xorg.0.log, что настройки оборудования 2 раза назначаются. Попробую как-нибудь проверить, что это всё-таки XFCE так делает. У меня в lightdm автологин прописан был, подозрение, что до осуществления непосредственно логина он выставлял верное разрешение. После того как я в апплете XFCE «Экран» поменял разрешение, то в логах исчезла дополнительная строчка про его повторную смену.

Теперь хоть фотографии не растягиваются вширь :) И чуть лучше разобрался с системой управления пакетами Debian (а то совсем всё забыл) - всё-таки один из первых старейших дистрибутивов, хотя вывод emerge перед установкой-удалением пакетов всё равно удобнее и нагляднее.

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

Но вот всё ещё смущает в Xorg.0.log, что настройки оборудования 2 раза назначаются

Кстати... Вспомнилось.
Давно было, но попробуй выстави Option «TwinView» «0». Кажется что-то на эту тему с кабелем и монитором связанно было.

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

Попробую конечно, хоть TwinView и для двухмониторных конфигураций, но мало ли какой глюк в драйверах. Сначала, как будет время, проверю версию с самим XFCE.

Если включу EDID, скорее опять всё слетит, но смогу хоть вывод ошибки xrandr при добавлении режима привести. В xorg.conf я всё равно частоты указал из спецификации монитора, так что ничего страшного случиться не должно. Пока как вариант решения вполне сойдёт.

grem ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.