Aburrido... [Busco ayuda] Nvidia Optimus y GNU/Linux

Hola escribo porque estoy a punto de darme por vencido pero no he escrito nunca en algun foro acerca de mi problema.

El caso es que llevo aprox 1 año con el lenovo g400s
i3 ,8gb ram y el sistema dual de video intel + nvidia (poseo una nvidia geforce 720m)

He pasado por fedora, debian, ubuntu, no he querido probar mas ya que creo que pasara lo mismo.

El punto es que no puedo lograr hacer funcionar de manera correcta los drivers de nvidida en ninguna distro, ahora por ejemplo ando en ubuntu y bueno hoy lo intente sin resutado como siempre :(

add-apt-repository ppa:xorg-edgers/ppa
apt-get update
sudo apt-get install nvidia-340

add-apt-repository ppa:nilarimogard/webupd8
apt-get update
apt-get install prime-indicator

Agregue las ppa actualice e instale. Probe durante unos 20 minutos con la targeta integrada y ningun problema, luego use el prime y cambio a nvidia pasaron 15 minutos y el escritorio se colgo, intente reabrirlo con startx pero nada de nada, me daño el escritorio tube que volver a instalar ubuntu-desktop (me refiero al escritorio si XD ) y nada . Me gustaria saber si alguien tiene alguna idea de que pueda ser, ya que como comento en fedora y debian pasa lo mismo, al final solo puedo usar la tarjeta integrada :/

lspci | grep -e VGA -e NVIDIA
00:02.0 VGA compatible controller: Intel Corporation 3rd Gen Core processor Graphics Controller (rev 09)
01:00.0 3D controller: NVIDIA Corporation GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (rev a1)

He probado con los otros drivers ya sea privativos o abiertos obteniendo los mismos resultados. Despues de 15 min se cuelga el escritorio, tambien he probado con gnome y lo mismo.

Imagen
00:02.0 VGA compatible controller: Intel Corporation 3rd Gen Core processor Graphics Controller (rev 09)
01:00.0 VGA compatible controller: NVIDIA Corporation GF119M [GeForce 610M] (rev a1)


En Debian Sid tengo funcionando la Nvidia 610M tanto con nouveau (drivers libres) como con nvidia (drivers privativos) sin necesidad de usar repositorios externos. Básicamente, lo que hice (tras varias peleas con ello), fué instalar los controladores correspondientes y bumblebee-nvidia:
aptitude install xserver-xorg-video-nouveau xserver-xorg-video-nvidia bumblebee-nvidia

Y una vez hecho esto, configurar bbswitch para que mantenga la nvidia apagada:
~$ cat /etc/modprobe.d/bbswitch.conf
options bbswitch load_state=0 unload_state=0


Luego, en el archivo /etc/bumblebee/bumblebee.conf le indicas si quieres usar nouveau o nvidia, aqui tienes el contenido del mio, configurado para que use nouveau:
# Configuration file for Bumblebee. Values should **not** be put between quotes

## Server options. Any change made in this section will need a server restart
# to take effect.
[bumblebeed]
# The secondary Xorg server DISPLAY number
VirtualDisplay=:8
# Should the unused Xorg server be kept running? Set this to true if waiting
# for X to be ready is too long and don't need power management at all.
KeepUnusedXServer=false
# The name of the Bumbleblee server group name (GID name)
ServerGroup=bumblebee
# Card power state at exit. Set to false if the card shoud be ON when Bumblebee
# server exits.
TurnCardOffAtExit=true
# The default behavior of '-f' option on optirun. If set to "true", '-f' will
# be ignored.
NoEcoModeOverride=false
# The Driver used by Bumblebee server. If this value is not set (or empty),
# auto-detection is performed. The available drivers are nvidia and nouveau
# (See also the driver-specific sections below)
Driver=nouveau
# Directory with a dummy config file to pass as a -configdir to secondary X
XorgConfDir=/etc/bumblebee/xorg.conf.d

## Client options. Will take effect on the next optirun executed.
[optirun]
# Acceleration/ rendering bridge, possible values are auto, virtualgl and
# primus.
Bridge=auto
# The method used for VirtualGL to transport frames between X servers.
# Possible values are proxy, jpeg, rgb, xv and yuv.
VGLTransport=proxy
# List of paths which are searched for the primus libGL.so.1 when using
# the primus bridge
PrimusLibraryPath=/usr/lib/x86_64-linux-gnu/primus:/usr/lib/i386-linux-gnu/primus:/usr/lib/primus:/usr/lib32/primus
# Should the program run under optirun even if Bumblebee server or nvidia card
# is not available?
AllowFallbackToIGC=false


# Driver-specific settings are grouped under [driver-NAME]. The sections are
# parsed if the Driver setting in [bumblebeed] is set to NAME (or if auto-
# detection resolves to NAME).
# PMMethod: method to use for saving power by disabling the nvidia card, valid
# values are: auto - automatically detect which PM method to use
#         bbswitch - new in BB 3, recommended if available
#       switcheroo - vga_switcheroo method, use at your own risk
#             none - disable PM completely
# https://github.com/Bumblebee-Project/Bumblebee/wiki/Comparison-of-PM-methods

## Section with nvidia driver specific options, only parsed if Driver=nvidia
[driver-nvidia]
# Module name to load, defaults to Driver if empty or unset
KernelDriver=nvidia-current
PMMethod=bbswitch
# colon-separated path to the nvidia libraries
LibraryPath=/usr/lib/x86_64-linux-gnu/nvidia:/usr/lib/i386-linux-gnu/nvidia:/usr/lib/nvidia
# comma-separated path of the directory containing nvidia_drv.so and the
# default Xorg modules path
XorgModulePath=/usr/lib/nvidia,/usr/lib/xorg/modules
XorgConfFile=/etc/bumblebee/xorg.conf.nvidia

## Section with nouveau driver specific options, only parsed if Driver=nouveau
[driver-nouveau]
KernelDriver=nouveau
PMMethod=bbswitch
XorgConfFile=/etc/bumblebee/xorg.conf.nouveau


Y, si todo va bien, puedes ejecutar cualquier programa usando la nvidia con los comandos optirun programa o primusrun programa. Estos comandos hacen que bbswitch encienda la gráfica, bumblebee hace que el programa use la nvidia y presente el resultado a través de la intel (si, la intel siempre está en uso, la nvidia no tiene capacidad para presentar el resultado en pantalla, es la cagada del Optimus), y apagará la nvidia cuando finalice la ejecución del programa.
Panko escribió:
00:02.0 VGA compatible controller: Intel Corporation 3rd Gen Core processor Graphics Controller (rev 09)
01:00.0 VGA compatible controller: NVIDIA Corporation GF119M [GeForce 610M] (rev a1)


En Debian Sid tengo funcionando la Nvidia 610M tanto con nouveau (drivers libres) como con nvidia (drivers privativos) sin necesidad de usar repositorios externos. Básicamente, lo que hice (tras varias peleas con ello), fué instalar los controladores correspondientes y bumblebee-nvidia:
aptitude install xserver-xorg-video-nouveau xserver-xorg-video-nvidia bumblebee-nvidia

Y una vez hecho esto, configurar bbswitch para que mantenga la nvidia apagada:
~$ cat /etc/modprobe.d/bbswitch.conf
options bbswitch load_state=0 unload_state=0


Luego, en el archivo /etc/bumblebee/bumblebee.conf le indicas si quieres usar nouveau o nvidia, aqui tienes el contenido del mio, configurado para que use nouveau:
# Configuration file for Bumblebee. Values should **not** be put between quotes

## Server options. Any change made in this section will need a server restart
# to take effect.
[bumblebeed]
# The secondary Xorg server DISPLAY number
VirtualDisplay=:8
# Should the unused Xorg server be kept running? Set this to true if waiting
# for X to be ready is too long and don't need power management at all.
KeepUnusedXServer=false
# The name of the Bumbleblee server group name (GID name)
ServerGroup=bumblebee
# Card power state at exit. Set to false if the card shoud be ON when Bumblebee
# server exits.
TurnCardOffAtExit=true
# The default behavior of '-f' option on optirun. If set to "true", '-f' will
# be ignored.
NoEcoModeOverride=false
# The Driver used by Bumblebee server. If this value is not set (or empty),
# auto-detection is performed. The available drivers are nvidia and nouveau
# (See also the driver-specific sections below)
Driver=nouveau
# Directory with a dummy config file to pass as a -configdir to secondary X
XorgConfDir=/etc/bumblebee/xorg.conf.d

## Client options. Will take effect on the next optirun executed.
[optirun]
# Acceleration/ rendering bridge, possible values are auto, virtualgl and
# primus.
Bridge=auto
# The method used for VirtualGL to transport frames between X servers.
# Possible values are proxy, jpeg, rgb, xv and yuv.
VGLTransport=proxy
# List of paths which are searched for the primus libGL.so.1 when using
# the primus bridge
PrimusLibraryPath=/usr/lib/x86_64-linux-gnu/primus:/usr/lib/i386-linux-gnu/primus:/usr/lib/primus:/usr/lib32/primus
# Should the program run under optirun even if Bumblebee server or nvidia card
# is not available?
AllowFallbackToIGC=false


# Driver-specific settings are grouped under [driver-NAME]. The sections are
# parsed if the Driver setting in [bumblebeed] is set to NAME (or if auto-
# detection resolves to NAME).
# PMMethod: method to use for saving power by disabling the nvidia card, valid
# values are: auto - automatically detect which PM method to use
#         bbswitch - new in BB 3, recommended if available
#       switcheroo - vga_switcheroo method, use at your own risk
#             none - disable PM completely
# https://github.com/Bumblebee-Project/Bumblebee/wiki/Comparison-of-PM-methods

## Section with nvidia driver specific options, only parsed if Driver=nvidia
[driver-nvidia]
# Module name to load, defaults to Driver if empty or unset
KernelDriver=nvidia-current
PMMethod=bbswitch
# colon-separated path to the nvidia libraries
LibraryPath=/usr/lib/x86_64-linux-gnu/nvidia:/usr/lib/i386-linux-gnu/nvidia:/usr/lib/nvidia
# comma-separated path of the directory containing nvidia_drv.so and the
# default Xorg modules path
XorgModulePath=/usr/lib/nvidia,/usr/lib/xorg/modules
XorgConfFile=/etc/bumblebee/xorg.conf.nvidia

## Section with nouveau driver specific options, only parsed if Driver=nouveau
[driver-nouveau]
KernelDriver=nouveau
PMMethod=bbswitch
XorgConfFile=/etc/bumblebee/xorg.conf.nouveau


Y, si todo va bien, puedes ejecutar cualquier programa usando la nvidia con los comandos optirun programa o primusrun programa. Estos comandos hacen que bbswitch encienda la gráfica, bumblebee hace que el programa use la nvidia y presente el resultado a través de la intel (si, la intel siempre está en uso, la nvidia no tiene capacidad para presentar el resultado en pantalla, es la cagada del Optimus), y apagará la nvidia cuando finalice la ejecución del programa.


Gracias por responder :)
Que mal todo esto de optimus, con windows no hay problemas pero, mi idea es deshacerme del dual-boot, bueno ojala alguien me pueda ayudar en ubuntu o sino tendre que instalar debian y probar tu solucion.
Saludos
No creo que haya mucha diferencia entre ubuntu y Debian Sid, a no ser que la versión que utilices no sea de las útlimas, mientras los paquetes existan en tu sistema, no deberías necesitar añadir ppas externos ni nada de eso.

