Nie można dodać nowego trybu w xrandr dla zewnętrznego monitora

16

Dzisiaj próbowałem podłączyć drugi monitor do notebooka. Mam:

  • karta graficzna NVIDIA
  • Sterowniki 304,43 [obsługa Xrandr 1.2]
  • archlinux [na ​​bieżąco]
  • niesamowite wm
  • xrandr 1.3

Mój problem dotyczy rozdzielczości większej niż 640 x 480 dla mojego monitora zewnętrznego (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)

Jak widzimy, nie ma wyższej rozdzielczości dla VGA, więc dodaję nowy tryb:

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

Sprawdziłem dostępną rozdzielczość i częstotliwość odświeżania pod oknami: jeden z nich miał 1024 x 768 x 70 (OSD mojego monitora powiedział, że jest 70,4 Hz). Po utworzeniu nowego trybu chciałem go dodać:

xrandr --addmode VGA-0 1280x1024_70.40

I ... Nie udało się:

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

Z Google dowiedziałem się, że w starszych sterownikach xrandr / nvidia był problem z listą dostępnych trybów, ale teraz przy wsparciu xrandr 1.2 przez sterowniki nvidia powinno być lepiej. Próbuję też z niższą rozdzielczością i częstotliwością odświeżania (np. 1024x768x50), ale mam ten sam błąd. Nie mam pomysłów, co zrobić z tym problemem ...

Borgo
źródło

Odpowiedzi:

11

Nie jestem pewien, czy sam utworzyłeś ciąg znaków, xrandr --newmodeczy skopiowałeś go gdzie indziej, ale nie będzie działał w obecnej formie.

Polecam to robić krok po kroku.

Najpierw musisz wygenerować nowy tryb. Polecam używanie 60 Hz z wyświetlaczem LCD lub 85 Hz z monitorem CRT

gtf 1280 1024 60

Otrzymasz coś takiego:

 # 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

Następnie zaprezentuj ten tryb za xrandrpomocą --newmode(skopiuj i wklej wiersz zaczynający się od „Modeline”).

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

Następnie dodaj ten tryb do VGA-0:

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

I wreszcie możesz użyć tego nowego trybu:

 xrandr --output VGA-0 --mode 1280x1024_60.00
Paweł Rumian
źródło
Masz rację, nie tworzę tego: xrandr --newmode $(gtf 1280 1024 70.4 | grep Modeline | sed s/Modeline\ // | tr -d '"')sam, ale najpierw kładę to na małe kawałki, aby najpierw sprawdzić, jak to działa, najpierw gtf 1280 1024 70.4z grep, a na końcu z sed i tr. Daje to samo wyjście, które masz w swoim xrandr --newmodejednym diffie - masz "1280x1024_60.00", I have 1280x1024_60.00` - na końcu używam tr -d '"'do usunięcia ''. Niestety nadal mam ten sam błąd.
Borgo
Dlaczego tak dziwna częstotliwość odświeżania? 70,4? Użyj 60 Hz, jeśli jest to ekran LCD lub 85 Hz w przypadku CRT. I rób to krok po kroku, dokładnie tak, jak napisałem.
Paweł Rumian,
Teraz próbowałem zrobić to krok po kroku, używając częstotliwości 60 Hz i nadal mam ten sam błąd.
Borgo
1
Moja rozdzielczość to 1280x1024 i staram się ustawić (nowy tryb) / dodać (tryb add) w tym trybie:"1280x1024_60.00" 108.88 1280 1360 1496 1712 1024 1025 1028 1060 -HSync +Vsync
Borgo,
1
Nadal ten sam błąd: 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 zmieniły się tylko dwie ostatnie liczby.
Borgo
4

Miałem problem z błędem BadMatch, dopóki nie usunąłem wcześniej dodanego „1280x1024_60.00”, ponieważ nigdy nie mógł pomyślnie użyć trybu podwójnego cytowania. W końcu udało się uzyskać lepszą nazwę trybu.

Więc usunąłem „1280x1024_60.00”, wykonując następujące czynności jako zwykły użytkownik:

$ 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"' 

Usuwanie i usuwanie śmieci w systemie często nie działało lub wróciło, mimo że usunąłem je z mojego konta i roota. Zwykle wraca pod wyjście o nazwie VIRTUAL1 zamiast VGA1.

O wiele łatwiej było mi zostawić śmieci i dołączyć list na końcu mojego nowo utworzonego trybu, a nawet upuściłem 0,00, czyli 1280x1024_60B . Uwaga: poniżej znajdują się podwójne cudzysłowy wokół parametru --newmode, ale NIE --addmode ani --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

Trochę migotania ekranu i mój zewnętrzny 19-calowy kwadratowy monitor działa w rozdzielczości 1280x1024.

rjt
źródło
To było jedyne rozwiązanie po wielu godzinach badań, które działało, dziękuję bardzo, że uratowałeś mi dzień. Na zdrowie
Shanil Soni,
Jednak ustawienie traci po sesji, jakieś rozwiązanie, aby uczynić go trwałym?
Shanil Soni,
0

Jeśli używasz systemu Linux na maszynie wirtualnej (w szczególności VirtualBox), upewnij się, że maszyna wirtualna ma wystarczającą ilość pamięci wideo.

Zbyt mało pamięci wideo powoduje ten błąd podczas próby uruchomienia xrandr.

Felipe Almeida
źródło
0

Spędzam 2 godziny, aby rozwiązać podobny problem, a problem dotyczył kabla VGA. Wymień kabel VGA Mogę zmienić rozdzielczość na 1920x1080 bez użycia xrandr lub xorg to bardzo dziwne.

burtsevyg
źródło