ไม่สามารถเพิ่มโหมดใหม่ใน xrandr สำหรับจอภาพภายนอก


16

วันนี้ฉันพยายามเชื่อมต่อจอภาพที่สองเข้ากับโน้ตบุ๊คของฉัน ฉันมี:

  • การ์ดกราฟิก nvidia
  • ไดรเวอร์ 304.43 [สนับสนุน xrandr 1.2]
  • archlinux [ทันสมัย]
  • WM ที่น่ากลัว
  • 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 '"')

ฉันตรวจสอบความละเอียดและอัตราการรีเฟรชที่ใช้งานได้ใน windows: หนึ่งในนั้นคือ 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 รุ่นเก่ามีปัญหากับรายการโหมด avaible แต่ตอนนี้ด้วยการรองรับ xrandr 1.2 โดยไดรเวอร์ nvidia มันควรจะดีกว่า ฉันลองใช้ความละเอียดและอัตราการรีเฟรชที่ต่ำกว่า (เช่น 1024x768x50) แต่ฉันมีข้อผิดพลาดเดียวกัน ฉันไม่ทราบว่าจะทำอย่างไรกับปัญหานี้ ...

คำตอบ:


11

ฉันไม่แน่ใจว่าคุณได้สร้างสตริงที่ติดตามxrandr --newmodeด้วยตัวเองหรือคุณคัดลอกมาจากที่อื่น แต่มันจะไม่ทำงานในรูปแบบปัจจุบัน

ฉันแนะนำให้ทำทีละขั้นตอน

ก่อนอื่นคุณต้องสร้างโหมดใหม่ ฉันแนะนำให้ใช้ 60Hz กับ LCD หรือ 85Hz กับจอภาพ CRT

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 มันให้ผลลัพธ์ที่เหมือนกันกับที่คุณมีอยู่ใน Your xrandr --newmodeOne ด้วย - คุณมี"1280x1024_60.00", I have 1280x1024_60.00` - ในตอนท้ายที่ฉันใช้tr -d '"'เพื่อลบ '' 'โชคไม่ดีที่ฉันยังมีข้อผิดพลาดเหมือนเดิม
Borgo

ทำไมอัตราการรีเฟรชที่แปลกมาก 70.4? ใช้ 60Hz หากเป็น LCD หรือ 85Hz ในกรณีของ CRT และทำทีละขั้นตอนอย่างที่ฉันเขียน
Paweł Rumian

ตอนนี้ฉันพยายามทำทีละขั้นตอนโดยใช้ 60Hz และฉันยังคงมีข้อผิดพลาดเดียวกัน
Borgo

1
ความละเอียดของฉันคือ 1280x1024 และฉันกำลังพยายามสร้าง (โหมดใหม่) / เพิ่ม (โหมดเพิ่ม) โหมดนี้:"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 มีการเปลี่ยนแปลงตัวเลขสองตัวสุดท้ายเท่านั้น
Borgo

4

ฉันมีปัญหาข้อผิดพลาด BadMatch นี้จนกว่าฉันจะลบ "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"' 

การลบและลบขยะในระบบมักจะไม่ทำงานหรือจะกลับมาแม้ว่าฉันจะลบออกจากบัญชีและรูทของฉัน มันมักจะกลับมาอยู่ใต้เอาท์พุทชื่อ VIRTUAL1 แทน VGA1

พบว่ามันง่ายมากที่จะออกจากขยะและต่อท้ายจดหมายในตอนท้ายของโหมดที่สร้างขึ้นใหม่และยังลดลง 0.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


นี่เป็นทางออกเดียวหลังจากชั่วโมงการวิจัยที่ได้ผลขอบคุณมากคุณช่วยชีวิตฉันไว้ ไชโย
Shanil Soni

อย่างไรก็ตามการตั้งค่าจะหายไปหลังจากช่วงเวลาการแก้ปัญหาใด ๆ ที่จะทำให้มันถาวร?
Shanil Soni

0

หากคุณใช้งาน Linux บน VM (โดยเฉพาะ VirtualBox) ตรวจสอบให้แน่ใจว่า VM มีหน่วยความจำวิดีโอเพียงพอ

หน่วยความจำวิดีโอน้อยเกินไปทำให้เกิดข้อผิดพลาดนี้เมื่อพยายามเรียกใช้ xrandr


0

ฉันใช้เวลา 2 ชั่วโมงในการแก้ปัญหาที่คล้ายกันและปัญหาคือในสาย vga เปลี่ยนสาย vga ฉันสามารถเปลี่ยนความละเอียดเป็น 1920x1080 โดยไม่ต้องใช้ xrandr หรือ xorg มันแปลกมาก

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.