Difference between revisions of "Bumblebee (Español)"

From ArchWiki
Jump to: navigation, search
(Instalación)
(update Pkg/AUR templates (https://github.com/lahwaacz/wiki-scripts/blob/master/update-package-templates.py))
 
(39 intermediate revisions by 5 users not shown)
Line 1: Line 1:
 
[[Category:Graphics (Español)]]
 
[[Category:Graphics (Español)]]
[[Category:X Server (Español)]]
+
[[Category:X server (Español)]]
 
[[en:Bumblebee]]
 
[[en:Bumblebee]]
 
[[fr:Bumblebee]]
 
[[fr:Bumblebee]]
 
[[it:Bumblebee]]
 
[[it:Bumblebee]]
 +
[[ja:Bumblebee]]
 
[[ru:Bumblebee]]
 
[[ru:Bumblebee]]
 
[[tr:Bumblebee]]
 
[[tr:Bumblebee]]
Line 30: Line 31:
 
Varios paquetes están disponibles para una configuración completa:
 
Varios paquetes están disponibles para una configuración completa:
  
* {{aur|bumblebee}} - el paquete principal que proporciona el demonio y programas clientes.
+
* {{Pkg|bumblebee}} - el paquete principal que proporciona el demonio y programas clientes.
* (opcional) {{aur|bbswitch}} (o {{aur|dkms-bbswitch}}) - recomendado para ahorrar energía desactivando la tarjeta Nvidia.
+
* (opcional) {{Pkg|bbswitch}} (o {{Pkg|bbswitch-dkms}}) - recomendado para ahorrar energía desactivando la tarjeta Nvidia.
 
* (opcional) Si quiere algo más que un simple ahorro de energía, es decir procesar programas con la tarjeta Nvidia dedicada, también es necesario:
 
* (opcional) Si quiere algo más que un simple ahorro de energía, es decir procesar programas con la tarjeta Nvidia dedicada, también es necesario:
 
** Un controlador para la tarjeta de Nvidia. El controlador de código abierto {{ic|nouveau}} o el controlador propietario {{ic|nvidia}}. Véase la subsección correspondiente.
 
** Un controlador para la tarjeta de Nvidia. El controlador de código abierto {{ic|nouveau}} o el controlador propietario {{ic|nvidia}}. Véase la subsección correspondiente.
** Un puente para los procesos/pantalla. Dos paquetes están disponibles en la actualidad para ello, {{aur|primus-git}} y {{aur|virtualgl}}. Solo uno de ellos es necesario, pero la instalación de ambos no hace daño.
+
** Un puente para los procesos/pantalla. Dos paquetes están disponibles en la actualidad para ello, {{Pkg|primus}} (o {{AUR|primus-git}}{{Broken package link|{{aur-mirror|primus-git}}}}) y {{Pkg|virtualgl}}. Solo uno de ellos es necesario, pero la instalación de ambos no hace daño.
  
{{Nota|Si desea ejecutar una aplicación de 32 bits en un sistema de 64-bit debe instalar las bibliotecas apropiadas lib32-* del programa. Además de esto, también es necesario instalar {{AUR|lib32-virtualgl}} o {{aur|lib32-primus-git}}, dependiendo de su elección para el «render bridge» (''puentear prestaciones''). Basta con asegurarse de ejecutar primusrun  en lugar de optirun si decide utilizar Primus render bridge.}}
+
{{Nota|Si desea ejecutar una aplicación de 32 bits en un sistema de 64-bit debe instalar las bibliotecas apropiadas lib32-* del programa. Además de esto, también es necesario instalar {{Pkg|lib32-virtualgl}} o {{Pkg|lib32-primus}}, dependiendo de su elección para el «render bridge» (''puentear prestaciones''). Basta con asegurarse de ejecutar {{ic|primusrun}} en lugar de {{ic|optirun}} si decide utilizar Primus render bridge.}}
  
===Instalar Bumblebee con Intel / nvidia===
+
===Instalar Bumblebee con Intel/NVIDIA===
  
{{Advertencia|No instale el paquete original {{pkg|nvidia-utils}} con Bumblebee - ¡se romperá el sistema!}}
+
* Instale {{pkg|intel-dri}}{{Broken package link|replaced by {{Pkg|mesa}}}}, {{pkg|xf86-video-intel}}, {{pkg|bumblebee}} y {{pkg|nvidia}}.
  
* Instale el paquete especial de nvidia {{aur|nvidia-utils-bumblebee}} para bumblebee desde [[AUR]]. Si desea ejecutar aplicaciones de 32 bits (como los juegos con wine) en un sistema de 64-bit es necesario el paquete adicional {{AUR|lib32-nvidia-utils-bumblebee}} también.
+
Si desea ejecutar las aplicaciones de 32 bits (como los juegos con wine) en un sistema de 64 bits necesita también el paquete {{pkg|lib32-nvidia-utils}}.
* Instale el módulo del kernel {{AUR|nvidia-bumblebee}}. A diferencia de {{pkg|nvidia}}, este paquete no depende de {{pkg|nvidia-utils}}. Si instala {{AUR|dkms-nvidia}} o {{pkg|nvidia}}, no continúe actualizando si se le pide que sustituya {{aur|nvidia-utils-bumblebee}} por {{pkg|nvidia-utils}}.
+
  
===Instalar Bumblebee con Intel / nouveau===
+
{{Advertencia|No instale {{pkg|lib32-nvidia-libgl}}. Bumblebee encontrará las bibliotecas lib32 de NVIDIA correctas sin aquel paquete.}}
  
Instale el driver nouveau y los paquetes necesarios, en primer lugar:
+
===Instalar Bumblebee con Intel/Nouveau===
{{bc|# pacman -S xf86-video-nouveau nouveau-dri mesa}}
+
  
* {{Pkg|xf86-video-nouveau}} controlador experimental con aceleración 3D.
+
Instale:
* {{Pkg|nouveau-dri}} controladores Mesa classic DRI + Gallium3D.
+
 
* {{Pkg|mesa}} bibliotecas gráficas Mesa 3-D.
+
* {{Pkg|xf86-video-nouveau}} - controlador experimental con aceleración 3D.
 +
* {{Pkg|nouveau-dri}}{{Broken package link|replaced by {{Pkg|mesa}}}} - controladores Mesa classic DRI + Gallium3D.
 +
* {{Pkg|mesa}} - bibliotecas gráficas Mesa 3-D.
  
 
==Iniciar Bumblebee==
 
==Iniciar Bumblebee==
Line 62: Line 63:
 
donde {{ic|$USER}} es el nombre de inicio de sesión del usuario. A continuación, cierre la sesión para que surtan efectos los cambios de grupo.
 
donde {{ic|$USER}} es el nombre de inicio de sesión del usuario. A continuación, cierre la sesión para que surtan efectos los cambios de grupo.
  
Para iniciar bumblebee automáticamente al arranque, habilite el servicio {{ic|bumblebeed}}:
+
{{Sugerencia|Para iniciar '''bumblebee''' automáticamente al arranque, active el servicio '''bumblebeed''' de [[Systemd (Español)|systemd]].}}
 
+
# systemctl enable bumblebeed.service
+
  
 
Terminado, reinicie el sistema y utilice el programa {{ic|[[#Uso|optirun]]}} para disfrutar de la tecnología  NVIDIA Optimus para el ''rendering''.
 
Terminado, reinicie el sistema y utilice el programa {{ic|[[#Uso|optirun]]}} para disfrutar de la tecnología  NVIDIA Optimus para el ''rendering''.
 +
 +
Si simplemente desea desactivar su tarjeta NVIDIA, esto debería ser todo lo que se necesita, además de tener instalado {{ic|bbswitch}}. El demonio bumblebeed, de forma predeterminada, instruye a bbswitch para desactivar la tarjeta cuando se inicia. Consulte también la sección [[#Administración de energía|administración de energía]] más abajo.
  
 
==Uso==
 
==Uso==
Line 79: Line 80:
 
Utilización general:
 
Utilización general:
  
{{bc|$ optirun [opciones] <aplicación> [parámetros-de-la-aplicación]}}
+
{{bc|$ optirun [opciones] ''aplicación'' [parámetros-de-la-aplicación]}}
  
 
Algunos ejemplos:
 
Algunos ejemplos:
Line 85: Line 86:
 
Iniciar aplicaciones de Windows con Optimus:
 
Iniciar aplicaciones de Windows con Optimus:
  
  $ optirun wine <aplicación de windows>.exe
+
  $ optirun wine ''aplicación de windows''.exe
  
 
Utilizar NVIDIA Settings con Optimus:
 
Utilizar NVIDIA Settings con Optimus:
Line 91: Line 92:
 
  $ optirun nvidia-settings -c :8
 
  $ optirun nvidia-settings -c :8
  
Para obtener una lista de opciones para {{ic|optirun}}, ejecute:
+
Para obtener una lista de opciones para {{ic|optirun}}, vea las páginas del manual.
 
+
$ man optirun
+
  
 
Existe un programa nuevo llamado a convertirse en la opción predefinida debido a que aporta un mejor desempeño, llamado primus. En la actualidad es necesario ejecutar este programa por separado (no admite opciones a diferencia de {{ic|optirun}}), pero en el futuro va a poder ser iniciado por optirun. Utilización:
 
Existe un programa nuevo llamado a convertirse en la opción predefinida debido a que aporta un mejor desempeño, llamado primus. En la actualidad es necesario ejecutar este programa por separado (no admite opciones a diferencia de {{ic|optirun}}), pero en el futuro va a poder ser iniciado por optirun. Utilización:
Line 122: Line 121:
  
 
{{hc|/etc/bumblebee/bumblebee.conf|<nowiki>
 
{{hc|/etc/bumblebee/bumblebee.conf|<nowiki>
...
+
[...]
 
[optirun]
 
[optirun]
 
VGLTransport=proxy
 
VGLTransport=proxy
...
+
[...]
 
</nowiki>}}
 
</nowiki>}}
  
Line 148: Line 147:
 
</nowiki>}}
 
</nowiki>}}
  
====Habilitar la tarjeta NVIDIA durante el apagado====
+
====Activar la tarjeta NVIDIA durante el apagado====
  
La tarjeta NVIDIA no puede inicializarse correctamente durante la fase de arranque si la tarjeta se apaga cuando el sistema se cerró por última vez. Una solución es configurar la opción {{ic|TurnCardOffAtExit&#61;false}} en {{ic|/etc/bumblebee/bumblebee.conf}}, sin embargo, ésto todavía permitirá a la tarjeta detenerse cada vez que lo haga el daemon de Bumblebee, aunque se haga manualmente. Para asegurarse de que la tarjeta NVIDIA esté siempre accecible, es decir, activa, durante el apagado, añada el siguiente [[Boot process#Custom_hooks|hook personalizado]] (si está utilizando {{AUR|bbswitch}}):
+
La tarjeta NVIDIA no puede inicializarse correctamente durante la fase de arranque si la tarjeta se apaga cuando el sistema se cerró por última vez. Una solución es configurar la opción {{ic|TurnCardOffAtExit&#61;false}} en {{ic|/etc/bumblebee/bumblebee.conf}}, sin embargo, ésto todavía permitirá a la tarjeta detenerse cada vez que lo haga el daemon de Bumblebee, aunque se haga manualmente. Para asegurarse de que la tarjeta NVIDIA esté siempre accecible, es decir, activa, durante el apagado, añada el siguiente servicio de[[Systemd (Español)|systemd]] (si está utilizando {{Pkg|bbswitch}}):
  
{{hc|/etc/rc.d/functions.d/nvidia-card-enable|<nowiki>
+
{{hc|/etc/systemd/system/nvidia-enable.service|2=
nvidia_card_enable() {
+
[Unit]
  BBSWITCH=/proc/acpi/bbswitch
+
Description=Enable NVIDIA card
  
  stat_busy "Enabling NVIDIA GPU"
+
[Service]
 +
Type=oneshot
 +
ExecStart=/bin/sh -c 'echo ON > /proc/acpi/bbswitch'
  
  if [ -w ${BBSWITCH} ]; then
+
[Install]
    echo ON > ${BBSWITCH}
+
WantedBy=shutdown.target
    stat_done
+
}}
  else
+
    stat_fail
+
  fi
+
}
+
  
add_hook shutdown_poweroff nvidia_card_enable
+
A continuación, active el servicio ejecutando <code>systemctl enable nvidia-enable.service</code> en un terminal como root.
</nowiki>}}
+
  
===Varios monitores===  
+
=== Varios monitores ===
  
{{Nota|Esta configuración sólo es válida para los ordenadores portátiles, donde se conecta la salida adicional para la tarjeta intel. Desafortunadamente este no es el caso de algunos (¿o más?) ordenadores portátiles, donde, la salida HDMI está conectada físicamente a la tarjeta de NVIDIA. En ese caso no existe una solución ideal, como se muestra aquí. Pero puede configurar su salida adicional, por lo menos, para ser utilizable con las instrucciones Bumblebee de la [https://github.com/Bumblebee-Project/Bumblebee/wiki/Multi-monitor-setup página wiki].}}
+
==== Salidas conectadas al chip de Intel ====
  
Es posible configurar varios monitores con xorg.conf. Se puede ajustar para utilizar la tarjeta Intel, pero con Bumblebee todavía es posible usar la tarjeta NVIDIA. Un ejemplo de configuración, que sigue abajo, muestra el uso de dos tarjetas idénticas con una resolución de 1080p y con conexión HDMI.
+
Si el puerto (DisplayPort/HDMI/VGA) está conectado al chip de Intel, es posible configurar varios monitores con xorg.conf. Puede ajustarse para utilizar la tarjeta Intel, pero con Bumblebee todavía será posible usar la tarjeta NVIDIA. Un ejemplo de configuración, a continuación, muestra dos pantallas idénticas con una resolución de 1080p y utilizando la salida HDMI.
  
{{hc|/etc/X11/xorg.conf|<nowiki>
+
{{hc|/etc/X11/xorg.conf|2=
 
Section "Screen"
 
Section "Screen"
 
     Identifier    "Screen0"
 
     Identifier    "Screen0"
Line 181: Line 177:
 
     Monitor        "Monitor0"
 
     Monitor        "Monitor0"
 
     DefaultDepth    24
 
     DefaultDepth    24
     Option        "TwinView"   "0"
+
     Option        "TwinView" "0"
 
     SubSection "Display"
 
     SubSection "Display"
 
         Depth          24
 
         Depth          24
Line 193: Line 189:
 
     Monitor        "Monitor1"
 
     Monitor        "Monitor1"
 
     DefaultDepth  24
 
     DefaultDepth  24
     Option        "TwinView"   "0"
+
     Option        "TwinView" "0"
 
     SubSection "Display"
 
     SubSection "Display"
 
         Depth          24
 
         Depth          24
Line 202: Line 198:
 
Section "Monitor"
 
Section "Monitor"
 
     Identifier    "Monitor0"
 
     Identifier    "Monitor0"
     Option        "Enable"     "true"
+
     Option        "Enable" "true"
 
EndSection
 
EndSection
  
 
Section "Monitor"
 
Section "Monitor"
 
     Identifier    "Monitor1"
 
     Identifier    "Monitor1"
     Option        "Enable"     "true"
+
     Option        "Enable" "true"
 
EndSection
 
EndSection
  
Line 213: Line 209:
 
     Identifier    "intelgpu0"
 
     Identifier    "intelgpu0"
 
     Driver        "intel"
 
     Driver        "intel"
     Option        "XvMC"       "true"
+
     Option        "XvMC" "true"
     Option        "UseEvents"   "true"
+
     Option        "UseEvents" "true"
 
     Option        "AccelMethod" "UXA"
 
     Option        "AccelMethod" "UXA"
 
     BusID          "PCI:0:2:0"
 
     BusID          "PCI:0:2:0"
Line 222: Line 218:
 
     Identifier    "intelgpu1"
 
     Identifier    "intelgpu1"
 
     Driver        "intel"
 
     Driver        "intel"
     Option        "XvMC"       "true"
+
     Option        "XvMC" "true"
     Option        "UseEvents"   "true"
+
     Option        "UseEvents" "true"
 
     Option        "AccelMethod" "UXA"
 
     Option        "AccelMethod" "UXA"
 
     BusID          "PCI:0:2:0"
 
     BusID          "PCI:0:2:0"
 
EndSection
 
EndSection
</nowiki>}}
 
  
Probablemente será necesario cambiar el BusID en base a sus necesidades:
+
Section "Device"
 +
    Identifier "nvidiagpu1"
 +
    Driver "nvidia"
 +
    BusID "PCI:0:1:0"
 +
EndSection
 +
 
 +
}}
 +
 
 +
Necesitará probablemente cambiar el BusID tanto para el procesador Intel como para la tarjeta NVIDIA.
  
 
{{hc|<nowiki>$ lspci | grep VGA</nowiki>|
 
{{hc|<nowiki>$ lspci | grep VGA</nowiki>|
Line 236: Line 239:
  
 
En este ejemplo el BusID es 0:2:0
 
En este ejemplo el BusID es 0:2:0
 +
 +
==== Salidas conectadas al chip de NVIDIA ====
 +
 +
En algunos notebooks, la salida de vídeo digital (HDMI o Displayport) está conectado con el chip de NVIDIA. Si desea utilizar todas las pantallas en tal sistema simultáneamente, tiene que ejecutar dos servidores X. El primer servidor va a utilizar el controlador de Intel para el panel del notebook y una pantalla conectada a VGA. La segunda se iniciará a través de optirun con la tarjeta de NVIDIA, y acciona la pantalla digital.
 +
 +
Actualmente existen varias instrucciones en la web sobre cómo se pueden hacer tales ajustes para que funcione. Una de esas instrucciones se pueden encontrar en la [https://github.com/Bumblebee-Project/Bumblebee/wiki/Multi-monitor-setup página wiki] de bumblebee. A continuación se describe otro enfoque adecuado.
 +
 +
===== xf86-video-intel-virtual-crtc y hybrid-screenclone =====
 +
 +
Este método utiliza un controlador parcheado de Intel, que viene modificado para tener una pantalla VIRTUAL, y el programa hybrid-screenclone que viene usado para copiar la pantalla desde la pantalla virtual a un segundo servidor X que se ejecuta en la tarjeta NVIDIA utilizando Optirun. El mérito debemos atribuirlo a [http://judsonsnotes.com/notes/index.php?option=com_content&view=article&id=673:triple-head-monitors-on-thinkpad-t520&catid=37:tech-notes&Itemid=59 Triple-head monitors on a Thinkpad T520] que contiene una explicación detallada sobre cómo hacer esto en un sistema Ubuntu.
 +
 +
Para simplificar, DP se utiliza a continuación para referirse a la salida digital (DisplayPort). Las instrucciones deben ser las mismas si el portátil tiene un puerto HDMI en su lugar.
 +
 +
* Configurar el sistema para utilizar exclusivamente la tarjeta NVIDIA, hacer prueba combinando DP/Monitor y generar xorg.nvidia.conf. No se requiere este paso, pero se recomienda si la Bios del sistema tiene una opción para cambiar los gráficos a modalidad «NVIDIA-only». Para ello, primero desinstale el paquete bumlbebee e instale solo el controlador de NVIDIA. A continuación, reinicie el sistema, entre en la BIOS y cambie los gráficos a «NVIDIA-only». Cuando vuelva a Arch, conecte el Monitor a la DP y utilice startx para comprobar que todo funciona correctamente. Utilice Xorg -configure para generar un archivo xorg.conf para la tarjeta NVIDIA. Este nos será muy útil más adelante.
 +
* Vuelva a instalar bumlbebee y bbswitch, reinicie y configure la gráfica del sistema a «Hybrid» en la BIOS.
 +
* Instale {{AUR|xf86-video-intel-virtual-crtc}}{{Broken package link|{{aur-mirror|xf86-video-intel-virtual-crtc}}}}, y sustituya el paquete xf86-video-intel con aquel.
 +
* Descargue [https://github.com/liskin/hybrid-screenclone hybrid-screenclone] y compílelo utilizando "make".
 +
* Cambie estos ajustes en el archivo bumblebee.conf:
 +
{{hc|/etc/bumblebee/bumblebee.conf|2=
 +
KeepUnusedXServer=true
 +
Driver=nvidia
 +
}}
 +
{{Nota|Lance el parámetro PMMethod ajustado para "bumblebee". Esto es contrario a las instrucciones relacionadas en el artículo anterior, pero en Arch es necesario lanzarlo para que el módulo bbswitch se cargue automáticamente con esta opción.}}
 +
* Copie el archivo xorg.conf generado en el Paso 1 al directorio {{ic|/etc/X11}} (por ejemplo {{ic|/etc/X11/xorg.nvidia.conf}}). En la sección [driver-nvidia] del archivo {{ic|bumblebee.conf}}, cambie el parámetro {{ic|XorgConfFile}} para que apunte al mismo.
 +
* Compruebe que la configuración del archivo {{ic|/etc/X11/xorg.nvidia.conf}} funciona con {{ic|startx -- -config /etc/X11/xorg.nvidia.conf}}
 +
* Para que su monitor DP aparezca con la resolución correcta en la pantalla VIRTUAL puede que tenga que editar la sección Monitor del archivo {{ic|/etc/xorg.nvidia.conf}}. Dado que este es un trabajo extra, podría intentar continuar con el archivo generado automáticamente. Vuelva a este paso de las instrucciones si encuentra que la resolución de la pantalla VIRTUAL, como se muestra por xrandr, no es la correcta.
 +
** Primero tiene que generar un Modeline. Puede utilizar la herramienta [http://amlc.berlios.de/ amlc], el cual generará un Modeline introduciendo algunos parámetros básicos.
 +
::Ejemplo:  Monitor de 24" de 1920x1080
 +
::Iniciar la utilidad con {{ic|amlc -c}}
 +
{{bc|Monitor Identifier: Samsung 2494
 +
Aspect Ratio: 2
 +
physical size[cm]: 60
 +
Ideal refresh rate, in Hz: 60
 +
min HSync, kHz: 40
 +
max HSync, kHz: 90
 +
min VSync, Hz: 50
 +
max VSync, Hz: 70
 +
max pixel Clock, MHz: 400}}
 +
 +
Esta es la sección Monitor que {{ic|amlc}} genera para esta entrada:
 +
{{bc|Section "Monitor"
 +
    Identifier    "Samsung 2494"
 +
    ModelName      "Generated by Another Modeline Calculator"
 +
    HorizSync      40-90
 +
    VertRefresh    50-70
 +
    DisplaySize    532 299  # Aspect ratio 1.778:1
 +
    # Custom modes
 +
    Modeline "1920x1080" 174.83 1920 2056 2248 2536 1080 1081 1084 1149            # 174.83 MHz,  68.94 kHz,  60.00 Hz
 +
EndSection  # Samsung 2494}}
 +
 +
Cambie su archivo {{ic|xorg.nvidia.conf}} para incluir esta sección Monitor. También puede recortar su archivo de forma que solo contenga las secciones ServerLayout, Monitor, Device y Screen. He aquí un archivo de referencia:
 +
{{hc|/etc/X11/xorg.nvidia.conf|
 +
Section "ServerLayout"
 +
        Identifier    "X.org Nvidia DP"
 +
        Screen      0  "Screen0" 0 0
 +
        InputDevice    "Mouse0" "CorePointer"
 +
        InputDevice    "Keyboard0" "CoreKeyboard"
 +
EndSection
 +
 +
Section "Monitor"
 +
    Identifier    "Samsung 2494"
 +
    ModelName      "Generated by Another Modeline Calculator"
 +
    HorizSync      40-90
 +
    VertRefresh    50-70
 +
    DisplaySize    532 299  # Aspect ratio 1.778:1
 +
    # Custom modes
 +
    Modeline "1920x1080" 174.83 1920 2056 2248 2536 1080 1081 1084 1149            # 174.83 MHz,  68.94 kHz,  60.00 Hz
 +
EndSection  # Samsung 2494
 +
 +
Section "Device"
 +
        Identifier  "DiscreteNvidia"
 +
        Driver      "nvidia"
 +
        BusID      "PCI:1:0:0"
 +
EndSection
 +
 +
Section "Screen"
 +
        Identifier "Screen0"
 +
        Device    "DiscreteNvidia"
 +
        Monitor    "Samsung 2494"
 +
        SubSection "Display"
 +
                Viewport  0 0
 +
                Depth    24
 +
        EndSubSection
 +
EndSection
 +
}}
 +
* Conecte los dos monitores externos e inicie X (con startx). Mire el archivo {{ic|/var/log/Xorg.0.log}}. Compruebe que el monitor VGA se detecta con las modalidades correctas. También debería ver una salida VIRTUAL mostrada con una modalidad propia.
 +
* Ejecute {{ic|xrandr}} y las tres pantallas deberían aparecer allí, junto con las modalidades soportadas.
 +
* Si el listado Modelines para la pantalla VIRTUAL no tiene la resolución nativa de los monitores, anote el nombre de la salida exacta. Para este ejemplo es {{ic|VIRTUAL1}}.  A continuación, echaremos un vistazo de nuevo al archivo Xorg.0.log. Debe verse el mensaje:  "Output VIRTUAL1 has no monitor section" (''«La salida VIRTUAL1 no tiene la sección del monitor»'').  Vamos a cambiar esto poniendo un archivo con la necesaria sección Monitor en {{ic|/etc/X11/xorg.conf.d}}. Salimos y reiniciamos X seguidamente.
 +
{{hc|/etc/X11/xorg.conf.d/20-monitor_samsung.conf|
 +
Section "Monitor"
 +
    Identifier    "VIRTUAL1"
 +
    ModelName      "Generated by Another Modeline Calculator"
 +
    HorizSync      40-90
 +
    VertRefresh    50-70
 +
    DisplaySize    532 299  # Aspect ratio 1.778:1
 +
    # Custom modes
 +
    Modeline "1920x1080" 174.83 1920 2056 2248 2536 1080 1081 1084 1149            # 174.83 MHz,  68.94 kHz,  60.00 Hz
 +
EndSection  # Samsung 2494
 +
}}
 +
* Cambie a la tarjeta NVIDIA ejecutando: {{ic|sudo tee /proc/acpi/bbswitch <<< ON}}.
 +
* Comience otro servidor X para el monitor conectado a DisplayPort: {{ic|sudo optirun true}}.
 +
* Compruebe el registro del segundo servidor X en {{ic|/var/log/Xorg.8.log}}.
 +
* Ejecute xrandr para configurar la pantalla VIRTUAL con el tamaño y la ubicación correcta, por ejemplo: {{ic|xrandr --output VGA1 --auto --rotate normal --pos 0x0 --output VIRTUAL1 --mode 1920x1080 --right-of VGA1 --output LVDS1 --auto --rotate normal --right-of VIRTUAL1}}.
 +
* Tome nota de la posición de la pantalla VIRTUAL en la lista de salidas como se muestra por xrandr. El conteo comienza por cero, es decir, si es la tercera pantalla la que se muestra, se especificaría {{ic|-x 2}} como parámetro para {{ic|screenclone}}.
 +
* Clonar el contenido de la pantalla VIRTUAL en el servidor X creado por bumblebee,que está conectado al monitor a través de DisplayPort y  del chip de NVIDIA:
 +
: {{ic|screenclone -d :8 -x 2}}
 +
 +
Eso es todo, las tres pantallas deberían estar en funcionamiento ahora.
 +
 +
== Cambiar entre tarjeta dedicada e integrada como Windows==
 +
 +
En Windows, la forma en que funciona Optimus con NVIDIA se basa en la existencia de una lista blanca de aplicaciones las cuales demandan Optimus, y se pueden agregar aplicaciones a dicha lista blanca, según se necesite. Al iniciar la aplicación, esto determina automáticamente qué tarjeta usar.
 +
 +
Para imitar este comportamiento en Linux, es posible utilizar {{AUR|libgl-switcheroo-git}}{{Broken package link|{{aur-mirror|libgl-switcheroo-git}}}}. Después de instalarlo, puede agregar lo siguiente en el archivo .xprofile.
 +
 +
{{hc|~/.xprofile|2=
 +
mkdir -p /tmp/libgl-switcheroo-$USER/fs
 +
gtkglswitch &
 +
libgl-switcheroo /tmp/libgl-switcheroo-$USER/fs &
 +
}}
 +
 +
Para permitir esto, debe agregar lo que sigue abajo para la shell que tiene la intención de lanzar las aplicaciones (o simplemente agréguelo al archivo .xprofile):
 +
export LD_LIBRARY_PATH=/tmp/libgl-switcheroo-$USER/fs/\$LIB${LD_LIBRARY_PATH+:}$LD_LIBRARY_PATH
 +
 +
Una vez hecho esto, cualquier aplicación que se inicie desde esta shell abrirá una ventana GTK+ preguntando cuál es la tarjeta en la que desea ejecutarla (también se puede añadir una aplicación a la lista blanca en la configuración). La configuración se encuentra en {{ic|$XDG_CONFIG_HOME/libgl-switcheroo.conf}}, normalmente {{ic|~/.config/libgl-switcheroo.conf}}
  
 
==CUDA sin Bumblebee==
 
==CUDA sin Bumblebee==
  
Esto no está bien documentado, pero no es necesario que Bumblebee utilice CUDA y pueda funcionar incluso en máquinas donde optirun falla. Para una guía sobre cómo conseguir que funcione con el Lenovo IdeaPad Y580 (que utiliza la GeForce 660m), consulte: https://wiki.archlinux.org/index.php/Lenovo_IdeaPad_Y580#NVIDIA_Card. Estas instrucciones son muy probable que se adapten a otras máquinas (excepto para la parte acpi-handle-hack, que puede no ser necesario).
+
Esto no está bien documentado, pero no es necesario que Bumblebee utilice CUDA y pueda funcionar incluso en máquinas donde optirun falla. Para una guía sobre cómo conseguir que funcione con el Lenovo IdeaPad Y580 (que utiliza la GeForce 660m), consulte: [[Lenovo IdeaPad Y580#NVIDIA_Card]]. Estas instrucciones son muy probable que se adapten a otras máquinas.
  
 
==Solución de problemas==  
 
==Solución de problemas==  
  
{{Nota|Por favor, reporte los bugs al [https://github.com/Bumblebee-Project/Bumblebee Proyecto-Bumblebee], el ''trazador GitHub'' como se describe en su [https://github.com/Bumblebee-Project/Bumblebee/wiki/Reporting-Issues Wiki].}}
+
{{Nota|Por favor, informe de los errores con el ''trazador GitHub'' del [https://github.com/Bumblebee-Project/Bumblebee Proyecto-Bumblebee], como se describe en su [https://github.com/Bumblebee-Project/Bumblebee/wiki/Reporting-Issues wiki].}}
  
 
===[VGL] ERROR: Could not open display :8===
 
===[VGL] ERROR: Could not open display :8===
Line 249: Line 377:
 
Hay un problema conocido con algunas aplicaciones que vienen lanzadas con wine que se bifurcan y matan el proceso padre sin hacer el seguimiento del problema (por ejemplo, la sesión libre del juego en línea "Runes of Magic")
 
Hay un problema conocido con algunas aplicaciones que vienen lanzadas con wine que se bifurcan y matan el proceso padre sin hacer el seguimiento del problema (por ejemplo, la sesión libre del juego en línea "Runes of Magic")
  
Una solución para este problema puede ser:
+
Este es un problema conocido con VirtualGL. A partir de bumblebee 3.1, siempre y cuando lo tenga instalado, puede utilizar Primus como su render bridge:
 +
 
 +
{{bc|
 +
$optirun -b primus wine <programa de windows>.exe
 +
}}
 +
 
 +
Si esto no funciona, una solución para este problema puede ser:
  
 
{{bc|
 
{{bc|
 
$ optirun bash
 
$ optirun bash
$ optirun wine <windows program>.exe
+
$ optirun wine <programa de windows>.exe
 
}}
 
}}
  
Line 272: Line 406:
  
 
Si está utilizando el controlador nouveau, podría intentar cambiar al controlador de nVidia.
 
Si está utilizando el controlador nouveau, podría intentar cambiar al controlador de nVidia.
 +
 +
Puede que tenga que definir la tarjeta nvidia en algún lugar (por ejemplo, en el archivo {{ic|/etc/X11/xorg.conf.d}}), y recuerde cambiar el BusID utilizando lspci.
 +
{{bc|
 +
Section "Device"
 +
    Identifier "nvidiagpu1"
 +
    Driver "nvidia"
 +
    BusID "PCI:0:1:0"
 +
EndSection
 +
}}
  
 
==== NVIDIA(0): Failed to assign any connected display devices to X screen 0 ====
 
==== NVIDIA(0): Failed to assign any connected display devices to X screen 0 ====
Line 293: Line 436:
 
=== ERROR: ld.so: object 'libdlfaker.so' from LD_PRELOAD cannot be preloaded: ignored. ===
 
=== ERROR: ld.so: object 'libdlfaker.so' from LD_PRELOAD cannot be preloaded: ignored. ===
  
Probablemente quiera comenzar una aplicación de 32-bits con bumblebee en un sistema x64. Instale [https://aur.archlinux.org/packages/lib32-virtualgl/ lib32-virtualgl] o el más rápido en rendimiento de Primus, [https://aur.archlinux.org/packages/primus-git/ primus-git], de [https://aur.archlinux.org/ AUR]. Recuerde usar {{ic|primusrun}} con Primus.
+
Probablemente quiera comenzar una aplicación de 32-bits con bumblebee en un sistema x64. Instale {{Pkg|lib32-virtualgl}} o el más rápido en rendimiento de Primus, {{AUR|primus-git}}{{Broken package link|{{aur-mirror|primus-git}}}}, de [https://aur.archlinux.org/ AUR]. Recuerde usar {{ic|primusrun}} con Primus.
  
 
===Fatal IO error 11 (Recurso temporalmente no disponible) en el servidor X===
 
===Fatal IO error 11 (Recurso temporalmente no disponible) en el servidor X===
Line 311: Line 454:
 
Si todavía no está resuelto, trate de desactivar la compositing de su entorno de escritorio. Como última solución, pruebe también deshabilitar el triple buffering.
 
Si todavía no está resuelto, trate de desactivar la compositing de su entorno de escritorio. Como última solución, pruebe también deshabilitar el triple buffering.
  
=== Bumblebee se queja de que no pertenece al grupo, aunque sí lo está ===
+
=== Bumblebee no puede conectarse al socket ===
En primer lugar, asegúrese de que esté en el grupo; {{ic|groups}}. Si no está en el grupo, agrégelo al mismo (como arriba), cierre la sesión y reiniciela, y vuelva a intentarlo.
+
Podemos obtener algo como esto:
 +
 
 +
{{hc|$ optirun glxspheres|
 +
[ 1648.179533] [ERROR]You've no permission to communicate with the Bumblebee daemon. Try adding yourself to the 'bumblebee' group
 +
[ 1648.179628] [ERROR]Could not connect to bumblebee daemon - is it running?
 +
}}
  
De lo contrario, eliminar {{ic|/var/run/bumblebeed.socket}} podría ayudar [https://bbs.archlinux.org/viewtopic.php?pid=1178729#p1178729 (hilo del foro)]
+
Si ya estamos en el grupo {{ic|bumblebee}} ({{ic|<nowiki>$ groups | grep bumblebee</nowiki>}}), puede intentar [https://bbs.archlinux.org/viewtopic.php?pid=1178729#p1178729 eliminar el socket] {{ic|/var/run/bumblebeed.socket}}.
  
==Enlaces importantes==
+
==Véase también==
 
* [http://www.bumblebee-project.org Bumblebee Project repository]
 
* [http://www.bumblebee-project.org Bumblebee Project repository]
 
* [http://wiki.bumblebee-project.org/ Bumblebee Project Wiki]
 
* [http://wiki.bumblebee-project.org/ Bumblebee Project Wiki]

Latest revision as of 17:08, 10 May 2016

Del FAQ de Bumblebee:

Bumblebee es una solución para aprovechar la tecnología Nvidia Optimus, presente en los ordenadores portátiles habilitados, disponible para los sistemas GNU/Linux. Esta tecnología combina el uso de dos tarjetas gráficas con dos perfiles diferentes de consumo de energía, que están conectadas de una manera estratificada compartiendo un solo framebuffer.

Bumblebee: Tecnología Optimus para Linux

La Tecnología Optimus es una implementación gráfica híbrida sin un hardware multiplexor. La GPU integrada controla la pantalla, mientras que la GPU dedicada gestiona las prestaciones más exigente y envía el resultado a la GPU integrada para la visualización. Cuando el ordenador está funcionando con alimentación de la batería, la GPU dedicada se apaga para ahorrar energía y prolongar la autonomía de la batería.

Bumblebee es una implementación de software que se comprende de dos partes:

  • Procesa programas fuera de pantalla utilizando la tarjeta de vídeo dedicada y los visualiza en la pantalla con la tarjeta de vídeo integrada. Este puente es proporcionado por VirtualGL o primus (leer más adelante) y se conecta a un servidor X iniciado por la tarjeta de video dedicada.
  • Deshabilita la tarjeta de vídeo dedicada cuando no está en uso (véase el apartado #Administración de energía)

Se trata de imitar el comportamiento de la tecnología Optimus, utilizando la GPU dedicada para aprovechar sus prestaciones cuando sea necesario y apagarla cuando no esté en uso. Las versiones actuales solo soportan las prestaciones a petición, mientras que no está implementado aún el que un programa se inicie automáticamente con la tarjeta de video dedicada en función de la carga de trabajo.

Advertencia: Bumblebee está todavía en desarrollo, por lo que toda ayuda será bien recibida.

Instalación

Antes de proceder a la instalación de Bunblebee compruebe su BIOS y active la opción Optimus (los ordenadores portátiles más antiguos la llaman «shareable graphics»), si es posible (no todas las BIOS proporcionan esta opción), e instale el controlador intel para la tarjeta gráfica secundaria.

Varios paquetes están disponibles para una configuración completa:

  • bumblebee - el paquete principal que proporciona el demonio y programas clientes.
  • (opcional) bbswitch (o bbswitch-dkms) - recomendado para ahorrar energía desactivando la tarjeta Nvidia.
  • (opcional) Si quiere algo más que un simple ahorro de energía, es decir procesar programas con la tarjeta Nvidia dedicada, también es necesario:
    • Un controlador para la tarjeta de Nvidia. El controlador de código abierto nouveau o el controlador propietario nvidia. Véase la subsección correspondiente.
    • Un puente para los procesos/pantalla. Dos paquetes están disponibles en la actualidad para ello, primus (o primus-gitAUR[broken link: archived in aur-mirror]) y virtualgl. Solo uno de ellos es necesario, pero la instalación de ambos no hace daño.
Nota: Si desea ejecutar una aplicación de 32 bits en un sistema de 64-bit debe instalar las bibliotecas apropiadas lib32-* del programa. Además de esto, también es necesario instalar lib32-virtualgl o lib32-primus, dependiendo de su elección para el «render bridge» (puentear prestaciones). Basta con asegurarse de ejecutar primusrun en lugar de optirun si decide utilizar Primus render bridge.

Instalar Bumblebee con Intel/NVIDIA

Si desea ejecutar las aplicaciones de 32 bits (como los juegos con wine) en un sistema de 64 bits necesita también el paquete lib32-nvidia-utils.

Advertencia: No instale lib32-nvidia-libgl. Bumblebee encontrará las bibliotecas lib32 de NVIDIA correctas sin aquel paquete.

Instalar Bumblebee con Intel/Nouveau

Instale:

Iniciar Bumblebee

Para poder utilizar Bumblebee es necesario añadir el propio usuario (y otros eventuales usuarios) al grupo bumblebee:

# gpasswd -a $USER bumblebee

donde $USER es el nombre de inicio de sesión del usuario. A continuación, cierre la sesión para que surtan efectos los cambios de grupo.

Sugerencia: Para iniciar bumblebee automáticamente al arranque, active el servicio bumblebeed de systemd.

Terminado, reinicie el sistema y utilice el programa optirun para disfrutar de la tecnología NVIDIA Optimus para el rendering.

Si simplemente desea desactivar su tarjeta NVIDIA, esto debería ser todo lo que se necesita, además de tener instalado bbswitch. El demonio bumblebeed, de forma predeterminada, instruye a bbswitch para desactivar la tarjeta cuando se inicia. Consulte también la sección administración de energía más abajo.

Uso

El programa de línea de comandos optirun equipado con Bumblebee, es su mejor aliado para ejecutar aplicaciones corriendo en su tarjeta NVIDIA Optimus.

Compruebe si Bumblebee funciona con el sistema Optimus mediante la siquiente orden:

$ optirun glxgears -info

Si tiene éxito y el terminal donde se está ejecutando muestra algo acerca de su tarjeta NVIDIA significa que ¡Optimus está funcionando con Bumblebee!

Utilización general:

$ optirun [opciones] aplicación [parámetros-de-la-aplicación]

Algunos ejemplos:

Iniciar aplicaciones de Windows con Optimus:

$ optirun wine aplicación de windows.exe

Utilizar NVIDIA Settings con Optimus:

$ optirun nvidia-settings -c :8

Para obtener una lista de opciones para optirun, vea las páginas del manual.

Existe un programa nuevo llamado a convertirse en la opción predefinida debido a que aporta un mejor desempeño, llamado primus. En la actualidad es necesario ejecutar este programa por separado (no admite opciones a diferencia de optirun), pero en el futuro va a poder ser iniciado por optirun. Utilización:

$ primusrun glxgears

Configuración

Puede configurar el comportamiento de Bumblebee para satisfacer sus necesidades. Afinar ajustes como la optimización de la velocidad, administración de energía y otros recursos se pueden configurar en /etc/bumblebee/bumblebee.conf

Optimizar la velocidad cuando se utiliza VirtualGL como puente

Bumblebee gestiona la presentación de los fotogramas para la tarjeta NVIDIA Optimus en un servidor X con VirtualGL invisible y lo transporta de vuelta al servidor X visible.

Los Frames se comprimen antes de ser transportados - esto ahorra ancho de banda y se puede utilizar para la optimización de la velocidad de Bumblebee:

Para utilizar un método de compresión para una sola aplicación, la sintaxis del comando es:

$ optirun -c <método-de-comprensión> aplicación

El método de compresión afectará al rendimiento del uso de la CPU/GPU. Los métodos que comprimen (como jpeg) cargan la máximo la CPU y al mínimo posible la GPU; los métodos que no comprimen cargan más la GPU mientras la CPU tendrá la carga mínima posible.

Métodos comprimidos son: jpeg, rgb, yuv

Métodos sin comprimir son: proxy, xv

Para utilizar un estándar de compresión para todas las aplicaciones habrá que establecer el valor VGLTransport con el <método-de-compresión> preferido en /etc/bumblebee/bumblebee.conf

/etc/bumblebee/bumblebee.conf
[...]
[optirun]
VGLTransport=proxy
[...]

También se puede reproducir con el método VirtualGL que vuelve a leer los píxeles de la tarjeta gráfica. Ajustando la variable de entorno VGL_READBACK a pbo debe aumentar el rendimiento. Comparar estas dos:

# PBO debería ser más rápido.
VGL_READBACK=pbo optirun glxspheres
# El valor por defecto es sync.
VGL_READBACK=sync optirun glxspheres
Nota: El escalado de frecuencia de la CPU afectará directamente a las prestaciones del renderizado

Administración de energía

El objetivo de gestionar la energía consiste en apagar la tarjeta NVIDIA cuando no se utiliza más por bumblebee. Si bbswitch está instalado, detectará automáticamente cuándo se inicia el demonio Bumblebee. No es necesario ninguna configuración adicional.

Estado de energía predeterminado de la tarjeta NVIDIA

El comportamiento predeterminado de bbswitch es dejar el estado de energía de la tarjeta sin cambios. bumblebeed deshabilita la tarjeta cuando se inicia, así que lo siguiente solo es necesario si se utiliza bbswitch sin bumblebeed.

Configure la opción de los módulos load_state y unload_state de acuerdo a sus necesidades (véase la documentación de bbswitch).

/etc/modprobe.d/bbswitch.conf
options bbswitch load_state=0 unload_state=1

Activar la tarjeta NVIDIA durante el apagado

La tarjeta NVIDIA no puede inicializarse correctamente durante la fase de arranque si la tarjeta se apaga cuando el sistema se cerró por última vez. Una solución es configurar la opción TurnCardOffAtExit=false en /etc/bumblebee/bumblebee.conf, sin embargo, ésto todavía permitirá a la tarjeta detenerse cada vez que lo haga el daemon de Bumblebee, aunque se haga manualmente. Para asegurarse de que la tarjeta NVIDIA esté siempre accecible, es decir, activa, durante el apagado, añada el siguiente servicio desystemd (si está utilizando bbswitch):

/etc/systemd/system/nvidia-enable.service
[Unit]
Description=Enable NVIDIA card

[Service]
Type=oneshot
ExecStart=/bin/sh -c 'echo ON > /proc/acpi/bbswitch'

[Install]
WantedBy=shutdown.target

A continuación, active el servicio ejecutando systemctl enable nvidia-enable.service en un terminal como root.

Varios monitores

Salidas conectadas al chip de Intel

Si el puerto (DisplayPort/HDMI/VGA) está conectado al chip de Intel, es posible configurar varios monitores con xorg.conf. Puede ajustarse para utilizar la tarjeta Intel, pero con Bumblebee todavía será posible usar la tarjeta NVIDIA. Un ejemplo de configuración, a continuación, muestra dos pantallas idénticas con una resolución de 1080p y utilizando la salida HDMI.

/etc/X11/xorg.conf
Section "Screen"
    Identifier     "Screen0"
    Device         "intelgpu0"
    Monitor        "Monitor0"
    DefaultDepth    24
    Option         "TwinView" "0"
    SubSection "Display"
        Depth          24
        Modes          "1980x1080_60.00"
    EndSubSection
EndSection

Section "Screen"
    Identifier     "Screen1"
    Device         "intelgpu1"
    Monitor        "Monitor1"
    DefaultDepth   24
    Option         "TwinView" "0"
    SubSection "Display"
        Depth          24
        Modes          "1980x1080_60.00"
    EndSubSection
EndSection

Section "Monitor"
    Identifier     "Monitor0"
    Option         "Enable" "true"
EndSection

Section "Monitor"
    Identifier     "Monitor1"
    Option         "Enable" "true"
EndSection

Section "Device"
    Identifier     "intelgpu0"
    Driver         "intel"
    Option         "XvMC" "true"
    Option         "UseEvents" "true"
    Option         "AccelMethod" "UXA"
    BusID          "PCI:0:2:0"
EndSection

Section "Device"
    Identifier     "intelgpu1"
    Driver         "intel"
    Option         "XvMC" "true"
    Option         "UseEvents" "true"
    Option         "AccelMethod" "UXA"
    BusID          "PCI:0:2:0"
EndSection

Section "Device"
    Identifier "nvidiagpu1"
    Driver "nvidia"
    BusID "PCI:0:1:0"
EndSection

Necesitará probablemente cambiar el BusID tanto para el procesador Intel como para la tarjeta NVIDIA.

$ lspci | grep VGA
00:02.0 VGA compatible controller: Intel Corporation 2nd Generation Core Processor Family Integrated Graphics Controller (rev 09)

En este ejemplo el BusID es 0:2:0

Salidas conectadas al chip de NVIDIA

En algunos notebooks, la salida de vídeo digital (HDMI o Displayport) está conectado con el chip de NVIDIA. Si desea utilizar todas las pantallas en tal sistema simultáneamente, tiene que ejecutar dos servidores X. El primer servidor va a utilizar el controlador de Intel para el panel del notebook y una pantalla conectada a VGA. La segunda se iniciará a través de optirun con la tarjeta de NVIDIA, y acciona la pantalla digital.

Actualmente existen varias instrucciones en la web sobre cómo se pueden hacer tales ajustes para que funcione. Una de esas instrucciones se pueden encontrar en la página wiki de bumblebee. A continuación se describe otro enfoque adecuado.

xf86-video-intel-virtual-crtc y hybrid-screenclone

Este método utiliza un controlador parcheado de Intel, que viene modificado para tener una pantalla VIRTUAL, y el programa hybrid-screenclone que viene usado para copiar la pantalla desde la pantalla virtual a un segundo servidor X que se ejecuta en la tarjeta NVIDIA utilizando Optirun. El mérito debemos atribuirlo a Triple-head monitors on a Thinkpad T520 que contiene una explicación detallada sobre cómo hacer esto en un sistema Ubuntu.

Para simplificar, DP se utiliza a continuación para referirse a la salida digital (DisplayPort). Las instrucciones deben ser las mismas si el portátil tiene un puerto HDMI en su lugar.

  • Configurar el sistema para utilizar exclusivamente la tarjeta NVIDIA, hacer prueba combinando DP/Monitor y generar xorg.nvidia.conf. No se requiere este paso, pero se recomienda si la Bios del sistema tiene una opción para cambiar los gráficos a modalidad «NVIDIA-only». Para ello, primero desinstale el paquete bumlbebee e instale solo el controlador de NVIDIA. A continuación, reinicie el sistema, entre en la BIOS y cambie los gráficos a «NVIDIA-only». Cuando vuelva a Arch, conecte el Monitor a la DP y utilice startx para comprobar que todo funciona correctamente. Utilice Xorg -configure para generar un archivo xorg.conf para la tarjeta NVIDIA. Este nos será muy útil más adelante.
  • Vuelva a instalar bumlbebee y bbswitch, reinicie y configure la gráfica del sistema a «Hybrid» en la BIOS.
  • Instale xf86-video-intel-virtual-crtcAUR[broken link: archived in aur-mirror], y sustituya el paquete xf86-video-intel con aquel.
  • Descargue hybrid-screenclone y compílelo utilizando "make".
  • Cambie estos ajustes en el archivo bumblebee.conf:
/etc/bumblebee/bumblebee.conf
KeepUnusedXServer=true
Driver=nvidia
Nota: Lance el parámetro PMMethod ajustado para "bumblebee". Esto es contrario a las instrucciones relacionadas en el artículo anterior, pero en Arch es necesario lanzarlo para que el módulo bbswitch se cargue automáticamente con esta opción.
  • Copie el archivo xorg.conf generado en el Paso 1 al directorio /etc/X11 (por ejemplo /etc/X11/xorg.nvidia.conf). En la sección [driver-nvidia] del archivo bumblebee.conf, cambie el parámetro XorgConfFile para que apunte al mismo.
  • Compruebe que la configuración del archivo /etc/X11/xorg.nvidia.conf funciona con startx -- -config /etc/X11/xorg.nvidia.conf
  • Para que su monitor DP aparezca con la resolución correcta en la pantalla VIRTUAL puede que tenga que editar la sección Monitor del archivo /etc/xorg.nvidia.conf. Dado que este es un trabajo extra, podría intentar continuar con el archivo generado automáticamente. Vuelva a este paso de las instrucciones si encuentra que la resolución de la pantalla VIRTUAL, como se muestra por xrandr, no es la correcta.
    • Primero tiene que generar un Modeline. Puede utilizar la herramienta amlc, el cual generará un Modeline introduciendo algunos parámetros básicos.
Ejemplo: Monitor de 24" de 1920x1080
Iniciar la utilidad con amlc -c
Monitor Identifier: Samsung 2494
Aspect Ratio: 2
physical size[cm]: 60
Ideal refresh rate, in Hz: 60
min HSync, kHz: 40
max HSync, kHz: 90
min VSync, Hz: 50
max VSync, Hz: 70
max pixel Clock, MHz: 400

Esta es la sección Monitor que amlc genera para esta entrada:

Section "Monitor"
    Identifier     "Samsung 2494"
    ModelName      "Generated by Another Modeline Calculator"
    HorizSync      40-90
    VertRefresh    50-70
    DisplaySize    532 299  # Aspect ratio 1.778:1
    # Custom modes
    Modeline "1920x1080" 174.83 1920 2056 2248 2536 1080 1081 1084 1149             # 174.83 MHz,  68.94 kHz,  60.00 Hz
EndSection  # Samsung 2494

Cambie su archivo xorg.nvidia.conf para incluir esta sección Monitor. También puede recortar su archivo de forma que solo contenga las secciones ServerLayout, Monitor, Device y Screen. He aquí un archivo de referencia:

/etc/X11/xorg.nvidia.conf
Section "ServerLayout"
        Identifier     "X.org Nvidia DP"
        Screen      0  "Screen0" 0 0
        InputDevice    "Mouse0" "CorePointer"
        InputDevice    "Keyboard0" "CoreKeyboard"
EndSection

Section "Monitor"
    Identifier     "Samsung 2494"
    ModelName      "Generated by Another Modeline Calculator"
    HorizSync      40-90
    VertRefresh    50-70
    DisplaySize    532 299  # Aspect ratio 1.778:1
    # Custom modes
    Modeline "1920x1080" 174.83 1920 2056 2248 2536 1080 1081 1084 1149             # 174.83 MHz,  68.94 kHz,  60.00 Hz
EndSection  # Samsung 2494

Section "Device"
        Identifier  "DiscreteNvidia"
        Driver      "nvidia"
        BusID       "PCI:1:0:0"
EndSection

Section "Screen"
        Identifier "Screen0"
        Device     "DiscreteNvidia"
        Monitor    "Samsung 2494"
        SubSection "Display"
                Viewport   0 0
                Depth     24
        EndSubSection
EndSection
  • Conecte los dos monitores externos e inicie X (con startx). Mire el archivo /var/log/Xorg.0.log. Compruebe que el monitor VGA se detecta con las modalidades correctas. También debería ver una salida VIRTUAL mostrada con una modalidad propia.
  • Ejecute xrandr y las tres pantallas deberían aparecer allí, junto con las modalidades soportadas.
  • Si el listado Modelines para la pantalla VIRTUAL no tiene la resolución nativa de los monitores, anote el nombre de la salida exacta. Para este ejemplo es VIRTUAL1. A continuación, echaremos un vistazo de nuevo al archivo Xorg.0.log. Debe verse el mensaje: "Output VIRTUAL1 has no monitor section" («La salida VIRTUAL1 no tiene la sección del monitor»). Vamos a cambiar esto poniendo un archivo con la necesaria sección Monitor en /etc/X11/xorg.conf.d. Salimos y reiniciamos X seguidamente.
/etc/X11/xorg.conf.d/20-monitor_samsung.conf
Section "Monitor"
    Identifier     "VIRTUAL1"
    ModelName      "Generated by Another Modeline Calculator"
    HorizSync      40-90
    VertRefresh    50-70
    DisplaySize    532 299  # Aspect ratio 1.778:1
    # Custom modes
    Modeline "1920x1080" 174.83 1920 2056 2248 2536 1080 1081 1084 1149             # 174.83 MHz,  68.94 kHz,  60.00 Hz
EndSection  # Samsung 2494
  • Cambie a la tarjeta NVIDIA ejecutando: sudo tee /proc/acpi/bbswitch <<< ON.
  • Comience otro servidor X para el monitor conectado a DisplayPort: sudo optirun true.
  • Compruebe el registro del segundo servidor X en /var/log/Xorg.8.log.
  • Ejecute xrandr para configurar la pantalla VIRTUAL con el tamaño y la ubicación correcta, por ejemplo: xrandr --output VGA1 --auto --rotate normal --pos 0x0 --output VIRTUAL1 --mode 1920x1080 --right-of VGA1 --output LVDS1 --auto --rotate normal --right-of VIRTUAL1.
  • Tome nota de la posición de la pantalla VIRTUAL en la lista de salidas como se muestra por xrandr. El conteo comienza por cero, es decir, si es la tercera pantalla la que se muestra, se especificaría -x 2 como parámetro para screenclone.
  • Clonar el contenido de la pantalla VIRTUAL en el servidor X creado por bumblebee,que está conectado al monitor a través de DisplayPort y del chip de NVIDIA:
screenclone -d :8 -x 2

Eso es todo, las tres pantallas deberían estar en funcionamiento ahora.

Cambiar entre tarjeta dedicada e integrada como Windows

En Windows, la forma en que funciona Optimus con NVIDIA se basa en la existencia de una lista blanca de aplicaciones las cuales demandan Optimus, y se pueden agregar aplicaciones a dicha lista blanca, según se necesite. Al iniciar la aplicación, esto determina automáticamente qué tarjeta usar.

Para imitar este comportamiento en Linux, es posible utilizar libgl-switcheroo-gitAUR[broken link: archived in aur-mirror]. Después de instalarlo, puede agregar lo siguiente en el archivo .xprofile.

~/.xprofile
mkdir -p /tmp/libgl-switcheroo-$USER/fs
gtkglswitch &
libgl-switcheroo /tmp/libgl-switcheroo-$USER/fs &

Para permitir esto, debe agregar lo que sigue abajo para la shell que tiene la intención de lanzar las aplicaciones (o simplemente agréguelo al archivo .xprofile):

export LD_LIBRARY_PATH=/tmp/libgl-switcheroo-$USER/fs/\$LIB${LD_LIBRARY_PATH+:}$LD_LIBRARY_PATH

Una vez hecho esto, cualquier aplicación que se inicie desde esta shell abrirá una ventana GTK+ preguntando cuál es la tarjeta en la que desea ejecutarla (también se puede añadir una aplicación a la lista blanca en la configuración). La configuración se encuentra en $XDG_CONFIG_HOME/libgl-switcheroo.conf, normalmente ~/.config/libgl-switcheroo.conf

CUDA sin Bumblebee

Esto no está bien documentado, pero no es necesario que Bumblebee utilice CUDA y pueda funcionar incluso en máquinas donde optirun falla. Para una guía sobre cómo conseguir que funcione con el Lenovo IdeaPad Y580 (que utiliza la GeForce 660m), consulte: Lenovo IdeaPad Y580#NVIDIA_Card. Estas instrucciones son muy probable que se adapten a otras máquinas.

Solución de problemas

Nota: Por favor, informe de los errores con el trazador GitHub del Proyecto-Bumblebee, como se describe en su wiki.

[VGL] ERROR: Could not open display :8

Hay un problema conocido con algunas aplicaciones que vienen lanzadas con wine que se bifurcan y matan el proceso padre sin hacer el seguimiento del problema (por ejemplo, la sesión libre del juego en línea "Runes of Magic")

Este es un problema conocido con VirtualGL. A partir de bumblebee 3.1, siempre y cuando lo tenga instalado, puede utilizar Primus como su render bridge:

$optirun -b primus wine <programa de windows>.exe

Si esto no funciona, una solución para este problema puede ser:

$ optirun bash
$ optirun wine <programa de windows>.exe

Si está utilizando el controlador de NVIDIA, una solución para este problema es editar /etc/bumblebee/xorg.conf.nvidia y cambiar la opción ConnectedMonitor en CRT-0.

[ERROR]Cannot access secondary GPU

Ningún dispositivo detectado

En algunos casos, la ejecución de optirun devuelve el siguiente error:

[ERROR]Cannot access secondary GPU - error: [XORG] (EE) No devices detected.
[ERROR]Aborting because fallback start is disabled.

En este caso, será necesario mover el archivo /etc/X11/xorg.conf.d/20-intel.conf a otro lugar. Reinicie el demonio bumblebeed y el error no debería presentarse más.

Podría ser también necesario comentar la línea referente al driver en el archivo /etc/X11/xorg.conf.d/10-monitor.conf.

Si está utilizando el controlador nouveau, podría intentar cambiar al controlador de nVidia.

Puede que tenga que definir la tarjeta nvidia en algún lugar (por ejemplo, en el archivo /etc/X11/xorg.conf.d), y recuerde cambiar el BusID utilizando lspci.

Section "Device"
    Identifier "nvidiagpu1"
    Driver "nvidia"
    BusID "PCI:0:1:0"
EndSection

NVIDIA(0): Failed to assign any connected display devices to X screen 0

Si la salida de la consola es:

[ERROR]Cannot access secondary GPU - error: [XORG] (EE) NVIDIA(0): Failed to assign any connected display devices to X screen 0
[ERROR]Aborting because fallback start is disabled.

Puede cambiar esta línea en /etc/bumblebee/xorg.conf.nvidia:

Option "ConnectedMonitor" "DFP"

a

Option "ConnectedMonitor" "CRT"

ERROR: ld.so: object 'libdlfaker.so' from LD_PRELOAD cannot be preloaded: ignored.

Probablemente quiera comenzar una aplicación de 32-bits con bumblebee en un sistema x64. Instale lib32-virtualgl o el más rápido en rendimiento de Primus, primus-gitAUR[broken link: archived in aur-mirror], de AUR. Recuerde usar primusrun con Primus.

Fatal IO error 11 (Recurso temporalmente no disponible) en el servidor X

Cambie KeepUnusedXServer en /etc/bumblebee/bumblebee.conf de false a true. Bumblebee no será capaz de reconocer los programas ejecutados en segundo plano.

Vídeo rasgado

El problema del lagrimeo en el vídeo es poco común utilizando Bumblebee. Para solucionarlo, necesita habilitar vsync. Debe venir activado por defecto en la tarjeta Intel, pero verifíquelo a partir de los registros de Xorg. Para comprobar si está o no habilitado para nvidia, ejecute:

$ optirun nvidia-settings -c :8 

Las entradas X Server XVideo Settings -> Sync to VBlank y OpenGL Settings -> Sync to VBlank deben estar también habilitadas. La tarjeta Intel tiene, en general, menos problemas de tearing, de modo que puede ser buena idea utilizarla para la reproducción de vídeo. En particular utilizando VA-API para la decodificación de vídeo (por ejemplo, mplayer-vaapi y con el parámetro -vsync).

Consulte el artículo Intel sobre cómo resolver el problema de tearing en la tarjeta Intel.

Si todavía no está resuelto, trate de desactivar la compositing de su entorno de escritorio. Como última solución, pruebe también deshabilitar el triple buffering.

Bumblebee no puede conectarse al socket

Podemos obtener algo como esto:

$ optirun glxspheres
[ 1648.179533] [ERROR]You've no permission to communicate with the Bumblebee daemon. Try adding yourself to the 'bumblebee' group
[ 1648.179628] [ERROR]Could not connect to bumblebee daemon - is it running?

Si ya estamos en el grupo bumblebee ($ groups | grep bumblebee), puede intentar eliminar el socket /var/run/bumblebeed.socket.

Véase también

Puede unirse al canal #bumblebee en freenode.net