145

I tried to use xrandr to set 1680x1050 as a new mode to VGA output, but it says:

sudo xrandr --addmode VGA-0 1680
X Error of failed request:  BadMatch (invalid parameter attributes)
Major opcode of failed request:  140 (RANDR)
Minor opcode of failed request:  18 (RRAddOutputMode)
Serial number of failed request:  35
Current serial number in output stream:  36
Dagelf
  • 1,245
user216356
  • 1,451

6 Answers6

231

First generate a "modeline" by using cvt
Syntax is: cvt width height refreshrate

cvt 1680 1050 60

this gives you:

# 1680x1050 59.95 Hz (CVT 1.76MA) hsync: 65.29 kHz; pclk: 146.25 MHz
Modeline "1680x1050_60.00"  146.25  1680 1784 1960 2240  1050 1053 1059 1089 -hsync +vsync

Now tell this to xrandr:

xrandr --newmode "1680x1050_60.00"  146.25  1680 1784 1960 2240  1050 1053 1059 1089 -hsync +vsync

Then you can now add it to the table of possible resolutions of an output of your choice:

xrandr --addmode VGA-0 1680x1050_60.00

The changes are lost after reboot, to set up the resolution persistently, create the file ~/.xprofile with the content:

#!/bin/sh
xrandr --newmode "1680x1050_60.00"  146.25  1680 1784 1960 2240  1050 1053 1059 1089 -hsync +vsync
xrandr --addmode VGA-0 1680x1050_60.00

You need to replace VGA-0 with your monitor connection. Use xrandr --listmonitors.

Elder Geek
  • 36,023
  • 25
  • 98
  • 183
thom
  • 7,542
23

How to set a custom resolution previously specified. After executing the other steps defined to create the resolution, run:

xrandr -s 1680x1050
Eric Leschinski
  • 2,221
  • 1
  • 20
  • 24
GuiRitter
  • 331
  • This yield an error: Size [width]x[height] not found in available modes – aggregate1166877 Jan 30 '23 at 00:23
  • You have to do both "--newmode" to define a mode ("add mode to server") and "--addmode" to allow the newly added mode to be used for a given output ("add mode to output connetor"). Only then you can activate that mode for that output. – Mikko Rantalainen Oct 17 '23 at 13:14
14

How to set a custom resolution previously specified when running multiple monitors. After executing the other steps defined to create the resolution, run:

xrandr --output DVI-0 --mode 1680x1050

Replace DVI-0 with your device-id, e.g. VGA-0

zwessels
  • 267
13

Thanks to thom and thirdender this is basically a single command configuration based on the most voted answer.

RES="1920 1200 60" && \
DISP=$(xrandr | grep -e " connected [^(]" | sed -e "s/\([A-Z0-9]\+\) connected.*/\1/") && \
MODELINE=$(cvt $(echo $RES) | grep -e "Modeline [^(]" | sed -r 's/.*Modeline (.*)/\1/') && \
MODERES=$(echo $MODELINE | grep -o -P '(?<=").*(?=")') && \
cat > ~/.xprofile << _EOF
#!/bin/sh
xrandr --newmode $MODELINE
xrandr --addmode $DISP $MODERES
_EOF

The above command will generate the desired ~/.xprofile file. Just make sure you use the resolution (i.e. the RES variable) of your liking. More info here.

You could replace

xrandr | grep -e " connected [^(]" | sed -e "s/\([A-Z0-9]\+\) connected.*/\1/"

with

xrandr | grep -e " connected [^(]" | cut -d\  -f1

in $DISP variable if that does not work for you.

Gryu
  • 7,559
  • 9
  • 33
  • 52
Tanasis
  • 476
  • 5
  • 8
  • Thanx for this one. It did the job for me. But to make it work, the user should run "cvt 1920 1200 60" command first. Because resolution isn't exist yet. – deeptionary May 13 '21 at 10:22
  • The script contains MODELINE=$(cvt $(echo $RES) ... which will run the required cvt command to generate the correct modeline. – Mikko Rantalainen Oct 17 '23 at 13:02
3

Definitely you have to take a look at autorandr, there seems to be no easier way.

This is the man page (from Ubuntu): http://manpages.ubuntu.com/manpages/bionic/man1/autorandr.1.html

And this is the source code: https://github.com/phillipberndt/autorandr

Install it in Ubuntu with:

sudo apt install autorandr

Then just save your current config with:

autorandr -s myFaveConfig

and change config and save others with

autorandr -s myOtherConfig

Then just apply them whenever you want with:

autorandr [theConfigIwant]

for example:

autorandr myFaveConfig

will load the first config you saved in this example.

Nothing easier !!

0

Have you already installed the nvidia video driver? I had problems with low resolution and discovered that my system was without nvidia driver. I don't have the exact command now, but is something like this, I suggest doing a resarch for it:

sudo apt install nvidia-driver-[version]