%20nicht%20aktivieren.png)
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 auch wie erwartet funktionieren).
Nun möchte ich einen Videoprojektor an HDMI anschließen können. Ich habe hier [1] gelesen, dass man ihn mit intel-virtual-output konfigurieren kann, wenn HDMI an die NVidia-Karte angeschlossen ist (mithilfe eines VIRTUELLEN Ausgangs, der von xrandr manipuliert werden kann). Allerdings sagt intel-virtual-output:
no VIRTUAL outputs on ":0"
Wenn ich das mache xrandr -q
, wird 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 ist: xserver-xorg-video-intel_2.99.917+git20160706-1_amd64.deb
Update (Sa., 9. Dez. 2016)Ich habe Debian aktualisiert und jetzt stürzt X ab, wenn der zweite Monitor aktiv ist, wenn ich einige Anwendungen starte (z. B. xemacs). Sa., 17. Dez. 2016: Ja, habe es herausgefunden! (Antwort aktualisiert).
Update (Mi., 27. September 2017)Die Methode funktioniert in 99 % der Fälle, aber letzte Woche habe ich einen Beamer ausprobiert, der nur 50-Hz-Modi akzeptiert, und konnte nichts anderes als 60 Hz erreichen (also hat es nicht funktioniert). Weiß jemand, wie man 50-Hz-Modi erzwingt?
Update (Di., 01. Okt. 2019)Argh! Schon wieder kaputt: Nach dem Update von X und dem NVidia-Treiber stürzt optirun jetzt ab ( /var/log/Xorg.8.log
sagt Absturz in Xorg, OsLookupColor+0x139).Update (07. Oktober 2019)Eine vorübergehende Lösung gefunden (aktualisierte Antwort).
[1]https://github.com/Bumblebee-Project/Bumblebee/wiki/Multi-monitor-setup
Antwort1
Ja, herausgefunden!
Um die VIRTUELLE Ausgabe des Intel-Treibers zu aktivieren, müssen Sie eine 20-intel.conf
Datei im Xorg-Konfigurationsverzeichnis erstellen ( /usr/share/X11/xorg.conf.d
unter Debian Stretch, siehe dazu nachlesen /var/log/Xorg.0.log
).
Section "Device"
Identifier "intelgpu0"
Driver "intel"
Option "VirtualHeads" "2"
EndSection
Meine /etc/bumblebee/xorg.conf.nvidia sieht wie folgt aus:
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 ist ein Abschnitt „Bildschirm“ erforderlich, sonst versucht es, das in 20-intel.conf deklarierte Intel-Gerät zu verwenden (das wir gerade zuvor hinzugefügt haben, oh je ...). Es benötigt auch „AllowEmptyInitialConfiguration“, um weiterhin mit optirun starten zu können, wenn kein externer Monitor angeschlossen ist.
Mit dieser Konfiguration und dem Start intel-virtual-output
konnte ich auf meinen HDMI-Anschluss zugreifen.Juhuu!!!
Fehlerbehebung:Wenn es funktioniert optirun
oder intel-virtual-output
nicht, schauen Sie sich das an /var/log/Xorg.8.log
(Bumblebee erstellt einen X-Server mit Anzeige :8, der intern verwendet wird).
AnmerkungenIch habe an mehreren Stellen gelesen, dass auf und auf in KeepUnusedXServer
gesetzt werden sollten , das habe ich nicht gemacht und es funktioniert einwandfrei. Wenn ich das mache, funktioniert es, aber dann bleibt die diskrete GPU eingeschaltet, auch nachdem ich eine optirun-Anwendung beendet oder Intel-Virtual-Output beendet habe, was ich nicht wollte.true
PMMethod
none
/etc/bumblebee/bumblebee.conf
Weitere HinweiseEtwas anderes, das mich zum Kopfschütteln brachte, war das Deaktivieren von Nouveau und das Starten des Intel X-Servers: Dies muss durch Flags erfolgen, die an den Kernel übergeben und in GRUB-Parametern angegeben werden. Darin /etc/defaults/grub
habe ich die 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 maskierten Anführungszeichen.)
Einige Erklärungen: Es vermeidet das Laden von Nouveau (das mit dem Nvidia X-Server nicht kompatibel ist) und weist den Intel-Treiber an, direkt beim Booten in den Grafikmodus zu wechseln. Wenn Sie das 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_xxx
Flags sind auf dieser speziellen Maschine erforderlich, um einen BIOS-Fehler zu beheben, der zum Absturz führt, wenn in den Grafikmodus gewechselt wird und die diskrete GPU ausgeschaltet ist. Beachten Sie, dass dies spezifisch für dieses spezielle Notebook (tragbare HP ZBook-Workstation) ist. Es kann für andere Laptops unnötig sein oder anders sein.
Update (6. Dezember 2017)Bei der neuesten Debian-Distribution (Buster) ist „915.modeset=1 gfxpayload=640x480“ nicht mehr erforderlich. Um nouveau zu entfernen, musste ich außerdem eine nouveau.conf-Datei in /etc/modprobe.d mit „blacklist nouveau“ darin erstellen und dann die Ramdisk mit „update-initramfs -u“ neu erstellen. Starten Sie neu und stellen Sie mit „lsmod |grep nouveau“ sicher, dass „nouveau“ nicht mehr geladen ist.
Update (17. Dezember 2016)Beim neuesten Xorg-Server (1.19) scheint es ein Problem mit einer RandR-Funktion zu geben, die Gamma verwaltet, wenn sie mit verwendet wird intel-virtual-output
. So können Sie den Xserver patchen und zum Laufen bringen:
sudo apt-get build-dep xserver-xorg-core
apt-get source xorg-server
Bearbeiten Sie hw/xfree86/modes/xg86RandR12.c Zeile 1260 und fügen Sie „return“ ein (damit die Funktion xf86RandR12CrtcComputeGamma()
nichts tut).
dpkg-buildpackage -rfakeroot -us -uc
cd ..
sudo dpkg -i xserver-xorg-core_n.nn.n-n_amd64.deb
(ersetzen Sie n.nn.n-n
durch die richtige Version), starten Sie neu undYehaa!! funktioniert wieder!(aber die Lösung ist schnell und unkompliziert)
Aktualisiereneinen Fehlerbericht eingereicht (war bereits bekannt und wurde gerade behoben): https://bugs.freedesktop.org/show_bug.cgi?id=99129
Wie ich es herausgefunden habe:Von einem anderen Rechner aus über SSH installiert xserver-xorg-core-dbg
und ausgeführt .gdb /usr/lib/xorg/Xorg <xorg pid>
Update (11. Januar 17)Der Fehler scheint jetzt in den neuesten Debian-Paketen behoben zu sein.
Update (24. Januar 18)Wenn man einen Beamer für eine Präsentation anschließen möchte und alles direkt vor dem Start konfigurieren muss (Intel-Virtual-Output + Xrandr), kann das stressig werden. Hier ist ein kleines Skript, das diese Aufgabe erledigt (Haftungsausschluss: es gibt noch viel Raum für Verbesserungen, was Stil usw. betrifft):
# 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 (10.07.2019)
Ein „Fix“ für den neuen Absturz: Schreiben Sie Folgendes in ein Skript (rufen Sie es bumblebee-startx.sh
beispielsweise auf):
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 als Root ( ) in einem Terminalfenster aus sudo bumblebee-startx.sh
, lassen Sie das Terminal geöffnet optirun
und intel-virtual-output
arbeiten Sie dann wie erwartet (Hinweis: Manchmal muss ich es xrandr
zusätzlich ausführen, damit der Bildschirm/Videoprojektor erkannt wird). Jetzt verstehe ich nicht, warum derselbe Befehl, der von Bumblebee gestartet wird, abstürzt, so viele Rätsel hier ... (aber zumindest bietet es eine vorübergehende Lösung).
Wie ich es herausgefunden habe:habe ein Wrapper-Skript zum Starten des XServers geschrieben, es in bumblebee.conf als XorgBinary deklariert, dafür gesorgt, dass die Befehlszeile ($*) in einer Datei gespeichert wird, ein paar Sachen ausprobiert, bei denen es um LD_PRELOADing eines Patches für den XServer ging, um den Absturz in osLookupColor zu beheben (funktionierte nicht), aber als ich versuchte, dieselbe Befehlszeile manuell zu starten, funktionierte es, und es funktionierte auch ohne meinen Patch weiter (ich verstehe aber immer noch nicht, warum).
Aktualisierung 15.11.2019
Nach dem Update kam es bei mir zu starkem Flackern, wodurch das System unbrauchbar wurde. Behoben durch Hinzufügen von Kernelparametern i915.enable_psr=0
(in /etc/defaults/grub
, dann sudo update-grub
). Falls Sie es wissen möchten: PSR steht für „Panel Self Refresh“, eine Energiesparfunktion von Intel-GPUs (die Bildschirmflackern verursachen kann).