Невозможно добавить новый режим в xrandr для внешнего монитора.


16

Сегодня я пытался подключить второй монитор к ноутбуку. У меня есть:

  • видеокарта nvidia
  • 304.43 драйвера [поддержка xrandr 1.2]
  • archlinux [актуальный]
  • офигенно
  • Xrandr 1,3

Моя проблема с большим разрешением, чем 640x480 для моего внешнего монитора (VGA). xrandr -q:

Screen 0: minimum 8 x 8, current 1920 x 800, maximum 8192 x 8192
VGA-0 connected 640x480+1280+0 (normal left inverted right x axis y axis) 0mm
   640x480        59.9*+
   320x240       120.1  
LVDS-0 connected 1280x800+0+0 (normal left inverted right x axis y axis) 331m
   1280x800       59.9*+
HDMI-0 disconnected (normal left inverted right x axis y axis)

Как мы видим, у VGA нет более высокого разрешения, поэтому я добавляю новый режим:

xrandr --newmode $(gtf 1280 1024 70.4 | grep Modeline | sed s/Modeline\ // | tr -d '"')

Я проверил доступное разрешение и частоту обновления под окнами: один из них был 1024x768x70 (OSD моего монитора сказал, что это 70.4HZ). После создания нового режима я хотел добавить его:

xrandr --addmode VGA-0 1280x1024_70.40

И ... Это не удалось:

X Error of failed request:  BadMatch (invalid parameter attributes)
  Major opcode of failed request:  153 (RANDR)
  Minor opcode of failed request:  18 (RRAddOutputMode)
  Serial number of failed request:  29
  Current serial number in output stream:  30

Из Google я узнал, что в старых драйверах xrandr / nvidia была проблема со списком доступных режимов, но теперь с поддержкой драйверов xrandr 1.2 драйверами nvidia это должно быть лучше. Я также пытаюсь с более низким разрешением и частотой обновления (например, 1024x768x50), но у меня та же ошибка. У меня нет идей, что делать с этой проблемой ...

Ответы:


11

Я не уверен, что вы создали строку, следующую xrandr --newmodeза вами, или скопировали ее откуда-то еще, но она не будет работать в ее текущей форме.

Я рекомендую сделать это шаг за шагом.

Сначала вам нужно сгенерировать новый режим. Я рекомендую использовать 60 Гц с ЖК-дисплеем или 85 Гц с ЭЛТ-монитором

gtf 1280 1024 60

Вы получите что-то вроде:

 # 1280x1024 @ 60.00 Hz (GTF) hsync: 63.60 kHz; pclk: 108.88 MHz 
 Modeline "1280x1024_60.00"  108.88  1280 1360 1496 1712  1024 1025 1028 1060  -HSync Vsync

Затем представьте этот режим для xrandrиспользования --newmode(скопируйте и вставьте строку, начинающуюся с 'Modeline'.

 xrandr --newmode "1280x1024_60.00"  108.88  1280 1360 1496 1712  1024 1025 1028 1060  -HSync Vsync

Затем добавьте этот режим в VGA-0:

xrandr --addmode VGA-0 "1280x1024_60.00"

И, наконец, вы можете использовать этот новый режим:

 xrandr --output VGA-0 --mode 1280x1024_60.00

Вы правы, я не создаю это: xrandr --newmode $(gtf 1280 1024 70.4 | grep Modeline | sed s/Modeline\ // | tr -d '"')сам, но я разбил это на маленькие части, чтобы посмотреть, как это работает, сначала gtf 1280 1024 70.4, затем с grep и, наконец, с sed и tr. Он выдает тот же результат, который у вас есть в вашем xrandr --newmodeфайле с одной разницей - у вас есть "1280x1024_60.00", I have 1280x1024_60.00` - в конце я использую tr -d '"'для удаления '"'. К сожалению, у меня все еще та же ошибка.
Borgo

Почему такая странная частота обновления? 70,4? Используйте 60 Гц, если это LCD или 85 Гц в случае ЭЛТ. И делайте это шаг за шагом, именно так, как я написал.
Павел Румиан

Теперь я попытался сделать это шаг за шагом, используя 60 Гц, и у меня все та же ошибка.
Борго

1
Мое разрешение 1280x1024, и я пытаюсь сделать (newmode) / add (addmode) этот режим:"1280x1024_60.00" 108.88 1280 1360 1496 1712 1024 1025 1028 1060 -HSync +Vsync
Borgo

1
Все та же ошибка: X Error of failed request: BadMatch (invalid parameter attributes) Major opcode of failed request: 153 (RANDR) Minor opcode of failed request: 18 (RRAddOutputMode) Serial number of failed request: 29 Current serial number in output stream: 30 изменились только два последних числа.
Борго

4

У меня была эта ошибка BadMatch Error, пока я не удалил ранее добавленное «1280x1024_60.00», потому что он никогда не мог успешно использовать режим двойных кавычек. В конце концов, понял, что лучшее название для режима помогло.

Поэтому я удалил «1280x1024_60.00», запустив следующее как обычный пользователь:

$ xrandr --version 
reports 1.4.0 and 1.4
$ xrandr | grep 1280 #Do you see any 1280x1024 anywhere?  Does it have double quotes?
$ xrandr --verbose --delmode VGA1 '"1280x1024_60.00"'
$ xrandr --verbose --rmmode '"1280x1024_60.00"' 

Удаление и удаление нежелательной почты в системе часто не работало или возвращалось, даже если бы я удалил ее из своей учетной записи и пользователя root. Обычно он возвращается под именем VIRTUAL1 вместо VGA1.

Мне было гораздо проще выйти из барахла и добавить письмо в конце моего недавно созданного режима и даже сбросить .00, поэтому 1280x1024_60B . Обратите внимание, ниже есть двойные кавычки вокруг параметра --newmode, но НЕ --addmode и --mode

$ xrandr --verbose --newmode "1280x1024_60B" 108.88 1280 1360 1496 1712 1024 1025 1028 1060 -HSync +Vsync
$ xrandr --verbose --addmode VGA1 1280x1024_60B
$ xrandr --verbose --output VGA1 --mode 1280x1024_60B

Немного мерцает экран, и мой внешний 19 "квадратный монитор работает с разрешением 1280x1024.


Это было единственное решение после нескольких часов исследований, которые сработали, большое спасибо, вы спасли мой день. Приветствия
Шанил Сони

Однако настройка теряет после сеанса, какое-либо решение, чтобы сделать его постоянным?
Шанил Сони

0

Если вы используете Linux на виртуальной машине (в частности, VirtualBox), убедитесь, что у виртуальной машины достаточно видеопамяти.

Слишком мало видеопамяти вызывает эту ошибку при попытке запустить xrandr.


0

Я трачу 2 часа, чтобы решить подобную проблему, и проблема была в кабеле VGA. Заменить кабель VGA. Я могу изменить разрешение на 1920x1080 без использования xrandr или xorg, это очень странно.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.