อย่าจัดการเปิดใช้งาน HDMI บนแล็ปท็อป (ที่มี optimus / bumblebee)


17

ฉันกำลังพยายามใช้เอาต์พุต HDMI บนพีซี (HP ZBook) กับ Debian (ยืด) ฉันได้กำหนดค่า Bumblebee มันใช้งานได้ดี (glxinfo และ optirun glxinfo รายงานข้อมูลที่คาดไว้และฉันทดสอบ GLSL shaders ที่ซับซ้อนซึ่งทำงานได้ตามที่คาดไว้)

ตอนนี้ฉันต้องการเสียบ videoprojector ที่ HDMI ฉันได้อ่านที่นี่ [1] ที่ intel-virtual-output สามารถใช้เพื่อกำหนดค่าเมื่อเชื่อมต่อ HDMI บนบอร์ด NVidia (ใช้เอาต์พุต VIRTUAL ที่สามารถจัดการได้โดย xrandr) อย่างไรก็ตาม intel-virtual-output พูดว่า:

 no VIRTUAL outputs on ":0"

เมื่อฉันทำxrandr -qไม่มีการแสดงผล VIRTUAL ฉันมี:

Screen 0: minimum 320 x 200, current 1920 x 1080, maximum 8192 x 8192
eDP-1 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 345mm x 194mm
   1920x1080     60.02*+  59.93  
   1680x1050     59.95    59.88  
   1600x1024     60.17  
   ... other video modes ...
   400x300       60.32    56.34  
   320x240       60.05  
DP-1 disconnected (normal left inverted right x axis y axis)
HDMI-1 disconnected (normal left inverted right x axis y axis)
DP-2 disconnected (normal left inverted right x axis y axis)
HDMI-2 disconnected (normal left inverted right x axis y axis)

รุ่นที่ติดตั้งของฉันคือ xserver-xorg-video-intel คือ: xserver-xorg-video-intel_2.99.917 + git20160706-1_amd64.deb

Update (Sat. Dec. 09 2016)ฉันได้อัปเดต Debian แล้วและตอนนี้ X ล่มเมื่อจอภาพที่สองทำงานเมื่อฉันเริ่มบางแอปพลิเคชัน (เช่น xemacs) วันเสาร์ 17 ธันวาคม 2016: พบแล้ว! (อัพเดทคำตอบ)

อัปเดต (พุธ ก.ย. 27 2017)วิธีการทำงานในกรณี 99% แต่เมื่อสัปดาห์ที่แล้วฉันลองใช้เครื่องรับแสงที่ยอมรับโหมด 50Hz เท่านั้นและไม่สามารถรับสิ่งอื่นได้มากกว่า 60Hz (ดังนั้นจึงใช้ไม่ได้) ใครรู้วิธีบังคับโหมด 50Hz

อัปเดต (อ. 01 ต.ค. 2019)เอาเลย! แตกอีกครั้ง: หลังจากอัปเดต X และไดรเวอร์ NVidia แล้ว optirun จึงล้มเหลว (เกิดข้อ/var/log/Xorg.8.logผิดพลาดใน Xorg, OsLookupColor + 0x139) อัปเดต (07 ต.ค. 2019)พบการแก้ไขชั่วคราว (คำตอบล่าสุด)

[1] https://github.com/Bumblebee-Project/Bumblebee/wiki/Multi-monitor-setup


1
ไม่ใช่คำตอบเพราะสิ่งนี้ไม่ได้ใช้ Nvidia GPU แต่เป็น FYI - ด้วยแล็ปท็อป nvidia 960m ที่ดีที่สุด (ธันวาคม 2559 dell inspiron 15) ที่ใช้งาน Fedora 25 ฉันสามารถใช้จอภาพ HDMI ภายนอกที่ไม่มีไดรเวอร์ NVIDIA หรือ bumblebee ติดตั้ง ด้วยการตั้งค่านี้จอภาพ hdmi ภายนอกจะไม่ถูกตรวจพบหากฉันเสียบเข้าไปหลังจากการบู๊ต ในการทำให้สิ่งนี้ใช้งานได้ให้ปลั๊กอินจอภาพ HDMI ก่อนบู๊ตและที่เมนูด้วงใช้ตัวสลับหน้าจอมอนิเตอร์ Fn-F8 เพื่อรับจอภาพแบบมิเรอร์ล็อกอินเข้าสู่ X ด้วย wayland และรับจอภาพเพิ่มเติม
carlsborg

คำตอบ:


20

ใช่พบแล้ว! ในการเปิดใช้งาน VIRTUAL output ของไดรเวอร์ Intel คุณจะต้องสร้าง20-intel.confไฟล์ในไดเรกทอรีการกำหนดค่า Xorg ( /usr/share/X11/xorg.conf.dภายใต้ Debian stretch, พบได้จากการอ่าน/var/log/Xorg.0.log)

