Bir dizüstü bilgisayarda (optimus / bumblebee olan) HDMI'yı etkinleştirmeyi yönetmeyin


17

Debian (streç) ile bir bilgisayarda (HP ZBook) HDMI çıkışını kullanmaya çalışıyorum. Bumblebee'yi yapılandırdım, iyi çalışıyor (glxinfo ve optirun glxinfo beklenen bilgileri rapor ettim ve beklendiği gibi çalışan karmaşık GLSL gölgelendiricileri test ettim).

Şimdi HDMI'ya bir video projektör takabilmek istiyorum. Burada [1], Intel-sanal çıkışın HDMI NVidia kartına bağlandığında (xrandr tarafından işlenebilen bir VIRTUAL çıkışı kullanarak) yapılandırmak için kullanılabileceğini okudum. Ancak, intel-virtual-output şöyle diyor:

 no VIRTUAL outputs on ":0"

Yaptığımda xrandr -q, listelenen hiçbir VIRTUAL çıktı yok, sadece var:

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)

Yüklediğim xserver-xorg-video-intel sürümü: xserver-xorg-video-intel_2.99.917 + git20160706-1_amd64.deb

Güncelleme (09 Aralık 2016 Pazar) Debian'ı güncelledim ve bazı uygulamaları (örneğin xemacs) başlattığımda ikinci monitör etkin olduğunda X kilitleniyor. Oturdu. 17 Aralık 2016: Evet, öğrendim! (cevabı güncelledi).

Güncelleme (Çar 27 Eyl 2017) Yöntem, vakaların% 99'unda çalışıyor, ancak geçen hafta sadece 50Hz modlarını kabul eden ve 60Hz'den başka bir şey alamayan bir beamer denedim (bu yüzden işe yaramadı). 50Hz modlarının nasıl zorlanacağını bilen var mı?

