Schaffe es nicht, HDMI auf einem Laptop zu aktivieren (der Optimus / Hummel hat)

17

Ich versuche, den HDMI-Ausgang auf einem PC (HP ZBook) mit Debian (Stretch) zu verwenden. Ich habe Bumblebee konfiguriert, es funktioniert gut (glxinfo und optirun glxinfo melden die erwarteten Informationen und ich habe komplizierte GLSL-Shader getestet, die ebenfalls wie erwartet funktionieren).

Jetzt möchte ich einen Videoprojektor an den HDMI anschließen können. Ich habe hier gelesen [1], dass Intel-Virtual-Output verwendet werden kann, um es zu konfigurieren, wenn der HDMI auf der NVidia-Karte angeschlossen ist (unter Verwendung eines VIRTUAL-Ausgangs, der von xrandr manipuliert werden kann). In der Intel-Virtual-Ausgabe heißt es jedoch:

 no VIRTUAL outputs on ":0"

Wenn ich es tue xrandr -q, ist keine VIRTUELLE Ausgabe aufgelistet, ich habe nur:

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)

Meine installierte Version von xserver-xorg-video-intel lautet: xserver-xorg-video-intel_2.99.917 + git20160706-1_amd64.deb

Update (Sa. Dez. 09 2016) Ich habe Debian aktualisiert und jetzt stürzt X ab, wenn der zweite Monitor aktiv ist, wenn ich einige Anwendungen starte (zum Beispiel Xemacs). Sat. 17. Dezember 2016: Ja, herausgefunden! (hat die Antwort aktualisiert).

Update (Wed Sep 27 2017) Die Methode funktioniert in 99% der Fälle, aber letzte Woche habe ich einen Beamer ausprobiert, der nur 50-Hz-Modi akzeptiert und nichts anderes als 60 Hz erhalten konnte (es hat also nicht funktioniert). Weiß jemand, wie man 50Hz-Modi erzwingt?

Update (Di 01 Okt 2019) Argh! Wieder defekt: Nach dem Update von X und dem NVidia-Treiber stürzt optirun jetzt ab ( /var/log/Xorg.8.logsagt Absturz in Xorg, OsLookupColor + 0x139). Update (07 Okt 2019) Es wurde ein temporärer Fix gefunden (aktualisierte Antwort).

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

BrunoLevy
quelle
1
Keine Antwort, da dies nicht die Nvidia-GPU verwendet, sondern zu Ihrer Information - mit einem NVIDIA 960M Optimus-Laptop (Dezember 2016 Dell Inspiron 15), auf dem Fedora 25 ausgeführt wird, kann ich den externen HDMI-Monitor ohne NVIDIA- oder Hummeltreiber verwenden. Bei diesem Setup wird der externe HDMI-Monitor nicht erkannt, wenn ich ihn nach dem Start einstecke. Um dies zu erreichen, schließen Sie den HDMI-Monitor vor dem Booten an, und verwenden Sie im Grub-Menü den Fn-F8-Monitorumschalter, um einen gespiegelten Monitor zu erhalten. Melden Sie sich mit wayland bei X an und erhalten Sie einen erweiterten Monitor.
Carlsborg

Antworten:

20

Ja, herausgefunden! Um die VIRTUELLE Ausgabe des Intel-Treibers zu aktivieren, müssen Sie eine 20-intel.confDatei im Xorg-Konfigurationsverzeichnis erstellen ( /usr/share/X11/xorg.conf.dunter Debian Stretch, ermittelt durch Lesen /var/log/Xorg.0.log).

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

Meine /etc/bumblebee/xorg.conf.nvidia lautet wie folgt:

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

Einige Erklärungen: Es benötigt einen "Screen" -Bereich, ansonsten wird versucht, das in 20-intel.conf deklarierte Intel-Gerät zu verwenden (das wir gerade hinzugefügt haben, oh my ...). Außerdem muss "AllowEmptyInitialConfiguration" in der Lage sein, mit optirun zu beginnen, wenn kein externer Monitor angeschlossen ist.

