Không thể thêm chế độ mới trong xrandr cho màn hình ngoài


16

Hôm nay tôi đã cố gắng kết nối màn hình thứ hai của tôi với máy tính xách tay của tôi. Tôi có:

  • card đồ họa nvidia
  • Trình điều khiển 304,43 [hỗ trợ xrandr 1.2]
  • archlinux [cập nhật]
  • tuyệt vời
  • xrandr 1.3

Vấn đề của tôi là với độ phân giải lớn hơn 640x480 cho màn hình ngoài (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)

Như chúng ta có thể thấy không có độ phân giải cao hơn cho VGA, vì vậy tôi thêm chế độ mới:

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

Tôi đã kiểm tra độ phân giải có sẵn và tốc độ làm mới dưới các cửa sổ: một trong số chúng là 1024x768x70 (OSD của màn hình của tôi nói rằng nó là 70,4HZ). Sau khi tạo chế độ mới, tôi muốn thêm nó:

xrandr --addmode VGA-0 1280x1024_70.40

Và ... Nó đã thất bại:

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

Từ google tôi đã học được rằng trong các trình điều khiển xrandr / nvidia cũ hơn có vấn đề với danh sách các chế độ có sẵn, nhưng bây giờ với sự hỗ trợ của xrandr 1.2 bởi trình điều khiển nvidia thì tốt hơn. Tôi cũng thử với độ phân giải và tốc độ làm mới thấp hơn (ví dụ: 1024x768x50), nhưng tôi đã gặp lỗi tương tự. Tôi không biết phải làm gì với vấn đề này ...

Câu trả lời:


11

Tôi không chắc liệu bạn đã tự tạo chuỗi theo sau xrandr --newmodehay bạn đã sao chép nó từ một nơi khác, nhưng nó sẽ không hoạt động ở dạng hiện tại.

Tôi khuyên bạn nên làm điều đó từng bước một.

Đầu tiên, bạn cần tạo chế độ mới. Tôi khuyên bạn nên sử dụng 60Hz với LCD hoặc 85Hz với màn hình CRT

gtf 1280 1024 60

Bạn sẽ nhận được một cái gì đó như:

 # 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

Sau đó trình bày chế độ này để xrandrsử dụng --newmode(sao chép-dán dòng bắt đầu bằng 'Modeline'.

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

Sau đó thêm chế độ này vào VGA-0:

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

Và cuối cùng bạn có thể sử dụng chế độ mới này:

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

Bạn nói đúng, tôi không tự tạo ra cái này: xrandr --newmode $(gtf 1280 1024 70.4 | grep Modeline | sed s/Modeline\ // | tr -d '"')nhưng tôi đặt nó thành những mảnh nhỏ trước để xem cách nó hoạt động, đầu tiên gtf 1280 1024 70.4, sau đó với grep và cuối cùng là sed và tr. Nó cung cấp cùng một đầu ra mà bạn có trong Bạn xrandr --newmodevới một khác biệt - Bạn có "1280x1024_60.00", I have 1280x1024_60.00` - cuối cùng tôi đang sử dụng tr -d '"'để xóa '"'. Thật không may, tôi vẫn gặp lỗi tương tự.
Borgo

Tại sao tốc độ làm mới lạ như vậy? 70,4? Sử dụng 60Hz nếu đó là LCD hoặc 85Hz trong trường hợp CRT. Và làm từng bước một, chính xác như tôi đã viết.
Rumeł Rumian

Bây giờ tôi đã thử làm từng bước một, sử dụng 60Hz và tôi vẫn gặp lỗi tương tự.
Borgo

1
Độ phân giải của tôi là 1280x1024 và tôi đang cố gắng tạo (newmode) / add (addmode) chế độ này:"1280x1024_60.00" 108.88 1280 1360 1496 1712 1024 1025 1028 1060 -HSync +Vsync
Borgo

1
Vẫn cùng một lỗi: 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 Chỉ có hai số cuối đã thay đổi.
Borgo

4

tôi đã gặp sự cố Lỗi BadMatch này cho đến khi tôi xóa "1280x1024_60.00" đã thêm trước đó vì nó không bao giờ có thể sử dụng chế độ trích dẫn kép thành công. Cuối cùng, nhận ra một tên tốt hơn cho chế độ đã giúp.

Vì vậy, tôi đã xóa "1280x1024_60.00" bằng cách chạy như sau như một người dùng bình thường:

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

Xóa và xóa rác trong hệ thống thường không hoạt động hoặc sẽ quay trở lại mặc dù tôi sẽ xóa nó khỏi tài khoản và root của mình. Nó thường sẽ quay trở lại dưới đầu ra có tên VIRTUAL1 thay vì VGA1.

Tìm thấy nó dễ dàng hơn nhiều để bỏ rác và viết thêm một chữ cái ở cuối chế độ mới tạo của tôi và thậm chí bỏ 0,00, vì vậy 1280x1024_60B . Lưu ý cẩn thận bên dưới có các dấu ngoặc kép xung quanh tham số --newmode, nhưng KHÔNG --addmode cũng không --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

Một màn hình nhỏ nhấp nháy và màn hình vuông 19 inch bên ngoài của tôi đang chạy ở 1280x1024.


Đây là giải pháp duy nhất sau nhiều giờ nghiên cứu có hiệu quả, cảm ơn rất nhiều, bạn đã cứu tôi. Chúc mừng
Shanil Soni

Tuy nhiên, cài đặt bị mất sau một phiên, giải pháp nào để làm cho nó vĩnh viễn?
Shanil Soni

0

Nếu bạn đang chạy Linux trên máy ảo (cụ thể là VirtualBox), hãy đảm bảo máy ảo có đủ bộ nhớ Video.

Bộ nhớ video quá ít gây ra lỗi này khi cố chạy xrandr.


0

Tôi dành 2 giờ để giải quyết vấn đề tương tự và vấn đề là ở cáp vga. Thay thế cáp vga Tôi có thể thay đổi độ phân giải thành 1920x1080 mà không cần sử dụng xrandr hoặc xorg, điều này rất lạ.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.