Güncelleme (Sal 01 Eki 2019) Argh! Tekrar /var/log/Xorg.8.logkırıldı : X ve NVidia sürücüsünü güncelledikten sonra, optirun şimdi çöküyor ( Osorg, OsLookupColor + 0x139 Xorg'da çöküyor diyor). Güncelleme (07 Eki 2019) Geçici bir düzeltme bulundu (güncellenmiş cevap).

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


1
Yanıt değil, çünkü bu Nvidia GPU kullanmıyor, ancak FYI olarak - Fedora 25 çalıştıran bir nvidia 960m optimus dizüstü bilgisayarla (Aralık 2016 dell inspiron 15), harici HDMI monitörü nvidia veya bumblebee sürücüleri yüklü olmadan kullanabilirim. Bu kurulumla, önyüklemeden sonra takarsam harici hdmi monitörü algılanmaz. Bunu yapmak için, önyüklemeden önce HDMI monitörü takın ve grub menüsünde yansıtılmış bir monitör almak için Fn-F8 monitör değiştiriciyi kullanın, wayland ile X'e giriş yapın ve genişletilmiş bir monitör alın.
carlsborg

Yanıtlar:


20

Evet, öğrendim! Intel sürücüsünün SANAL çıktısını etkinleştirmek için 20-intel.conf, Xorg yapılandırma dizininde bir dosya oluşturmanız gerekir ( /usr/share/X11/xorg.conf.dDebian streç altında, okuyarak öğrenilir /var/log/Xorg.0.log)

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

/Etc/bumblebee/xorg.conf.nvidia'm aşağıdaki gibidir:

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

Bazı açıklamalar: bir "Ekran" bölümüne ihtiyaç duyar, aksi takdirde 20-intel.conf içinde bildirilen Intel cihazını kullanmaya çalışır (daha önce eklediğimiz, oh my ...). Ayrıca, harici monitör bağlı olmadığında optirun ile başlayabilmek için "AllowEmptyInitialConfiguration" gerekir.

Bu yapılandırma ve başlatma ile intel-virtual-outputHDMI bağlantı noktasına erişebildim. Yeehaa !!!

Giderme: eğer optirunyoksa intel-virtual-outputdeğil iş yapmak, bir göz atın /var/log/Xorg.8.log(yaban arısı ekranlı bir X sunucusu oluşturur: 8 dahili olarak kullanılır).

Notlar Birden fazla yerde okumak KeepUnusedXServerayarlanması gerekir trueve PMMethodhiç nonede /etc/bumblebee/bumblebee.conf, bunu yoktu ve para cezası çalışır. Bunu yaparsam çalışır, ancak ayrık GPU, isteğe bağlı bir uygulamadan çıktıktan veya istemediğim intel-sanal çıktıyı öldürdükten sonra bile açık kalır.

Daha fazla not Başımı duvara vurmamı sağlayan başka bir şey Nouveau'yu devre dışı bırakmak ve Intel X sunucusunu başlatmaktı: bunun GRUB parametrelerinde belirtilen çekirdeğe geçirilen bayraklarla yapılması gerekiyor. Içinde /etc/defaults/grub, ben aşağıdaki satırı:

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

(tırnak ve kaçan tırnak sakının).

Bazı açıklamalar: nouveau (Nvidia X sunucusuyla uyumlu değildir) yüklenmesini önler ve Intel sürücüye önyükleme zamanında grafik moduna geçmesini söyler. Bunu yapmazsanız, Intel X sunucusu başlatılamaz ve CPU tarafı 3D oluşturma özelliğine sahip eski bir VESA sunucusuna geri döner. acpi_xxxBayraklar ayrık GPU off ile grafik modunda giderken çökmesini kılan bir BIOS hata aşmak için bu özel makinede gereklidir. Bu dizüstü bilgisayara özel olduğunu unutmayın (HP ZBook taşınabilir iş istasyonu), gereksiz olabilir veya diğer dizüstü bilgisayarlar için farklı olabilir.

Güncelleme (6 Aralık 2017) En son Debian dağıtımıyla (Buster), "915.modeset = 1 gfxpayload = 640x480" gerekli değildir. Nouveau kaldırmak için, /etc/modprobe.d içinde "blacklist nouveau" ile bir nouveau.conf dosyası oluşturmam ve ardından ramdisk'i "update-initramfs -u" ile yeniden oluşturmam gerekiyordu. Yeniden başlatın ve "nouveau" nun artık "lsmod | grep nouveau" ile yüklü olmadığından emin olun.

Güncelleme (17 Aralık 2016) En son xorg sunucusu (1.19) ile birlikte kullanıldığında Gamma'yı yöneten bir RandR işlevinde bir sorun var gibi görünüyor intel-virtual-output. İşte Xserver'ı düzeltme ve işe alma prosedürü:

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

düzenlemek hw / xfree86 / modes / xg86RandR12.c Satır 1260, "return" yazınız (böylece fonksiyon xf86RandR12CrtcComputeGamma()hiçbir şey yapmaz)

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

( n.nn.n-ndoğru sürüm ile değiştirin ), yeniden başlatın ve Yehaa !! tekrar çalışıyor! (ancak hızlı ve kirli bir düzeltme)

Güncelleme bir hata raporu verdi (zaten biliniyordu ve düzeltildi): https://bugs.freedesktop.org/show_bug.cgi?id=99129

Nasıl anladım: Yüklü xserver-xorg-core-dbgve yaptığı gdb /usr/lib/xorg/Xorg <xorg pid>ssh'dan başka bir makineden.

Güncelleme (11 Ocak 17) Hatanın artık en son Debian paketlerinde düzeltildiği anlaşılıyor.

Güncelleme (24 Ocak 18) Bir sunum yapmak için bir beamer takmak ve başlamadan hemen önce her şeyi yapılandırmanız gerektiğinde (intel-virtual-output + xrandr), stresli olabilir. İşte işi yapan küçük bir senaryo (sorumluluk reddi: stil vb. İle ilgili iyileştirme için çok fazla alan ...):

# 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

güncelleme (10/07/2019)

Yeni kilitlenme için bir "düzeltme": bir komut dosyasında aşağıdakileri yazın ( bumblebee-startx.shörneğin çağırın ):

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'yi lspci ile elde edilen NVidia kartınızın adresiyle değiştirin)

Bu komut dosyasını bir terminal penceresinden root ( sudo bumblebee-startx.sh) olarak çalıştırın , terminali açık tutun optirunve intel-virtual-outputbeklendiği gibi çalışın (not: bazen xrandrekran / video projektörün algılanmasını sağlamak için ek olarak çalıştırmam gerekir ). Şimdi aynı komutun yaban arısı çökmelerinden neden başladığını anlamıyorum, burada birçok gizem var ... (ama en azından geçici bir düzeltme veriyor).

Nasıl anladım: xserver'ı başlatmak için bir 'sarmalayıcı' komut dosyası yazdı, bumblebee.conf dosyasında XorgBinary olarak ilan etti, komut satırını ($ *) bir dosyaya kaydetti, LD_PRELOAD XServer'a bir yama içeren bazı şeyler denedi osLookupColor'daki çökme düzeltildi (işe yaramadı), ancak aynı komut satırını el ile başlatmaya çalıştığımda, çalıştı ve yamam olmadan çalışmaya devam etti (ama yine de nedenini anlamıyorum).

Güncelleme 11/15/2019 Güncellemeden sonra çok fazla titreme yaşadım ve sistemi kullanılamaz hale getirdim. Çekirdek parametresi eklenerek düzeltildi i915.enable_psr=0(sonra /etc/defaults/grub, sonra sudo update-grub). Şimdi istiyorsanız, PSR, Intel GPU'ların güç tasarrufu özelliği olan (ekran titremesine neden olabilir) 'panel kendini yenileme' anlamına gelir.


3
Sen seni seviyorum! : D Arch linux'dayım, başlayamadım intel-virtual-output. çıkış koduyla çıkıyordu 111. Hatta onun ne yaptığını anlamaya çalışıyordum strace. Yayınınızı buldum, /etc/X11/xorg.conf.d/20-intel.conftıpkı sizinki gibi, her ihtimale karşı da ekledim BusID "PCI:2:0:0". Benzer ayarlar kullanılır /etc/bumblebee/xorg.conf.nvidiave bam, intel-virtual-outputiyi çalışır. xrandrşimdi diğer tüm portlarımı tespit ediyor! : D <3 Sorun Giderme bölümü /var/log/Xorg.8.loggerçekten yardımcı oldu
GabLeRoux

Tamam, biraz test ettikten sonra, evet, listelenen cihazları görüyorum xrandr, ancak kabloyu takmak bana fareyi gösteriyor, ancak pencereler harici ekranda gösterilmiyor. Bazen ana ekranımın bir kopyasını gösterir ve daha sonra her iki ekran kararır ve hiçbir şey olmaz. ve sistem dosyası ile başlamadı çıktı /etc/X11/xorg.conf.d/20-intel.confve günlüklerde hiçbir şey görmüyorum. Her neyse, bunu paylaştığın için teşekkürler, sanırım bir çözüme yaklaşıyorum.
GabLeRoux

Kullandığınız masaüstü ortamına bağlı olabilir. KDE kullanıyorum ve tercihlerde ekran yapılandırmasını biraz değiştirmek gerekiyordu.
BrunoLevy

Sanırım şimdi çalıştırdım. Benim tv ile başarısız oldu, ama benim
displayport

1
@BrunoLevy Sonunda çalışıyor. Eski dizüstü bilgisayarıma yeni bir hayat verdiğiniz için teşekkür ederiz!
Joseph R.
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.