High Resolutions

Configuring high resolution (like 5120×1440) under Linux

High resolution montiors are becoming quite common in remote desktops. To support your high resolution, basically you need to configure two services:

  • Xorg server to offer your resolution in the remote environment
  • DCV Server to allow your resolution inside of DCV session

Configuring Xorg server

You will need to have a xorg.conf file. If you are using NVIDIA driver, you need to create using this step (click here). If you are not, you can create with the command X -configure.

Important notes:

  • Usually is expected that automatic configurations work. Sometimes you need to manually add certain settings, like resolutions, to allow remote displays to use those resolutions. And sometimes this is not enough: you need to specify some values that maybe Xorg or your GPU driver can not calculate automatically, causing issues.
  • With manual tweaks you can make your high resolution available. We just recommend to restrict as little as possible, just adding extra changes if you are having issues with more generic configurations.
  • Remember to restart your Xorg server after every change in xorg.conf file. You can do that just killing the Xorg process (your display manager will open a new one) or restarting your display session (GDM, KDM, XDM etc). You do not need to restart DCV Server for Xorg server changes.

Then you need to add your custom resolution into xorg.conf file. You can add in two ways:

  1. If you are using NVIDIA driver, run nvidia-settings and add your custom resolution.
  2. If you are not using NVIDIA driver or nvidia-settings is not helping you, you need to edit xorg.conf manually.

In the xorg.conf file you need to go to Screen section and add your resolution:

Modes "5120x1440" "1920x1080" "1600x900" "1440x900" "1366x768" "1280x800" "1024x768"
virtual 5120 1440

For most of users, add “5120×1440” mode and increase the virtual setting will make your resolution available.

For very specific NVIDIA drivers, maybe you also to set DefaultDepth 24 in your Screen section, like this:

Section "Screen"
    Identifier "DummyScreen"
    Device "DummyDevice"
    Monitor "DummyMonitor"
    DefaultDepth 24
    SubSection "Display"
        Viewport 0 0
        Depth 24
        Modes "5120x1440" "1920x1080" "1600x900" "1440x900" "1366x768" "1280x800" "1024x768"
        virtual 5120 1440
    EndSubSection
EndSection

Depending of your display, EDID version, GPU driver and possibily other questions, will not be enough. If is your case, you need also to edit the Monitor section and add:

Modeline "5120x1440" 88.83 5120 5152 5232 5264 1440 1443 1445 1465

Explaining:

  1. “5120×1440” – This is the name of the mode, representing the resolution (width x height in pixels).
  2. 88.83 – This is the pixel clock in MHz. It represents how many millions of pixels the graphics card must send per second.
  3. 5120 – The horizontal resolution (width) in pixels.
  4. 5152 – The start of the horizontal sync pulse.
  5. 5232 – The end of the horizontal sync pulse.
  6. 5264 – The total width of the scanline, including blanking intervals.
  7. 1440 – The vertical resolution (height) in pixels.
  8. 1443 – The start of the vertical sync pulse.
  9. 1445 – The end of the vertical sync pulse.
  10. 1465 – The total height of the frame, including blanking intervals.

Obviously these values can be changed. This is an example that eventually can not work with your environment. The important thing to understand is that you are doing the configuration, avoiding eventual issues with Xorg, EDID, GPU driver etc.

If you still having problems with the resolution or is seeing some artifacts, maybe you are having some restriction with the display or driver due high bandwidth usage (a combination of high refresh rate with high resolution). If this is the case, try to reduce the fresh rate.

You can set a maximum Vertical refresh rate in the

Section "Monitor"
    Identifier "DummyMonitor"
    HorizSync   5.0 - 1000.0
    VertRefresh 5.0 - 60.0  # This limits the maximum refresh rate to 60Hz
    # ... other settings ...
EndSection

or in the Modeline like this:

Section "Monitor"
    Identifier "DummyMonitor"
    # ... other settings ...
    Modeline "5120x1440_60.00" 587.08 5120 5168 5200 5280 1440 1443 1453 1481 +hsync -vsync
EndSection

You can also try to set in Screen section this limit. Like this:

