Настройка монитора QNIX QX2700 в linux

Однажды хороший человек подарил мне монитор — 27″ QNIX, модели QX2700. Монитор обладает высоким разрешением — 2560×1440 и LED подсветкой. Обладает так же низкой ценой (порядка 250 долларов). Но есть и недостатки — глянцевый экран (самый главный минус), полным отсутствием мозгов.

SAM_7117

Полное отсутствие мозгов — у монитора нет OSD-меню, не может правильно показывать разрешения ниже рабочего, не отправляет EDID (не представляется). Первые два недостатка на жизнь никак не влияют, а вот последний создает много проблем. Без EDID монитор не будет правильно определяться и работать в linux.

Настройка монитора ещё осложняется тем что у меня два монитора с разными разрешениями (второй — fullhd Benq, телевизор-монитор для работы), и просто сунуть конфиг из интернета не получится. Вот типичный пример отсюда:

# nvidia-xconfig: X configuration file generated by nvidia-xconfig
# nvidia-xconfig:  version 1.0  (buildmeister@builder58)  Fri Mar 12 02:12:40 PST 2010

Section "ServerLayout"
    Identifier     "Layout0"
    Screen      0  "Screen0"
EndSection

Section "Files"
EndSection

Section "Monitor"
    Identifier     "Monitor0"
    VendorName     "QNIX"
    ModelName      "2710"
    HorizSync       88.8
    VertRefresh     59.5
    # 2560x1440 59.96 Hz (CVT 3.69M9) hsync: 89.52 kHz; pclk: 312.25 MHz
    Modeline "2560x1440"  312.25  2560 2752 3024 3488  1440 1443 1448 1493 -hsync +vsync
    DisplaySize 597 336
    Option         "DPMS"
EndSection

Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    Option "NoLogo"
EndSection

Section "Screen"
    Identifier     "Screen0"
    Device         "Device0"
    Monitor        "Monitor0"
    DefaultDepth    24
    SubSection     "Display"
        Depth       24
        Modes "2560x1440"
    EndSubSection
    Option "UseEDID" "False"
    Option "UseEDIDDPI" "False"
    Option "UseEDIDFreqs" "False"
    Option "ExactModeTimingsDVI" "True"

## Metamode for single QX2710 (2560x1440)
#   Option "metamodes" "DFP-0: 2560x1440 +0 +0"

## Metamode for dual QX2710 (5120x1440)
    Option "metamodes" "DFP-0: 2560x1440_60 @2560x1440 +0+0, DFP-2: 2560x1440_60 @2560x1440 +2560+0"
EndSection

Самое главное в нём — это опция

Option "UseEDID" "False"

, которая выключает использование EDID и принудительно настраивает разрешение монитора не взирая ни на что. Следовательно второй монитор с другим разрешением работать не будет. Опция работает глобально и выключить только для одного выхода карты у меня не получилось.

Решение проблемы — первое и плохое

Решением оказалось создать один «чудо-монитор» с настроенными поддержкой 2560×1440 и 1920×1080 разрешений и выставить их. Пример работающего конфига:

# nvidia-settings: X configuration file generated by nvidia-settings
# nvidia-settings:  version 331.20  (buildd@roseapple)  Mon Feb  3 15:07:22 UTC 2014


Section "ServerLayout"
    Identifier     "Layout0"
    Screen      0  "Screen0" 0 0
    InputDevice    "Keyboard0" "CoreKeyboard"
    InputDevice    "Mouse0" "CorePointer"
    Option         "Xinerama" "0"
EndSection

Section "Files"
EndSection

Section "InputDevice"

    # generated from default
    Identifier     "Mouse0"
    Driver         "mouse"
    Option         "Protocol" "auto"
    Option         "Device" "/dev/psaux"
    Option         "Emulate3Buttons" "no"
    Option         "ZAxisMapping" "4 5"
EndSection

Section "InputDevice"

    # generated from default
    Identifier     "Keyboard0"
    Driver         "kbd"
EndSection

Section "Monitor"

    # HorizSync source: edid, VertRefresh source: edid
    # 1920x1080 @ 60.00 Hz (GTF) hsync: 67.08 kHz; pclk: 172.80 MHz
    Identifier     "Monitor0"
    VendorName     "Unknown"
    ModelName      "DFP-0"
    HorizSync       0.8 - 188.8
    VertRefresh     1.0 - 120.0
    ModeLine       "1920x1080_60" 172.80 1920 2040 2248 2576 1080 1081 1084 1118 -hsync +vsync
    ModeLine       "2560x1440_60" 241.50 2560 2608 2640 2720 1440 1443 1448 1481 +hsync -vsync
    Option         "UseEDID" "False"
    Option         "UseEDIDDPI" "False"
    Option         "UseEDIDFreqs" "False"
    Option         "ExactModeTimingsDVI" "True"
EndSection

Section "Monitor"

#    DisplaySize     597    336
    Identifier     "Monitor1"
    VendorName     "Unknown"
    ModelName      "QX2700"
    DisplaySize     597    336
    HorizSync       0.8 - 188.8
    VertRefresh     1.0 - 120.0
    ModeLine       "1920x1080_60" 172.80 1920 2040 2248 2576 1080 1081 1084 1118 -hsync +vsync
    ModeLine       "2560x1440_60" 241.50 2560 2608 2640 2720 1440 1443 1448 1481 +hsync -vsync
    Option         "DPMS"
    Option         "UseEDID" "False"
    Option         "UseEDIDDPI" "False"
    Option         "UseEDIDFreqs" "False"
    Option         "ExactModeTimingsDVI" "True"
EndSection

Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "GeForce GTX 260"
EndSection

Section "Screen"

#    Option         "MultiGPU" "Off"
#    Option         "BaseMosaic" "off"
# Removed Option "metamodes" "DVI-I-2: 1920x1080_60.00 +0+0, DVI-I-3: 2560x1440_60.00 +1920+0"
# Removed Option "metamodes" "DVI-I-2: nvidia-auto-select +2560+240 {viewportin=1920x1200, viewportout=2304x1440+128+0}, DVI-I-3: nvidia-auto-select +0+0"
#    Option         "nvidiaXineramaInfoOrder" "DFP-0"
#    Option         "Stereo" "0"
#    Option         "metamodes" "DVI-I-2: 1920x1080_60.00 +2560+360 {viewportin=1920x1080}, DVI-I-3: nvidia-auto-select +0+0"
#    Option         "MultiGPU" "Off"
#    Option         "BaseMosaic" "off"
# Removed Option "metamodes" "DVI-I-2: 1920x1080_60.00 +2560+360 {viewportin=1920x1080}, DVI-I-3: 2560x1440_60.00 +0+0"
# Removed Option "metamodes" "DVI-I-2: 1920x1080_60 +2560+0, DVI-I-3: 2560x1440_60 +0+0"
    Identifier     "Screen0"
    Device         "Device0"
    Monitor        "Monitor1"
    DefaultDepth    24
    Option         "Stereo" "0"
    Option         "nvidiaXineramaInfoOrder" "DFP-1"
    Option         "metamodes" "DVI-I-2: 1920x1080_60_0 +2560+360, DVI-I-3: 2560x1440_60 +0+0"
    Option         "SLI" "Off"
    Option         "MultiGPU" "Off"
    Option         "BaseMosaic" "off"
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection

С этим конфигом проработал долгое время, пока мне не подарили новую видеокарту (GeForce GTX750) — она понимать отказалась, и такой конфиг работать перестал. В результате было найдено правильное и красивое решение проблемы.

Решение проблемы — красивое

Как оказалось, можно принудительно задать EDID-файл для выхода видеокарты куда подключен монитор. Это решает все проблемы — монитор определяется правильно и работает автоматически, ручная настройка не требуется.

Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "GeForce GTX 570"
    Option         "CustomEDID" "DFP-0:/etc/X11/qnix.edid"
    Option         "IgnoreEdidChecksum" "DFP-0"
    Option         "ModeValidation" "AllowNon60hzmodesDFPModes, NoEDIDDFPMaxSizeCheck, NoVertRefreshCheck, NoHorizSyncCheck, NoDFPNativeResolutionCheck, NoMaxSizeCheck, NoMaxPClkCheck"
EndSection

Теперь монитор можно настроить штатными средствами вашей оболочки через CLI или GUI!

Скачать файлы: