Selecting 144hz displays primarily 60, sometimes 144hz and won't work properly (AMD, MSI Freesync)

Hi, I’ve made a few posts about this on Reddit. Thread, Other thread. (Both are hyperlinks to r/linuxquestions).

Preamble: I just can’t seem to get my monitor to work properly on Linux, heck really any distro I’ve tried. I’ll split everything down in case anything gets archived:

Sometimes it’ll display 144hz totally fine, reverting back to 60 each time the screen shuts off. Most of the time it just shows 60hz. I checked my monitor settings and it says 144hz when displaying 60 on the screen I’m using an RX 580, MSI 31.5 inch “Optix MAG321CWR” monitor.

Some additional information on this, I tried plugging this monitor into my laptop and had a recent breakthrough of it actually not even showing the 144hz option, only showing up to 120hz on lower resolutions. Maybe a limitation with the output? I’m not totally sure. On my desktop 120hz works totally fine though which baffles me. It’s quite frustrating for this to be a persistent issue, as I’d really rather not compromise with a lower refresh rate when this works totally fine on Windows. I’m not really faulting anyone by mentioning that though. Mentioning as I know 144hz works on this monitor without issue.

Please feel free to ask away if I miss any details. This is a pretty loaded topic and I’m willing to work every step of the way to get this squared off.

Hi and welcome to the Forum :slight_smile:
Have you seen this thread?

Thank you for the friendly welcome and pointing to that thread! I’ll give that a look around.

Upon looking at this, I actually dug a bit through the Arch wiki and enabled “VariableRefresh” through the xorg conf before. Specifically notating here. It did not work. Thought I might as well clarify. I’ll boot into Tumbleweed and output my current xorg log if needed.

What input are you using, HDMI or Display Port?

Being limited to 120 Hz sounds like you might be using HDMI.

Did you try connecting the monitor with a different cable?

That’s a good question! I tried this with both DisplayPort and HDMI (latest of each, ordered multiple cables).

Yes display port 1.4 cable, what is your graphics card?

As in the OP, this is an RX 580. MSI branded 8gb vram. Here’s the specific model for convenience: MSI USA | MSI USA

DisplayPort 1.2a supports Freesync:

AMD supports Freesync only with DP, not with HDMI.

I made a longer post mixing up Variable refresh rate and Freesync. I see what you mean now. My mistake. I’ll plug in my DisplayPort and give this another go. Thank you for actually opening my eyes a bit to that. Will make another post directly testing Freesync and see where to go from there.

Unless I am doing something wrong, this is not working correctly.

    TearFree: on 
        supported: off, on, auto
    vrr_capable: 1 
        range: (0, 1)

I use xrandr -r 144 and set the config back to 144, works once, set back to 120, works fine, set back to 144hz, breaks and displays 60 while saying it’s on 144 in the settings.

I manually set vrr_capable to 1 and enabled TearFree with
xrandr --output DisplayPort-1 --set vrr_capable 1 && xrandr --output DisplayPort-1 --set TearFree on with:

Section "OutputClass"
        Identifier "AMDgpu"
        MatchDriver "amdgpu"
        Driver "amdgpu"
        Option "DRI" "3"
        Option "VariableRefresh" "true"
        Option "TearFree" "true"

In my /usr/share/X11/xorg.conf.d/10-amdgpu.conf.

Here’s my full list of props on my DisplayPort-1:

DisplayPort-1 connected primary 2560x1440+0+0 (normal left inverted right x axis y axis) 698mm x 393mm
    GAMMA_LUT_SIZE: 4096 
        range: (0, -1)
        range: (0, -1)
    GAMMA_LUT: 0 
        range: (0, 65535)
    CTM: -902496214 0 878424109 0 14557669 0 183134320 0 -246300576 0 68696554 0 36343176 0 250065808 0 
        -312657057 0 
        range: (0, 65535)
    TearFree: on 
        supported: off, on, auto
    subconnector: Native 
        supported: Unknown, VGA, DVI-D, HDMI, DP, Wireless, Native
    vrr_capable: 0 *# Maybe this could be an issue?*
        range: (0, 1)
    max bpc: 8 
        range: (8, 16)
    underscan vborder: 0 
        range: (0, 128)
    underscan hborder: 0 
        range: (0, 128)
    underscan: off 
        supported: off, on, auto
    scaling mode: None 
        supported: None, Full, Center, Full aspect
    link-status: Good 
        supported: Good, Bad
        supported: 70
    non-desktop: 0 
        range: (0, 1)
   2560x1440    143.97*+ 120.00    59.95  *# Take note of here. When the refresh rate reverts to 60, this still displays 144hz.*
   1920x1200    143.97  
   1920x1080    119.96    60.00    60.00    50.00    59.94  
   1600x1200    143.97  
   1680x1050    119.95    59.95  
   1280x1024    119.96    75.02    60.02  
   1440x900     119.98    59.89  
   1280x800     143.97  
   1280x720      60.00    50.00    59.94  
   1440x576      50.00  
   1024x768      75.03    70.07    60.00  
   1440x480      60.00    59.94  
   800x600       72.19    75.00    60.32    56.25  
   720x576       50.00  
   720x480       60.00    59.94  
   640x480       75.00    72.81    60.00    59.94  
   720x400       70.08  

Not hot-swapped. I specifically rebooted to curb that issue in the article. Therefore:

✘ sean@localhost  ~  DISPLAY=:0 xrandr --output DisplayPort-1 --set "freesync" 1
X Error of failed request:  BadName (named color or font does not exist)
  Major opcode of failed request:  140 (RANDR)
  Minor opcode of failed request:  11 (RRQueryOutputProperty)
  Serial number of failed request:  45
  Current serial number in output stream:  45

Freesync on the monitor is explicitly enabled. The monitor also grays out the option (afaik) if the cable does not support Freesync. Thank you for the pointers thus far. I apologize if this may be drawing parallels to the other thread on the first page, however our issues are fairly different so I see this as something that can be split into two.

ILL you need another settings with amdgpu-open: