Два монитора на одном терминале

Начиная с версии 5.1.21, в WTware появилась поддержка двух мониторов.

Список драйверов video=, с которыми два монитора могут заработать:

  • video = gma(F)
  • video = i915(F)
  • video = nouveau(F)
  • video = radeon(F)
  • video = via(F)
  • video = ati(U)
  • video = intel(U)
  • video = nouveau(U)
  • video = openchrome(U)

C другими video= второй монитор не заработает. С VESA тоже не заработает.

Может заработать только на видеокартах, имеющих два или больше видеовыходов. Две видеокарты в одном компьютере в данный момент работать не будут.

Известно, что два монитора не работают на процессорах D2500..D2700, платформа Cedar Trail. Картинка на втором мониторе искажается. Проблема драйвера, ждем когда создатели ядра исправят. На всех остальных не слишком старых графических чипах два монитора удавалось запустить.

Второй монитор включается параметром M2_display. Пример:

video=i915(f)
display=1280x1024,VGA
M2_display=1366x768,DVI

Разрешение должно совпадать с физическим разрешением монитора, иначе изображение будет плохим. VGA и DVI указывают видеовыходы, к которым подключены мониторы. Видеовыходы обязательно надо указать. Варианты: VGA, DVI, HDMI, LVDS, DP, VGA2, DVI2, HDMI2, LVDS2, DP2. Обычно значение с двойкой указывает второй выход такого типа. Но иногда драйвер ошибается, например на материнской плате ASRock E350M1 разьем DVI надо в конфиге указывать как HDMI2. Это сложно объяснить, проще посмотреть в лог и напрячь интуицию. Вот кусок лога с терминала на ASRock E350M1:

[KERNEL] [drm] Radeon Display Connectors
[KERNEL] [drm] Connector 0:
[KERNEL] [drm]   HDMI-A-1
[KERNEL] [drm]   HPD1
[KERNEL] [drm]   DDC: 0x6430 0x6430 0x6434 0x6434 0x6438 0x6438 0x643c 0x643c
[KERNEL] [drm]   Encoders:
[KERNEL] [drm]     DFP1: INTERNAL_UNIPHY
[KERNEL] [drm] Connector 1:
[KERNEL] [drm]   HDMI-A-2
[KERNEL] [drm]   HPD2
[KERNEL] [drm]   DDC: 0x6440 0x6440 0x6444 0x6444 0x6448 0x6448 0x644c 0x644c
[KERNEL] [drm]   Encoders:
[KERNEL] [drm]     DFP2: INTERNAL_UNIPHY
[KERNEL] [drm] Connector 2:
[KERNEL] [drm]   VGA-1
[KERNEL] [drm]   DDC: 0x64d8 0x64d8 0x64dc 0x64dc 0x64e0 0x64e0 0x64e4 0x64e4
[KERNEL] [drm]   Encoders:
[KERNEL] [drm]     CRT1: INTERNAL_KLDSCP_DAC1

Сразу видно, что драйвер не знает о наличии DVI, а видит два выхода HDMI. Первый HDMI распаян на материнской плате разъемом HDMI. То, что драйвер считает вторым HDMI, на материнской плате выведено на разъем DVI. Поэтому для физически подключенного на DVI монитора в конфиге для этой материской платы вместо DVI надо писать HDMI2.

Расположение мониторов друг относительно друга указывается парметром M2_position:

M2_position = right-bottom

Означает, что второй монитор находится справа от первого монитора, и они выровнены по нижнему краю. Выравнивание по нижнему или верхнему краю важно, если разрешение мониторов разное. Если разрешение мониторов одинаковое, то значения M2_position=right, M2_position=right-top и M2_position=right-bottom дадут одинаковый результат.

Второй монитор может работать в двух режимах:

  • 1. Можно растянуть одну RDP сессию на два монитора. Так же, как это делает mstsc.exe. Для использования второго монитора в этом режиме в конфиге не надо писать никаких специальных параметров, кроме M2_display= и M2_position=. Терминал увидит указание использовать второй монитор, но не найдет в конфиге отдельных сессий для второго монитора, и автоматически попытается растянуть сессию на оба монитора. Если терминальный сервер его поймет. 2008R2 два монитора понимает, 2003 не понимает.
  • 2. Отдельные наборы виртуальных экранов и подключений на разных мониторах. На втором мониторе может отображаться такой же список экранов и подключений, как и на одном мониторе, свой отдельный список. Начинается с волшебного слова:
    M2_next screen

    Затем все то же самое, что и для первого монитора. Каждый следующий виртуальный экран на втором мониторе начинается словом M2_next screen.

    Такой конфиг сделает меню из двух пунктов на первом мониторе и другое меню из трех пунктов на втором мониторе:

    video=i915(f)
    display=1280x1024,VGA
    M2_display=1366x768,DVI
    connection c1
    connection c2
    M2_next screen
    connection c2
    connection c3
    connection c4

    Другой пример. На первом мониторе два виртуальных экрана, на каждом по одному соединению, с оединения запускаются сразу при загрузке терминала. На втором мониторе два виртуальных экрана, на каждом свое меню.

    video=i915(f)
    display=1280x1024,VGA
    M2_display=1366x768,DVI
    connection c1
    next screen
    connection c2
    M2_next screen
    connection c2
    connection c3
    connection c4
    M2_next screen
    connection c5
    connection c6
    connection c7


Появились комментарии, поправки к этой статье? Пожалуйста, напишите в форум!