Can't create new custom resolution on Wayland

I wanted to create a new custom resolution for my ultrawide monitor, because my graphics card can’t handle UWQH (3440x1440) in most games. I tried modifying my grub files and then updating it via the ‘sudo grub2-mkconfig -o /boot/grub2/grub.cfg’ command. But when I restart, the resolution doesn’t show up in settings.
My specs are:
Kernel Version 6.8.4
Mesa Driver 23.3.6
Fedora Linux 39 with Gnome and Wayland
Rx 6650xt
Amd Ryzen 7 5700x
If I run the command, it shows ‘Found Windows Boot Manager on…’ This is because I dualboot with Windows, could this be the issue? If it is I don’t know how to change it to modifiying Linux.
I also know that you can create a custom resolution with X11, but I want to use Wayland because it looks like Wayland will have better Features in the future and will be used (or is now used) on almost all Distrobutions. I would be happy if someone could help me because I don’t know much about this topic.

Wayland, as I understand it, only allows you to pick resolutions that the monitor supports.
You can try scalling the screen that should result in a lower resolution.
Don’t the games have a config to use a lower resolution in the game?
All the games I play from Steam have this option.

I want to play on 2560x1080, which my monitor supports (works on windows and on x11). Also I can only scale by 200 and 300 which I don’t want. I want to play Minecraft with a shader (which works on 2560x1080 with good performance and lower temperatures). And also it requires the games on steam that the resolution is in settings (I tried it out)

If it supports that resolution then you should be offer it as a choice.
Which desk top are you using?
What does xrandr report are the available modes?

I’m using Gnome if you mean that and Xrandr doesn’t show the resolution I want (it shows it on the bottom because I tried it with X11)

login as wayland and run xrandr it should show the modes the monitor claims to support from its EDID. It should not show your X11 special as you will not be running X11.

I thought that the resolution at the bottom is due to the xrandr commands which I execute when I start my Computer

Now I removed the commands from autostart and the resolution isn’t there anymore

I am not sure if setting parameters that cause the video being sent to the monitor to become parameters the monitor does not directly support is a good idea.

Figure out which monitor (card1 DP-2 in my case)


For the monitor connected to DP-2 on card1 find parameters/supported resolutions

di-edid-decode /sys/class/drm/card1-DP-2/edid

I am under the impression that if the monitor receives a signal with parameters that are not supported at best it will convert the signal into one it does support. This conversion is less optimal than using supported parameters, especially the primary/native parameters.

You must pick one one of the resolutions from the list.
If it is not in the list the monitor does not support it.

Did my suggestion to use scaling work for you?

On a CRT you could add mode lines to change how a multi-scan monitor’s resolution.
But with a digital monitor that is does not work.
Only the modes that the software+hardware in the monitor can map onto the LCD panel in the monitor can be supported.
Onless there is a bug in the monitor all its modes will be defined in the EDID that monitor reports to the GPU.

Yes, it worked, kinda. I can only scale by 200 or 300%. And it doesn’t change how the game is rendered so it renders still at UWQHD. I guess my monitor supports the resolution I want because I can easily do it with Windows and X11

I am still curious.

Run the commands that display the EDID data from the monitor (post 9). Does it list the 2560x1440 resolution? If it does, it should be a choice under wayland. I just do not see where you ran the commands. Please forgive me if I am missing something.

I use KDE Plasma and that can scale in fractions. I use 125% at the moment.

It shows the 2560x1440 resolution. But I want 2560x1080 because I have an ultrawide monitor

So here is my thinking from what is included in this post, the monitor does not support 2560x1080 and in x11 or mswindows using 2560x1080 gets converted to something else.

When the OS reports the resolution is at 2560x1080 what does the monitor report? If you bring up the monitor’s osd does it display the current resolution?

Are there any bands of unused pixels? Does the rendering look stretched vertically maybe even with missing content on either side?

If the monitor is supporting 2560x1080 I don’t know why it is not included in the EDID. That would be something new I could learn.

On X11 it works perfectly. The Monitor shows 2560x1080, there are no unused pixels and nothing is streched. I don’t know why it doesn’t show up in settings too, and so I posted my problem here

After a bit of searching it looks like your monitor has invalid edid. If the manufacturer has updated firmware that could be helpful. It seems many monitor manufacturers ship monitors with invalid edid and never correct it. The linux kernel can override the monitor’s edid with a edid copied into the /lib/firmware/edid directory and providing an appropriate kernel parameter (for the initrd as well). MSWindows has a scheme to override edid and xorg can use modelines for configuration. For wayland, which uses kms, overriding the edid seems the only way.

Does your monitor manufacturer publish corrected edid for your monitor? Updated firmware?

What is the modeline you use in x11 for 2560x1080 (there are methods to generate edid from x11 modelines)?

There also seem to be ways to extract the edid in mswindows and use it on linux.

None of the articles found so far provide a method to add a mode to the edid that can be extracted from the monitor. How many modes do you want to use? It is possible to construct a custom edid with all of them but I still need to learn more before attempting it.

1 Like

Woah, that’s a lot of questions. I’m quite a noob and new too linux. Ok, I try too answer everything.
I have a Samsung Odyssey G5 Ultrawide Monitor and I did’t update its firmware. I thought it could be done with a USB stick. I updated my resolution on X11 via the xrandr command if you mean that (I don’t really understand modelines, are they just a lines of code?).
If I understand it right what you said, I can overwrite the EDID, which is the information about the monitor. Can I just update my monitors frimware or do I have to do it on linux?
I’m sorry if I did’t answered your questions right, I’m new to linux and there’s much to learn.

Samsung seems to have a firmware update procedure but your monitor may not be included in what they support.

The next scheme is to get linux to ignore the edid the monitor presents and use custom edid instead. The monitor edid is not touched.

I see the mode line in an image earlier in this post. If you could instead copy and paste the results into a blockquote as text I would be able to copy the text. I think it would work to capture the output of

xrandr --verbose

Next I would attempt to generate a 2560x1080_165_00.bin you could use that tells linux your monitor has this resolution. Initially it would tell linux your monitor only has this resolution. But if it works the next step would be to generate edid that has multiple resolutions.

Some pre-made edid can be found here along with a way to generate others.

If you would like to do this all yourself instead, please post your process as I find this fascinating.

1 Like