Two displays on one terminal

In WTware 5.1.21 we added support of two displays.

Two displays may work with these video= drivers:

  • 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)

With other video= values second display won't work. And with VESA also it won't work.

This feature can work only if terminal video card has two or more video outputs. Two video cards in one computer are not supported now.

As our tests show two monitors don't work on D2500..D2700 processors, Cedar Trail platform. Image on second screen is incorrect. It's driver problem, we're waiting for kernel developers to fix it. With all others not too old graphic chips we managed to make two monitors work.

Second display is turned on by M2_display parameter. For example:

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

Resolution must be the exact physical monitor resolution. VGA and DVI keywords mean the video outputs where monitors are connected. Specifying video outputs is required. Possible values: VGA, DVI, HDMI, LVDS, DP, VGA2, DVI2, HDMI2, LVDS2, DP2. Usually value with number 2 means second output of this type. But sometimes driver mistakes, for example for ASRock E350M1 motherboard DVI should be specified in configuration file as HDMI2. It's hard to explain. Better look at t erminal log and try to see it. Here's part of terminal log with ASRock E350M1 motherboard:

[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

As you may see driver sees two HDMI outputs and no DVI. First HDMI on motherboard is HDMI connector. Second determined by driver HDMI is DVI connector on motherboard. That's why for physically connected to DVI display and this motherboard should be specified HDMI2 in configuration file.

Relative position of two displays is specified by M2_position parameter:

M2_position = right-bottom

Which means that second display is positioned to the right of the first monitor, and they are bottom aligned. Bottom or top alignment is significant if resolutions are not the same. If resolutions are equal, then values M2_position=right, M2_position=right-top and M2_position=right-bottom will give the same result.

Second display can work in two modes:

  • 1. One RDP session on two displays. The same as mstsc.exe does. For this mode no special parameters except M2_display= and M2_position= are needed on configuration file. Terminal finds instruction to use second display, sees no individual sessions for second display and automatically tries to stretch session on two displays. Of course if terminal server supports this feature - 2008R2 supports two displays, 2003 doesn't.
  • 2. Individual virtual screens and connections on each display. Just the same as on one display, separate list. Starts from magic word:
    M2_next screen

    The everything is the same as for the first display. Each next virtual screen starts from the word M2_next screen.

    Example of configuration file with menu with two items on the first display and another menu with three items on the second display:

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

    Another example. On the first display: two virtual screens, each with one connection, that start immediately on terminal start. On the second display: two virtual screens, each with menu.

    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


If you have any comments or remarks to this article, please, let us know!