Mit dieser Konfiguration und dem Starten intel-virtual-outputkonnte ich auf meinen HDMI-Anschluss zugreifen. Yeehaa !!!

Fehlerbehebung: Wenn es funktioniert optirunoder intel-virtual-outputnicht, werfen Sie einen Blick auf /var/log/Xorg.8.log(Bumblebee erstellt einen X-Server mit Anzeige: 8, der intern verwendet wird).

Hinweise I an mehreren Stellen gelesen , die KeepUnusedXServereingestellt werden soll trueund PMMethodzu nonein /etc/bumblebee/bumblebee.conf, ich tat das nicht und es funktioniert gut. Wenn ich das tue, funktioniert es, aber dann bleibt die diskrete GPU auch nach dem Beenden einer optiruned-Anwendung oder dem Beenden der Intel-Virtual-Ausgabe eingeschaltet, was ich nicht wollte.

Weitere Hinweise Etwas anderes, das mich dazu brachte, meinen Kopf gegen die Wand zu stoßen, war das Deaktivieren von Nouveau und das Starten des Intel X-Servers: Dies muss mithilfe von Flags geschehen, die an den Kernel übergeben wurden und in den GRUB-Parametern angegeben sind. In habe /etc/defaults/grubich folgende Zeile:

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

(Achten Sie auf die Anführungszeichen und Anführungszeichen mit Escapezeichen).

Einige Erklärungen: Es vermeidet das Laden von nouveau (das nicht mit dem Nvidia X-Server kompatibel ist) und weist den Intel-Treiber an, direkt beim Start in den Grafikmodus zu wechseln. Wenn Sie dies nicht tun, kann der Intel X-Server nicht gestartet werden und greift auf einen einfachen alten VESA-Server mit CPU-seitigem 3D-Rendering zurück. Die acpi_xxxFlags werden auf diesem speziellen Computer benötigt, um einen BIOS-Fehler zu beheben, der im Grafikmodus mit ausgeschalteter diskreter GPU zum Absturz führt. Beachten Sie, dass es für dieses spezielle Notebook (tragbare HP ZBook-Workstation) spezifisch ist und für andere Laptops möglicherweise nicht erforderlich ist oder davon abweicht.

Update (6. Dezember 2017) Mit der neuesten Debian-Distribution (Buster) ist "915.modeset = 1 gfxpayload = 640x480" nicht erforderlich. Um nouveau zu entfernen, musste ich auch eine nouveau.conf-Datei in /etc/modprobe.d mit "blacklist nouveau" erstellen und dann die RAM-Disk mit "update-initramfs -u" neu erstellen. Starten Sie neu und stellen Sie sicher, dass "nouveau" nicht mehr mit "lsmod | grep nouveau" geladen ist.

Update (17. Dezember 2016) Mit dem neuesten xorg-Server (1.19) scheint es ein Problem in einer RandR-Funktion zu geben, die Gamma verwaltet, wenn sie mit verwendet wird intel-virtual-output. So patchen Sie den Xserver und bringen ihn zum Laufen:

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

editiere hw / xfree86 / modes / xg86RandR12.c Zeile 1260, füge "return" ein (damit die Funktion xf86RandR12CrtcComputeGamma()nichts macht)

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

( Ersetze die n.nn.n-nmit der richtigen Version), starte neu und Yehaa !! geht wieder ! (aber es ist eine schnelle und schmutzige Lösung)

Update hat einen Fehlerbericht eingereicht (war bereits bekannt und wurde gerade behoben): https://bugs.freedesktop.org/show_bug.cgi?id=99129

Wie ich herausgefunden habe: Installiert xserver-xorg-core-dbgund gemacht gdb /usr/lib/xorg/Xorg <xorg pid>von einem anderen Rechner über ssh.

Update (11. Januar 17) Scheint, dass der Fehler jetzt in den neuesten Debian-Paketen behoben ist.

Update (24.01.18) Wenn Sie einen Beamer für eine Präsentation anschließen möchten und vor dem Start alles konfigurieren müssen (Intel-Virtual-Output + XRANDR), kann dies stressig sein. Hier ist ein kleines Skript, das die Arbeit erledigt (Haftungsausschluss: viel Raum für Verbesserungen, in Bezug auf Stil usw.):

