Ubuntu – Is a NVIDIA GeForce with Optimus Technology supported by Ubuntu

graphicshardwarenvidianvidia-optimus

I am considering buying a Dell XPS 15 laptop. The laptop has a Nvidia 420m card which should work with Linux but I keep reading that the Nvidia Optimus technology isn't supported on Linux. I am not really interested in switching from Nvidia to Intel to save power but need to know that the Nvidia card will in fact work if I installed Ubuntu.

If anyone has experience using a Nvidia card with Optimus technology or even better the exact laptop in question (Dell XPS 15 with 1GB NVIDIA® GeForce® GT 420M) it would be great.

A major problem holding people back from adopting Linux is this sort of hardware issue.
I am a long term Ubuntu user and supporter who can't afford to make a mistake with a purchase like this.
I don't want to spend £500+ to find I have no graphics acceleration because Windows 7 is not an option.

Best Answer

Even if the Supported Products tab on the driver download page says that GT420M is supported, the Optimus variants are not supported. From the Additional Information tab:

Some designs incorporating supported GPUs may not be compatible with the Nvidia Linux driver: in particular, notebook and all-in-one desktop designs with switchable (hybrid) or Optimus graphics will not work if means to disable the integrated graphics in hardware are not available.

This Optimus design means that the discrete Nvidia card is wired into the integrated Intel GPU and that it's not connected to a monitor at all. Some hybrid graphics laptops still allow you to choose the Nvidia card in BIOS, but most modern Optimus laptops don't have this option.

I am speaking from experience, I have a GT425M combined with an i5-460M processor. If there is no BIOS or hardware setting for switching / disabling the card, you're throwing away your money. The XPS 15 family does not appear to have any of these features. Although you are able to use the Intel graphics card, you may want to use the Nvidia card as well because you've paid for it which is not directly possible at the moment.

You'd better look for another laptop without Optimus. Optimus is crap and Nvidia refuses to provide better support for Linux. If you are adventurous and buy such a notebook, visit the Linux Hybrid Graphics blog and subscribe to its Launchpad mailing list. Visit their wiki for various ways to get such a card (hopefully) working. One method is called Bumblebee which allows you to render programs on your nvidia card. I currently recommend it over other solutions (disclosure: I'm a developer of it).

Ubuntu 12.10 Quantal will be shipped with the first bits for real support for hybrid graphics laptops, called PRIME. This is highly experimental and in development and probably not stable enough for many people. Only the open-source graphics drivers support this, though Nvidia may release support in the future too if it is not too much work for them. This page tracks hybrid graphics support for Quantal, these are the blueprints for Raring.

If you've installed the driver from nvidia.com

You've made a huge mistake by installing the drivers directly from nvidia.com. If you want to have newer drivers, add the ubuntu-x-swat/x-updates PPA because these will install the nvidia drivers in such a way that your Optimus system does not die.

After installing the nvidia driver from nvidia.com, you may experience loss of all graphics effects, black screen or very slow graphics performance. Uninstallation instructions:

  1. Boot into recovery mode by holding Shift before booting and choosing for the recovery option
  2. In the following menu, choose for netroot.
  3. Uninstall nvidia:

    nvidia-uninstall
    
  4. Remove the configuration file generated by nvidia if any:

    rm /etc/X11/xorg.conf
    
  5. Reinstall the Mesa package for GL:

    apt-get --reinstall install libgl1-mesa-glx
    
  6. When done, reboot with:

    reboot
    

Installation instructions for Bumblebee

If you have installed Bumblebee or Ironhide before, be sure to check the instructions on http://wiki.bumblebee-project.org/Upgrading-on-Ubuntu

Since Bumblebee version 3.0 "Tumbleweed", it can disable the Nvidia card in a safe way to save power (press release). You can also run programs using the discrete card for better performance. Installation instructions:

  1. Enable the Universe and multiverse repository for the Nvidia driver. 1.(optional for 13.10 Saucy) Add a PPA containing recent drivers as the one in the repositories is possibly outdated:

    sudo add-apt-repository ppa:ubuntu-x-swat/x-updates
    
  2. (for 13.04 Raring and earlier, not needed for Saucy and later) Add the Stable Bumblebee Releases PPA:

    sudo add-apt-repository ppa:bumblebee/stable
    sudo apt-get update
    
  3. Install Bumblebee using the proprietary Nvidia driver:

    sudo apt-get install bumblebee bumblebee-nvidia linux-headers-generic
    
  4. Reboot or re-login to apply the group changes

If you'd like to run a program on the nvidia card now, use the optirun program:

optirun firefox &

If you are only interested in power savings, replace the last command in step 4 by:

sudo apt-get install --no-install-recommends bumblebee linux-headers-generic

At a later time, you can still use NVIDIA by installing bumblebee-nvidia. If you want to use a 32-bit program, you can still install the required libraries with sudo apt-get install virtualgl-libs-ia32. You have to add linux-headers-generic, otherwise the power saving module bbswitch cannot be built.

Instead of virtualgl, you can also try primus to achieve better performance. The package name is primus and you can use:

primusrun glxgears
# alternative that is nearly the same:
optirun -b primus glxgears

(note: before asking about a 60 fps limit, please read its FAQ.)

See also https://wiki.ubuntu.com/Bumblebee

Notes:

  • Using acpi_call manually is deprecated. By default, it won't survive suspend.
  • Do not use ppa:mj-casalogic/bumblebee or the MrMEEE/bumblebee-Old-and-abandoned git, it's not maintained anymore and contains a lot of errors.
  • Martin Juhl forked the original Bumblebee to Ironhide, but in my opinion it should not be used because the design flaws from the original Bumblebee are still present and the "power management" features are not stable (the wrong methods, _ON and _OFF, are used). Installation is still a mess, your installation may be broken after removing it.

If you do not want to use the nvidia card nor Bumblebee

If you've accidentally installed the nvidia driver (i.e. using the jockey), you've two choices:

  • Uninstall the driver (package nvidia-current)
  • Set the default OpenGL libraries as described in this bugreport