Section "Device"
    Identifier "intelgpu0"
    Driver "intel"
    Option "VirtualHeads" "2"
EndSection

/etc/bumblebee/xorg.conf.nvidia ของฉันเป็นดังนี้:

Section "ServerLayout"
    Identifier  "Layout0"
    Option      "AutoAddDevices" "true"
    Option      "AutoAddGPU" "false"
EndSection

Section "Device"
    Identifier  "DiscreteNvidia"
    Driver      "nvidia"
    VendorName  "NVIDIA Corporation"
    Option "ProbeAllGpus" "false"
    Option "NoLogo" "true"
    Option "AllowEmptyInitialConfiguration"
EndSection

Section "Screen"
    Identifier "Screen0"
    Device "DiscreteNVidia"
EndSection

คำอธิบายบางอย่าง: มันต้องการส่วน "หน้าจอ" มิฉะนั้นจะพยายามใช้อุปกรณ์ Intel ที่ประกาศใน 20-intel.conf (ที่เราเพิ่งเพิ่มก่อนหน้านี้โอ้ฉัน ... ) นอกจากนี้ยังต้องการ "AllowEmptyInitialConfiguration" เพื่อให้สามารถเริ่มต้นด้วย optirun เมื่อไม่มีการเชื่อมต่อจอภาพภายนอก

ด้วยการกำหนดค่าและการเริ่มต้นintel-virtual-outputนี้ฉันสามารถเข้าถึงพอร์ต HDMI ของฉันได้ เยาฮา !!!

การแก้ไขปัญหา:ถ้าoptirunหรือintel-virtual-outputไม่ทำงานให้ดู/var/log/Xorg.8.log(bumblebee สร้างเซิร์ฟเวอร์ X ที่มีจอแสดงผล: 8 ใช้ภายใน)

หมายเหตุผมอ่านหลายสถานที่ที่KeepUnusedXServerควรจะกำหนดให้trueและPMMethodไปnoneใน/etc/bumblebee/bumblebee.confผมไม่ได้ทำอย่างนั้นและมันทำงานได้ดี ถ้าฉันทำอย่างนั้นมันก็ใช้งานได้ แต่จากนั้น GPU แยกยังคงอยู่แม้หลังจากออกจากแอปพลิเคชัน optirun-ed หรือฆ่า intel-virtual-output ซึ่งฉันไม่ต้องการ

หมายเหตุเพิ่มเติมมีอะไรอีกที่ทำให้ฉันหัวของฉันบนกำแพงถูกปิดการใช้งานนูโวและเริ่มต้นเซิร์ฟเวอร์ Intel X: มันจะต้องทำโดยธงผ่านไปยังเคอร์เนลที่ระบุไว้ในพารามิเตอร์ด้วง ใน/etc/defaults/grubฉันมีบรรทัดต่อไปนี้:

GRUB_CMDLINE_LINUX_DEFAULT="quiet blacklist.nouveau=1 i915.modeset=1 gfxpayload=640x480 acpi_backlight=vendor acpi_osi=! acpi_osi=\"Windows 2009\""

(ระวังคำพูดและคำพูดที่หลบหนี)

คำอธิบายบางอย่าง: มันหลีกเลี่ยงการโหลดนูโว (ที่เข้ากันไม่ได้กับเซิร์ฟเวอร์ Nvidia X) และบอกให้ไดรเวอร์ Intel ไปที่โหมดกราฟิกทันทีที่บูต หากคุณไม่ทำเช่นนั้นเซิร์ฟเวอร์ Intel X จะไม่สามารถเริ่มทำงานได้และจะกลับไปใช้เซิร์ฟเวอร์ VESA แบบเดิมที่มีการเรนเดอร์ 3D ฝั่ง CPU acpi_xxxธงจะต้องอยู่บนเครื่องนี้โดยเฉพาะที่จะเอาชนะข้อผิดพลาด BIOS ที่ทำให้มันล้มเหลวเมื่อไปอยู่ในโหมดกราฟิกที่มีออก GPU ที่ไม่ต่อเนื่อง โปรดทราบว่ามันเป็นสิ่งเฉพาะสำหรับโน้ตบุ๊กนี้โดยเฉพาะ (HP ZBook Portable Workstation) มันอาจไม่จำเป็นหรือแตกต่างกันสำหรับแล็ปท็อปอื่น ๆ

อัปเดต (6 ธันวาคม 2560)ด้วย Debian distro (Buster) ล่าสุด "915.modeset = 1 gfxpayload = 640x480" ไม่จำเป็น ในการลบนูโวฉันต้องสร้างไฟล์ nouveau.conf ใน /etc/modprobe.d ด้วย "blacklist nouveau" ในนั้นจากนั้นสร้าง ramdisk ด้วย "update-initramfs -u" รีบูตและตรวจสอบให้แน่ใจว่า "นูโว" ไม่ได้โหลดอีกต่อไปด้วย "lsmod | grep นูโว"