Section "Screen"
    Identifier "DummyScreen"
    Device "DummyDevice"
    Monitor "DummyMonitor"
    DefaultDepth 24
    SubSection "Display"
        Depth 24
        Modes "5120x1440_60.00" "5120x1440" "1920x1080" "1600x900" "1440x900" "1366x768" "1280x800" "1024x768"
    EndSubSection
EndSection

Other potential issue with high resolution is the DPI scaling configuration. You can control the DPI scaling using Xorg or your display manager. Using Xorg, you can change like this:

Section "Monitor"
    Identifier "DummyMonitor"
    Option "DPI" "96 x 96"  # Replace with your desired DPI
EndSection

Or instead of directly set the DPI, you can ask X to calculate it:

Section "Monitor"
    Identifier "DummyMonitor"
    DisplaySize 508 285  # Width and height in millimeters
EndSection
  • 508 is the width of the display in millimeters
  • 285 is the height of the display in millimeters

The DisplaySize option is particularly useful because it allows X to calculate the DPI automatically based on the resolution of your display and its physical size. X uses this formula:

DPI = (pixels * 25.4) / millimeters

Fore example, a 34-inch ultrawide monitor typically has an aspect ratio of 21:9. Calculating the width and height:

  1. Diagonal = 34 inches
  2. Aspect ratio = 21:9 = 2.33:1
  3. Width = 34 * cos(atan(1/2.33)) ≈ 31.3 inches ≈ 795 mm
  4. Height = 34 * sin(atan(1/2.33)) ≈ 13.4 inches ≈ 340 mm

Calculating the DPI:

Horizontal DPI = (pixels * 25.4) / millimeters
Vertical DPI = (pixels * 25.4) / millimeters

For 5120×1440 resolution:

Horizontal DPI = (5120 * 25.4) / 795 ≈ 163.5 DPI
Vertical DPI = (1440 * 25.4) / 340 ≈ 107.5 DPI

Soif you want to X calculate it, you need to set the physical size:

Section "Monitor"
    Identifier "UltrawideMonitor"
    DisplaySize 795 340  # Width and height in millimeters
EndSection

Or directly set the DPI:

Section “Monitor”
Identifier “DummyMonitor”
Option “DPI” “163 x 107” # Replace with your desired DPI
EndSection

Just remember that different sizes of horizontal and vertical DPIs are not supported for most of the applications. Try to use equal values.

Configuring DCV Server

Open your /etc/dcv/dcv.conf and set the max-head-resolution with a resolution equal or greater when compared with the resolution that you want to achieve. For example:

[display]
max-head-resolution = "(7680, 2160)"

Then you need to restart DCV Server (systemctl restart dcvserver). You do not need to restart the Xorg server.

Troubleshooting Xorg server for high resolutions

  • In case that you can not get the high resolution working, the main log that will help you is the Xorg.log (under /var/log/). Read your log (mainly after it load your video driver module) and look for EE (errors) messages.
  • If you are using NVIDIA driver, please try to update to the latest stable version that is possible. After decided which version you can use, read the release notes of that driver, so you can have an idea about the known bugs and issues that NVIDIA is trying to fix. They can be related with your issue.
  • Try to reduce your refresh rate with high resolutions. As this combination can require more data to be transmited (bandwidth) you maybe are being limited by some display interface. If some restriction is happening, you can also see artifacts.
  • If your network support all the bandwidth needed for your configuration, you can see artifacts, lag and latency issues. Try to use UDP/QUIC protocol without use VPN as a test. Usually VPNs adds a lot of overhead in the transmission.
  • Scaling DPI can cause issues with high resolution.

If you need some help here, please execute the Collect DCV Logs script (click here) and send the compressed file to the support. If you are seeing any error with your DCV Viewer (client), please also attach your viewer.log to the support. You can find DCV Viewer logs here.

High resolution and tiny fonts and icons

Newer displays and notebooks are coming with very high resolutions what can cause some consequencies like very tiny fonts and icons. You can add a parameter in the DCV Client to fix that.

Linux

--scaling-mode scaling

Windows

dcvviewer.exe --scaling-mode scaling