# 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

Aktualisierung (07.10.2013)

Ein "Fix" für den neuen Absturz: Schreiben Sie folgendes in ein Skript (nennen Sie es bumblebee-startx.shzum Beispiel):

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/

(Ersetzen Sie PCI: nn: nn: n durch die Adresse Ihrer NVidia-Karte, die Sie mit lspci erhalten haben.)

Führen Sie dieses Skript in einem Terminalfenster als root ( sudo bumblebee-startx.sh) aus, lassen Sie das Terminal dann geöffnet optirunund intel-virtual-outputarbeiten Sie wie erwartet (Hinweis: Manchmal muss ich xrandrzusätzlich ausführen , damit der Bildschirm / Videoprojektor erkannt wird). Jetzt verstehe ich nicht, warum genau derselbe Befehl von Hummelabstürzen ausging, so viele Rätsel hier ... (aber zumindest gibt es eine vorübergehende Lösung).

Wie ich herausgefunden habe: habe ein 'Wrapper'-Skript geschrieben, um den Xserver zu starten, es in der Datei bumblebee.conf als XorgBinary deklariert, die Befehlszeile ($ *) in einer Datei gespeichert und versucht, mit LD_PRELOAD einen Patch auf den XServer zu schreiben Behebung des Absturzes in osLookupColor (funktionierte nicht), aber als ich versuchte, dieselbe Befehlszeile von Hand zu starten, funktionierte es und es funktionierte ohne meinen Patch weiter (aber ich verstehe immer noch nicht warum).

Update 15.11.2013 Nach dem Update habe ich viel Flackern festgestellt , wodurch das System unbrauchbar wurde. Behebung durch Hinzufügen eines Kernel-Parameters i915.enable_psr=0(in /etc/defaults/grub, then sudo update-grub). Wenn Sie jetzt möchten, bedeutet PSR "Panel Self Refresh", eine stromsparende Funktion von Intel-GPUs (die zu Bildschirmflackern führen kann).

BrunoLevy
quelle
3
Du, ich mag dich! : D Ich bin auf Arch Linux, ich konnte nicht starten intel-virtual-output. wurde mit Exit-Code beendet 111. Ich versuchte sogar herauszufinden, womit es zu tun hatte strace. Hab deinen Beitrag gefunden, den ich /etc/X11/xorg.conf.d/20-intel.confgenau wie deinen erstellt habe, und BusID "PCI:2:0:0"für alle Fälle meinen hinzugefügt . Verwendet ähnliche Einstellungen /etc/bumblebee/xorg.conf.nvidiaund bam, intel-virtual-outputläuft gut. xrandrerkennt jetzt alle meine anderen Ports! : D <3 der Teil zur Fehlerbehebung über /var/log/Xorg.8.logwirklich geholfen
GabLeRoux
Ok, nachdem ich ein bisschen getestet habe, sehe ich die mit aufgelisteten Geräte xrandr, aber wenn ich das Kabel einhänge , sehe ich die Maus, aber auf dem externen Display werden keine Fenster angezeigt. Manchmal zeigt es eine Kopie meines Hauptbildschirms und dann werden beide Bildschirme schwarz und nichts passiert. und es stellte sich heraus, dass das System nicht mit beginnt /etc/X11/xorg.conf.d/20-intel.confund ich nichts in den Protokollen sehe. Wie auch immer, danke, dass du das teilst, ich schätze, ich komme einer Lösung näher.
GabLeRoux
Dies hängt möglicherweise von der verwendeten Desktop-Umgebung ab. Ich benutze KDE und musste die Bildschirmkonfiguration in den Einstellungen ein wenig anpassen.
BrunoLevy
Ich glaube, ich habe es jetzt zum Laufen gebracht. Bei meinem Fernseher ist ein Fehler
aufgetreten
1
@BrunoLevy Es funktioniert endlich. Vielen Dank, dass Sie meinem alten Laptop ein neues Leben geben!
Joseph R.