Lo que si tienes que tener en cuenta, es que en *buntu, debian, y demás distros linux, no te va a funcionar "automágicamente" como hace en windows, eres tú el que debe indicar que quieres usar la gráfica dedicada. Esto, y que el entorno gráfico siempre usará la Intel: la tecnología optimus no permite desactivar la gráfica integrada y usar solo la dedicada. En este caso, la dedicada se encarga de realizar todo el trabajo y luego pasar el resultado a la integrada para que te lo presente en pantalla.

Sin saber que versión estás usando, aqui dice que a partir de la 13.04 no es necesario el uso de ppa's externos.
Me aburri no hay caso, me quede dos veces sin escritorio intentandolo y nada..

Asi que tendre que usar windows nomas para aprovechar la grafica
Es que no se que tutoriales debes haber usado hasta ahora. Pero el usuario anterior te ha dado un tutorial bastante bueno que podrías haber usado. Igualmente, comentado en el tema de Arch, creo, parece que los ultimos drivers de nvidia ya daban soporte a optimus.
Yo tengo una 620M en un Zenbook UX32VD con Gentoo instalado. Para aprovechar la gráfica "no hice nada", porque Noveau es compatible com PRIME, funciona así:

$ xrandr --listproviders
Providers: number : 2
Provider 0: id: 0x88 cap: 0xb, Source Output, Sink Output, Sink Offload crtcs: 4 outputs: 5 associated providers: 0 name:Intel
Provider 1: id: 0x5f cap: 0x5, Source Output, Source Offload crtcs: 0 outputs: 0 associated providers: 0 name:nouveau


Como veo las 2 gráficas, debo crear un script llamado prime así:

#!/bin/bash

export DRI_PRIME=1

exec "$@"


Y para usar la tarjeta Nvidia, ejecuto por ejemplo:

$ prime firefox


Puedes probar la diferencia con glxgears o similar, no funciona tan eficiente como con los drivers privativos pero va bien así que lo que funciona no lo arreglo. Funciona desde la instalación inicial, sin complicaciones de instalar, mover, hacer, romper blablabla.

Fuente original para mi configuración: http://nouveau.freedesktop.org/wiki/Optimus/
6 respuestas