Skip to content

Custom Resolutions And Refresh Rates

Wouter edited this page May 14, 2019 · 13 revisions

Table of Contents generated with DocToc

Warning!

Valve, nor the author of this section is responsible for damage to your system! Modifying the resolution of Big Picture Mode (running on top of steamcompmgr) in SteamOS is an advanced action, and should not be attempted by novice users. Proceed at your own risk.

There are plans to officially add this functionality, but there is some more work to be done within the Steam client itself and additional plumbing to let people decide if they want to run a given game at 4K or not, and to opt into 4K native support to begin with, to limit performance and compatibility problems.There are many TVs out there right now where making that change would net you a blank 'no signal' screen without any recourse.

Note that if you chose to do this yourself in the short term, you should probably also add -fulldesktopres to the Steam client arguments in /usr/bin/steamos-session in order to take advantage of the extra DPI in the system UI, not just in games.

Before we begin

Please ensure you have set the desktop user password and enabled access to the Linux desktop in Settings > Display > Interface. Exit to the desktop by clicking the power button icon in the top right of the main BPM/SteamOS screen, and choose "Exit to desktop." We will be editing these configuration though Gnome Terminal. As for editing the below files mentioned, you can use any editor you choose. The most popular tend to be vim (requires some knowledge) or nano (easier for beginners).

Example from a command-line Terminal Window:

nano file.txt

Process

Currently SteamOS only supports the 1920x1080 and 1280x720 at 60 or 59.9 hz. Using other resolutions like 3840x2160 or 2560x1440 and using different refresh rates like 144 and 120 hz are not possible by default.

The developer behind VaporOS found that this is because the script /usr/bin/steamos/set_hd_mode.sh found in the steamos-compositor package, which is used to set the resolution, doesn't consider those options. Making the following change to the script should make SteamOS able to use higher resolutions or refresh rates.

First you'll need to check which resolution and framerate combinations are supported by your monitor and graphics card. You can get a list with the xrandr command, which will look something like this:

[desktop@steamos ~]$ xrandr
Screen 0: minimum 8 x 8, current 2560 x 1440, maximum 16384 x 16384
DVI-I-0 disconnected (normal left inverted right x axis y axis)
DP-0.8 connected primary 2560x1440+0+0 (normal left inverted right x axis y axis) 553mm x 311mm
   2560x1440     59.95 +
   2048x1152     60.00  
   1920x1200     59.88  
   1920x1080     60.00*    59.94    50.00    29.97    25.00    23.97    60.05    60.00    50.04  
   1680x1050     59.95  
   1600x1200     60.00  
   1280x1024     75.02    60.02  
   1280x720      60.00    59.94    50.00  
   1200x960      59.90  
   1152x864      75.00  
   1024x768      75.03    60.00  
   800x600       75.00    60.32  
   720x576       50.00    50.08  
   720x480       59.94    60.05  
   640x480       75.00    59.94    59.93  
DVI-I-1 disconnected (normal left inverted right x axis y axis)
HDMI-0 disconnected (normal left inverted right x axis y axis)
DP-0 disconnected (normal left inverted right x axis y axis)
DP-1 disconnected (normal left inverted right x axis y axis)
DVI-D-0 disconnected (normal left inverted right x axis y axis)

To use the highest resolution found in this example, we'd have to add a resolution and a refresh rate to /usr/bin/steamos/set_hd_mode.sh

Editing:

sudo nano /usr/bin/steamos/set_hd_mode.sh

set_hd_mode.sh before editing

      return 1
  }

  GOODMODES=("1920x1080" "1280x720")
  GOODRATES=("60.0" "59.9") # CEA modes guarantee or one the other, but not both?

  # First, some logging

set_hd_mode.sh after editing

      return 1
  }

  GOODMODES=("2560x1440" "1920x1080" "1280x720")
  GOODRATES=("60.0" "59.95" "59.9") # CEA modes guarantee or one the other, but not both?

# First, some logging

Note that the first options in GOODMODES and GOODRATES are preferred by the script, if you were you add your preferred resolution after another functional resolution, it would never be picked.

Desktop mode

This script does not run when the desktop mode is launched, which means the Gnome gets to decide which resolution it uses. This could result in 'no signal' when launching the desktop. You can force set_hd_mode.sh to run by creating a file like /home/desktop/.config/autostart/set_hd_mode.desktop with the following content:

[Desktop Entry]
Type=Application
Exec=/usr/bin/steamos/set_hd_mode.sh
X-GNOME-Autostart-enabled=true
Name=sethdmode

Applying the changes

To apply the changes you just have to save them and reboot the machine or restart the window manager(can be forced by killing Steam). In this example SteamOS would use the 2560x1440 resolution at 59.95 hz after that.

Issues tickets in progress regarding this matter

Clone this wiki locally