Update (17 ธันวาคม 2016)ด้วยล่าสุด xorg เซิร์ฟเวอร์ (1.19) ดูเหมือนว่าจะมีปัญหาในการฟังก์ชั่นที่จัดการ RandR intel-virtual-outputแกมมาเมื่อใช้กับ นี่คือขั้นตอนการแก้ไข Xserver และทำให้ใช้งานได้:

sudo apt-get build-dep xserver-xorg-core
apt-get source xorg-server

แก้ไข hw / xfree86 / โหมด / xg86RandR12.c บรรทัด 1260 แทรก "return" (เพื่อให้ฟังก์ชั่นxf86RandR12CrtcComputeGamma()ไม่ทำอะไรเลย)

dpkg-buildpackage -rfakeroot -us -uc
cd ..
sudo dpkg -i xserver-xorg-core_n.nn.n-n_amd64.deb

(แทนที่n.nn.n-nด้วยรุ่นที่ถูกต้อง) รีบูตและYehaa !! ทำงานได้อีกครั้ง! (แต่เป็นการแก้ไขที่รวดเร็วและสกปรก)

อัปเดตยื่นรายงานข้อผิดพลาด (เป็นที่รู้จักแล้วและได้รับการแก้ไขแล้ว): https://bugs.freedesktop.org/show_bug.cgi?id=99129

ฉันจะทราบได้อย่างไร: ติดตั้งxserver-xorg-core-dbgและใช้gdb /usr/lib/xorg/Xorg <xorg pid>จากเครื่องอื่นผ่าน ssh

อัปเดต (ม.ค. 11 17)ดูเหมือนว่าข้อผิดพลาดได้รับการแก้ไขแล้วในแพ็คเกจ Debian ล่าสุด

อัปเดต (ม.ค. 24 18)เมื่อคุณต้องการเสียบ beamer สำหรับทำการนำเสนอและจำเป็นต้องกำหนดค่าทุกอย่างให้ถูกต้องก่อนเริ่มต้น (intel-virtual-output + xrandr) อาจทำให้เกิดความเครียดได้ นี่เป็นสคริปต์เล็ก ๆ น้อย ๆ ที่ทำงานได้ (ข้อจำกัดความรับผิดชอบ: มีพื้นที่สำหรับการปรับปรุงมากมายเกี่ยวกับสไตล์ ฯลฯ ... ):

# beamer.sh: sets Linux display for doing a presentation, 
#  for bumblebee configured on a laptop that has the HDMI
#  plugged on the NVidia board.
#
# Bruno Levy, Wed Jan 24 08:45:45 CET 2018
#
# Usage: 
#    beamer.sh widthxheight
#    (default is 1024x768)


# Note: output1 and output2 are hardcoded below,
#  change according to your configuration.
output1=eDP1
output2=VIRTUAL1

# Note: I think that the following command should have done
# the job, but it does not work. 
#    xrandr --output eDP1 --size 1024x768 --output VIRTUAL1 --size 1024x768 --same-as eDP1
# My guess: --size is not implemented with VIRTUAL devices.
# Thus I try to find a --mode that fits my needs in the list of supported modes.

wxh=$1

if [ -z "$wxh" ]; then
  wxh=1024x768
fi

# Test whether intel-virtual-output is running and start it.
ivo_process=`ps axu |grep 'intel-virtual-output' |egrep -v 'grep'`
if [ -z "$ivo_process" ]; then
   intel-virtual-output
   sleep 3
fi

# Mode names on the primary output are simply wxh (at least on
#  my configuration...)
output1_mode=$wxh

echo Using mode for $output1: $output1_mode

# Mode names on the virtual output are like: VIRTUAL1.ID-wxh
# Try to find one in the list that matches what we want.
output2_mode=`xrandr |grep $output2\\\. |grep $wxh |awk '{print $1}'`
# There can be several modes, take the first one.
output2_mode=`echo $output2_mode |awk '{print $1}'` 

echo Using mode for $output2: $output2_mode

# Showtime !
xrandr --output $output1 --mode $output1_mode --output $output2 --mode $output2_mode --same-as $output1

อัปเดต (10/07/2019)

"แก้ไข" สำหรับความผิดพลาดใหม่: เขียนสิ่งที่ตามมาในสคริปต์ (เรียกว่าbumblebee-startx.shเป็นต้น):

optirun ls # to load kernel driver
/usr/lib/xorg/Xorg :8 -config /etc/bumblebee/xorg.conf.nvidia \
 -configdir /etc/bumblebee/xorg.conf.d -sharevts \
 -nolisten -verbose 3 -isolateDevice PCI:01:00:0 \
 -modulepath /usr/lib/nvidia/nvidia,/usr/lib/xorg/modules/

