# Pantalla en negro al usar Nvidia Optimus

## Stolz

Hasta ahora he estado usando sin problemas la tarjeta gráfica Intel integrada de mi ordenador portátil pero al intentar usar NVIDIA Optimus para alternar entre la tarjeta integrada Intel y la tarjeta dedicada Nvidia me han surgido problemas.

En concreto, el servidor Xorg se me lanza sin errores pero no lo puedo usar porque la pantalla se queda en negro y no consigo que xrandr --listproviders  muestre la tarjeta Nvidia.

Estas son las tarjetas de mi portátil

```
# lspci -nn | grep -E 'VGA|3D'

00:02.0 VGA compatible controller [0300]: Intel Corporation Broadwell-U Integrated Graphics [8086:1616] (rev 09)

04:00.0 3D controller [0302]: NVIDIA Corporation GM108M [GeForce 940M] [10de:1347] (rev a2)
```

Mi kernel

```
# uname -a

Linux laptop 4.1.15-gentoo-r1
```

Mi configuración del kernel

```
# modprobe configs; zcat /proc/config.gz | grep CONFIG_DRM

CONFIG_DRM=m

CONFIG_DRM_MIPI_DSI=y

CONFIG_DRM_KMS_HELPER=m

CONFIG_DRM_KMS_FB_HELPER=y

# CONFIG_DRM_LOAD_EDID_FIRMWARE is not set

# CONFIG_DRM_I2C_ADV7511 is not set

# CONFIG_DRM_I2C_CH7006 is not set

# CONFIG_DRM_I2C_SIL164 is not set

# CONFIG_DRM_I2C_NXP_TDA998X is not set

# CONFIG_DRM_TDFX is not set

# CONFIG_DRM_R128 is not set

# CONFIG_DRM_RADEON is not set

# CONFIG_DRM_NOUVEAU is not set

CONFIG_DRM_I915=m

CONFIG_DRM_I915_KMS=y

CONFIG_DRM_I915_FBDEV=y

CONFIG_DRM_I915_PRELIMINARY_HW_SUPPORT=y

# CONFIG_DRM_MGA is not set

# CONFIG_DRM_SIS is not set

# CONFIG_DRM_VIA is not set

# CONFIG_DRM_SAVAGE is not set

# CONFIG_DRM_VGEM is not set

# CONFIG_DRM_VMWGFX is not set

# CONFIG_DRM_GMA500 is not set

# CONFIG_DRM_UDL is not set

# CONFIG_DRM_AST is not set

# CONFIG_DRM_MGAG200 is not set

# CONFIG_DRM_CIRRUS_QEMU is not set

# CONFIG_DRM_QXL is not set

# CONFIG_DRM_BOCHS is not set

CONFIG_DRM_PANEL=y
```

Mi configuración de Portage

```
$ emerge --info | grep VIDEO_CARDS

VIDEO_CARDS="intel i965 nvidia"

```

Versión de Xorg

```
$ eix -Ic xorg-server

[I] x11-base/xorg-server (1.17.4@04/15/2016)
```

Configuración de Xorg siguiendo las instrucciones del README de NVIDIA

```
$ cat /etc/X11/xorg.conf

Section "Module"

   Load "modesetting"

EndSection

Section "Device"

   Identifier   "Intel HD Graphics 5500"

   Driver      "modesetting"

EndSection

Section "Device"

   Identifier   "Nvidia GeForce 940M"

   Driver      "nvidia"

   BusID      "PCI:4:0:0"

   Option      "AllowEmptyInitialConfiguration" "Yes"

EndSection
```

Versión de drivers nvidia y Xrandr

```
# nvidia-settings -v

nvidia-settings:  version 361.28

$ xrandr -vxrandr program version       1.4.3

Server reports RandR version 1.4
```

Como he mencionado, si uso ...

```
# eselect opengl set xorg-x11

$ startx
```

... todo funciona, pero si intento usar la aceleración de Nvidia ...

```
# eselect opengl set nvidia

$ startx
```

... obtengo una pantalla en negro. Según el README de Nvidia la pantalla en negro es normal y para solucionarlo basta con añadir estas lineas añ fichero  ~/.xinitrc

```
xrandr --setprovideroutputsource modesetting NVIDIA-0

xrandr --auto
```

Pero en mi caso no lo soluciona. En el log de Xorg se puede ver como se añade la tarjeta NVIDIA pero inmediatamente se elimina:

```
(II) xfree86: Adding drm device (/dev/dri/card1)

(II) config/udev: removing GPU device /sys/devices/pci0000:00/0000:00:1c.4/0000:04:00.0/drm/card1 /dev/dri/card1

```

Además en la consola me salta el error 

```
Could not find provider with name NVIDIA-0
```

y con los siguientes comandos se puede comprobar que no hay rastro de la tarjeta Nvidia que debería estar en /dev/dri/card1 :

```
$ ls -1 /dev/dri/

card0

controlD64

renderD128

$ xrandr --listproviders

Providers: number : 1

Provider 0: id: 0x47 cap: 0x2, Sink Output crtcs: 3 outputs: 5 associated providers: 0 name:modesetting
```

Investigando un poco parece que para evitar que UDEV elimine la tarjeta basta con borrar el fichero /lib64/udev/rules.d/99-nvidia.rules pero en mi caso no ayuda.

¿Alguien ha hecho funcionar NVIDIA Optimus?¿Se me escapa algo?Last edited by Stolz on Mon Apr 25, 2016 9:51 am; edited 1 time in total

----------

## kavra

En plasma 5 con sddm a mi me funciona editando el archivo :

 cat /usr/share/sddm/scripts/Xsetup

