.png)
Estoy intentando utilizar la salida HDMI en una PC (HP ZBook) con Debian (stretch). He configurado Bumblebee, funciona bien (glxinfo y optirun glxinfo informan la información esperada y probé sombreadores GLSL complicados que también funcionan como se esperaba).
Ahora me gustaría poder conectar un videoproyector al HDMI. He leído aquí [1] que la salida virtual Intel se puede usar para configurarla cuando el HDMI está conectado en la placa NVidia (usando una salida VIRTUAL que puede ser manipulada por xrandr). Sin embargo, Intel-virtual-output dice:
no VIRTUAL outputs on ":0"
Cuando lo hago xrandr -q
, no aparece ninguna salida VIRTUAL en la lista, solo tengo:
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)
Mi versión instalada de xserver-xorg-video-intel es: xserver-xorg-video-intel_2.99.917+git20160706-1_amd64.deb
Actualización (sábado 9 de diciembre de 2016)He actualizado Debian y ahora X falla cuando el segundo monitor está activo cuando inicio algunas aplicaciones (por ejemplo, xemacs). Se sentó. 17 de diciembre de 2016: ¡Sí, lo descubrí! (actualizó la respuesta).
Actualización (miércoles 27 de septiembre de 2017)El método funciona en el 99% de los casos, pero la semana pasada probé un proyector que sólo acepta modos de 50 Hz y no pude obtener nada más que 60 Hz (por lo que no funcionó). ¿Alguien sabe cómo forzar los modos de 50 Hz?
Actualización (martes 01 de octubre de 2019)¡Argh! Roto de nuevo: después de actualizar X y el controlador NVidia, optirun ahora falla ( /var/log/Xorg.8.log
dice falla en Xorg, OsLookupColor+0x139).Actualización (07 de octubre de 2019)Encontré una solución temporal (respuesta actualizada).
[1]https://github.com/Bumblebee-Project/Bumblebee/wiki/Multi-monitor-setup
Respuesta1
¡Sí, lo descubrí!
Para activar la salida VIRTUAL del controlador Intel, debe crear un 20-intel.conf
archivo en el directorio de configuración de Xorg ( /usr/share/X11/xorg.conf.d
en Debian Stretch, lo descubrió leyendo /var/log/Xorg.0.log
)
Section "Device"
Identifier "intelgpu0"
Driver "intel"
Option "VirtualHeads" "2"
EndSection
Mi /etc/bumblebee/xorg.conf.nvidia es el siguiente:
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
Algunas explicaciones: necesita una sección "Pantalla", de lo contrario intenta usar el dispositivo Intel declarado en 20-intel.conf (que acabamos de agregar antes, oh Dios...). También necesita "AllowEmptyInitialConfiguration" para poder iniciar con optirun cuando no hay un monitor externo conectado.
Con esta configuración y comenzando intel-virtual-output
, pude acceder a mi puerto HDMI.¡¡¡Síiii!!!
Solución de problemas:Si funciona optirun
o no, eche un vistazo (bumblebee crea un servidor X con pantalla: 8 usado internamente).intel-virtual-output
/var/log/Xorg.8.log
NotasLeí en varios lugares que KeepUnusedXServer
deberían configurarse en true
y PMMethod
en none
, /etc/bumblebee/bumblebee.conf
no lo hice y funciona bien. Si hago eso, funciona, pero luego la GPU discreta permanece encendida incluso después de salir de una aplicación optimizada o eliminar la salida virtual de Intel, lo cual no quería.
Más notasOtra cosa que me hizo golpearme la cabeza contra la pared fue desactivar Nouveau e iniciar el servidor Intel X: debe hacerse mediante banderas pasadas al kernel, especificadas en los parámetros de GRUB. En /etc/defaults/grub
, tengo la siguiente línea:
GRUB_CMDLINE_LINUX_DEFAULT="quiet blacklist.nouveau=1 i915.modeset=1 gfxpayload=640x480 acpi_backlight=vendor acpi_osi=! acpi_osi=\"Windows 2009\""
(cuidado con las comillas y las comillas escapadas).
Algunas explicaciones: evita cargar nouveau (que es incompatible con el servidor Nvidia X) y le dice al controlador Intel que vaya al modo de gráficos justo en el momento del arranque. Si no lo hace, el servidor Intel X no podrá iniciarse y recurrirá a un servidor VESA antiguo con renderizado 3D del lado de la CPU. Las acpi_xxx
banderas son necesarias en esta máquina específica para superar un error de BIOS que hace que falle al entrar en modo de gráficos con la GPU discreta apagada. Tenga en cuenta que es específico de esta computadora portátil en particular (estación de trabajo portátil HP ZBook), puede ser innecesario o diferir para otras computadoras portátiles.
Actualización (6 de diciembre de 2017)Con la última distribución de Debian (Buster), "915.modeset=1 gfxpayload=640x480" es innecesario. Para eliminar nouveau, también necesitaba crear un archivo nouveau.conf en /etc/modprobe.d con "blacklist nouveau" y luego volver a crear el disco RAM con "update-initramfs -u". Reinicie y asegúrese de que "nouveau" ya no esté cargado con "lsmod |grep nouveau".
Actualización (17 de diciembre de 2016)Con el último servidor xorg (1.19), parece haber un problema en una función RandR que administra Gamma cuando se usa con intel-virtual-output
. Este es el procedimiento para parchear el Xserver y hacerlo funcionar:
sudo apt-get build-dep xserver-xorg-core
apt-get source xorg-server
edite hw/xfree86/modes/xg86RandR12.c Línea 1260, inserte "return" (para que la función xf86RandR12CrtcComputeGamma()
no haga nada)
dpkg-buildpackage -rfakeroot -us -uc
cd ..
sudo dpkg -i xserver-xorg-core_n.nn.n-n_amd64.deb
(reemplace el n.nn.n-n
con la versión correcta), reinicie yYehaa!! funciona de nuevo!(pero es una solución rápida y sucia)
Actualizarpresentó un informe de error (ya se conocía y se acaba de solucionar): https://bugs.freedesktop.org/show_bug.cgi?id=99129
Cómo lo descubrí:
Instalado xserver-xorg-core-dbg
y realizado gdb /usr/lib/xorg/Xorg <xorg pid>
desde otra máquina mediante ssh.
Actualización (del 11 al 17 de enero)Parece que el error ya está solucionado en los últimos paquetes de Debian.
Actualización (24 de enero 18)Cuando desea conectar un proyector para hacer una presentación y necesita configurar todo justo antes de comenzar (intel-virtual-output + xrandr), puede resultar estresante. Aquí hay un pequeño script que hace el trabajo (descargo de responsabilidad: mucho margen de mejora en cuanto al estilo, etc.):
# 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
actualización (07/10/2019)
Una "solución" para el nuevo fallo: escribe lo siguiente en un script (llámalo, bumblebee-startx.sh
por ejemplo):
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/
(reemplace PCI:nn:nn:n con la dirección de su tarjeta NVidia, obtenida con lspci)
Ejecute este script desde una ventana de terminal como root ( sudo bumblebee-startx.sh
), mantenga el terminal abierto optirun
y luego intel-virtual-output
funcione como se esperaba (nota: a veces necesito ejecutarlo xrandr
además para que se detecte la pantalla/proyector de video). Ahora no entiendo por qué el mismo comando comenzó desde los bloqueos de Bumblebee, tantos misterios aquí... (pero al menos da una solución temporal).
Cómo lo descubrí:Escribí un script 'contenedor' para iniciar el xserver, lo declaró como XorgBinary en bumblebee.conf, hice que guardara la línea de comando ($*) en un archivo, probé algunas cosas relacionadas con LD_PRELOAD, aplicando un parche al XServer para arreglar el fallo en osLookupColor (no funcionó), pero cuando intenté ejecutar la misma línea de comando manualmente, funcionó y continuó funcionando sin mi parche (pero todavía no entiendo por qué).
Actualización 15/11/2019
Después de la actualización, experimenté muchos parpadeos, lo que dejó el sistema inutilizable. Se solucionó agregando el parámetro del kernel i915.enable_psr=0
(en /etc/defaults/grub
, luego sudo update-grub
). Si lo desea ahora, PSR significa "actualización automática del panel", una función de ahorro de energía de las GPU Intel (que puede provocar parpadeos en la pantalla).