(แทนที่ PCI: nn: nn: n ด้วยที่อยู่ของการ์ด NVidia ของคุณที่ได้รับด้วย lspci)

เรียกใช้สคริปต์นี้จากหน้าต่างเทอร์มินัลในฐานะรูท ( sudo bumblebee-startx.sh) เปิดเทอร์มินัลไว้optirunและintel-virtual-outputทำงานตามที่คาดไว้ (หมายเหตุ: บางครั้งฉันต้องเรียกใช้งานxrandrเพิ่มเติมเพื่อให้ตรวจพบหน้าจอ / วิดีโอ ตอนนี้ฉันไม่เข้าใจว่าทำไมคำสั่งเดียวกันเริ่มต้นจากการล่ม bumblebee ความลึกลับมากมายที่นี่ ... (แต่อย่างน้อยมันก็ให้การแก้ไขชั่วคราว)

ฉันคิดออกได้อย่างไร:เขียนสคริปต์ 'wrapper' เพื่อเริ่ม xserver ประกาศว่าเป็น XorgBinary ใน bumblebee.conf ทำให้มันบันทึกบรรทัดคำสั่ง ($ *) ลงในไฟล์ลองใช้สิ่งที่เกี่ยวข้องกับ LD_PRELOADing patch ไปยัง XServer เพื่อ แก้ไขข้อผิดพลาดใน osLookupColor (ไม่ทำงาน) แต่เมื่อฉันพยายามเปิดใช้บรรทัดคำสั่งเดียวกันด้วยมือมันทำงานได้และมันทำงานต่อไปได้โดยไม่ต้องแก้ไข (แต่ฉันยังไม่เข้าใจว่าทำไม)

อัปเดต 11/15/2019 หลังจากอัปเดตฉันมีอาการกระพริบจำนวนมากทำให้ระบบใช้ไม่ได้ แก้ไขโดยการเพิ่มพารามิเตอร์เคอร์เนลi915.enable_psr=0(ใน/etc/defaults/grubจากนั้นsudo update-grub) หากคุณต้องการตอนนี้ PSR หมายถึง 'แผงรีเฟรชตัวเอง' ซึ่งเป็นคุณสมบัติการประหยัดพลังงานของ Intel GPUs (ซึ่งอาจทำให้หน้าจอกะพริบ)


3
คุณฉันชอบคุณ! : D ฉันอยู่บน Arch linux ฉันไม่สามารถเริ่มต้นintel-virtual-outputได้ 111ถูกออกด้วยรหัสทางออก straceผมก็พยายามที่จะคิดออกว่ามันกำลังทำอะไรกับ พบว่าโพสต์ของคุณฉันสร้างขึ้น/etc/X11/xorg.conf.d/20-intel.confเช่นเดียวกับคุณเพิ่มBusID "PCI:2:0:0"ในกรณีของฉัน ใช้การตั้งค่าที่คล้ายกัน/etc/bumblebee/xorg.conf.nvidiaและปังintel-virtual-outputทำงานได้ดี xrandrกำลังตรวจสอบพอร์ตอื่น ๆ ทั้งหมดของฉัน! : D <3 ส่วนการแก้ไขปัญหาเกี่ยวกับการ/var/log/Xorg.8.logช่วยเหลือจริงๆ
GabLeRoux

ตกลงหลังจากทดสอบเล็กน้อยใช่ฉันเห็นอุปกรณ์ที่ระบุไว้ด้วยxrandrแต่การเชื่อมต่อสายเคเบิลจะแสดงเมาส์ให้ฉัน แต่หน้าต่างไม่แสดงบนจอแสดงผลภายนอก บางครั้งมันก็แสดงสำเนาของหน้าจอหลักของฉันและจากนั้นทั้งสองหน้าจอก็เป็นสีดำและไม่มีอะไรเกิดขึ้น และเปิดใช้งานระบบไม่ได้เริ่มต้นด้วย/etc/X11/xorg.conf.d/20-intel.confและฉันไม่เห็นอะไรเลยในบันทึก อย่างไรก็ตามขอบคุณที่แบ่งปันสิ่งนี้ฉันคิดว่าฉันเข้าใกล้โซลูชันมากขึ้น
GabLeRoux

มันอาจขึ้นอยู่กับสภาพแวดล้อมเดสก์ทอปที่คุณใช้ ฉันใช้ KDE และต้องการปรับแต่งการตั้งค่าหน้าจอเล็กน้อยในค่ากำหนด
BrunoLevy

ฉันคิดว่าฉันทำงานได้แล้ว มันเป็นความล้มเหลวกับทีวีของฉัน แต่ก็ทำงานร่วมกับ DisplayPort ของฉัน :)
GabLeRoux

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