```

#! /bin/sh

# Xsetup - run as root before the login dialog appears

#xconsole -geometry 480x130-0-0 -notify -verbose -fn fixed -exitOnFail -file /dev/xconsole &

setxkbmap "es_ES"

xrandr --setprovideroutputsource modesetting NVIDIA-0

```

y en kdm  con kde4 me funcionaba configurando dos ficheros:

# cat /usr/share/config/kdm/Xsetup

```

#! /bin/sh

# Xsetup - run as root before the login dialog appears

#xconsole -geometry 480x130-0-0 -notify -verbose -fn fixed -exitOnFail -file /dev/xconsole &

xrandr --setprovideroutputsource modesetting NVIDIA-0

xrandr --auto

```

y al final del fichero:

# cat /etc/X11/Sessions/KDE-4 

```

~~~~

~~~~

....

exec "/usr/bin/startkde"

xrandr --setprovideroutputsource modesetting NVIDIA-0

xrandr --auto

```

prueba a ver si lo solucionas.

----------

## esculapio

Mira la salida lspci -k si el driver es el correcto, yo estaba con la pantalla negra porque estaba funcionando el driver anterior nouveau en lugar del de nvidia. Igual hice varias cosas antes para corregir el driver y eliminar al anterior, compilar el xorg-server xorg-drivers y el kernel.

----------

## Stolz

Gracias por las respuestas

@kavra Yo también uso Sddm y ya había probado con poner los comandos xrandr en /usr/share/sddm/scripts/Xsetup  en vez de en ~/.xinitrc con idénticos resultados. Para pedir ayuda he preferido mencionar xinitrc para así descartar el gestor de login como culpable.

@esculapio gracias ha tu mensaje he comparado la salida de mi portátil con la de mi ordenador de escritorio y he visto que mi portátil usa el módulo nvidia, pero no nvidia_drm que sí está presente en mi ordenador de escritorio. Tras actualizar a la última versión de drivers el portátil ahora también muestra el módulo nvidia_drm y el mensaje de Xorg ha desaparecido. Ya me aparecen los dos dispositivos en /dev/dri/ pero sigo con la pantalla en negro al iniciar Xorg y con el mismo mensaje cuando ejecuto xrandr

```
Could not find provider with name NVIDIA-0
```

```
# lspci -k

04:00.0 3D controller: NVIDIA Corporation GM108M [GeForce 940M] (rev a2)

        Subsystem: Lenovo GM108M [GeForce 940M]

        Kernel driver in use: nvidia

        Kernel modules: nvidia_drm, nvidia

```

----------

## kavra

Doy por sentado que has seguido la wiki https://wiki.gentoo.org/wiki/NVIDIA/Optimus y no tienes corriendo bumblebee ni primusrun o similar....

Recuerdo que cuando migré a la configuración oficial de optimus desde nvidia a mi me dio bastante la lata y era porque tenía el daemom de bumblebee o optimus no recuerdo cual corriendo y no me aparecía nada más que una tarjeta.

----------

## quilosaq

 *Stolz wrote:*   

> ...
> 
> Mi kernel
> 
> ```
> ...

 

En el artículo sobre NVIDIA/Optimus  habla de un Linux kernel 4.3.3+. Quizá se necesite, como mínimo, esa versión del nucleo.

----------

## Stolz

Gracias de nuevo por las respuestas. No tengo instalado Bumblebee.  He probado a actualizar el kernel pero sigo con el mismo problema.

```
# uname -a

Linux laptop 4.5.1-gentoo-thinkpad #4 SMP PREEMPT Sun Apr 24 19:06:24 HKT 2016 x86_64 Intel(R) Core(TM) i7-5600U CPU @ 2.60GHz GenuineIntel GNU/Linux
```

----------

## YukiteruAmano

 *Stolz wrote:*   

> Gracias de nuevo por las respuestas. No tengo instalado Bumblebee.  He probado a actualizar el kernel pero sigo con el mismo problema.
> 
> ```
> # uname -a
> 
> ...

 

¿Has revisado si tienes la opción CONFIG_VGA_SWITCHEROO activada en el kernel? 

Necesitas activarla para poder habilitar el cambio de graficas en laptop con graficas hibridas.

Más info en el enlace

----------

## Stolz

Gracias YukiteruAmano pero creo que mi ordenador no tiene multiplexor de tarjetas y creo que esta opción no le afecta. De todas formas la he activado para probar pero sigo con idénticos resultados.

----------

## kavra

Tal vez de aquí puedas sacar alguna idea que te ayude a resolverlo:

https://fitzcarraldoblog.wordpress.com/2015/07/01/switching-between-intel-and-nvidia-graphics-processors-on-a-laptop-with-nvidia-optimus-hardware-running-gentoo-linux/

----------

## edgar_uriel84

Hola Stolz,

Pudiste hacer funcionar Optimus en tu computadora? Ya pasé por este problema, se resolvia activando "glamor" en los drivers. 

Ahora tengo un inconveniente, en nvidia-settings no me aparece la opción de "PRIME Profiles", por lo que no se como cambiar de NVIDIA a Intel para ahorrar energía, sabes algo sobre esto?

Perdón por ocupar el tema, pero me pareció adecuado en lugar de crear uno nuevo.

----------

## Stolz

Al final no lo hice funcionar y lo di por perdido.

Para cambiar, no estoy seguro pero puedes probar con

```
xrandr --setprovideroutputsource modesetting XXX

xrandr --auto
```

Siendo XXX el valor que aparece al final de la linea para cada proveedor tras ejecutar

```
xrandr --listproviders
```

----------

