How to use Nvidia Optimus to switch active GPUs and save power on Linux laptops

Nvidia's power-saving Optimus technology is available on Linux, but the experience is far from smooth out of the box. Here's how to fix it.

gtx 960 primary

Many modern laptops include both Nvidia graphics hardware and integrated Intel GPUs. Those laptops use a technology called Nvidia Optimus to intelligently switch between the two. Intel’s CPU-integrated graphics power the desktop for lower power usage, while Nvidia’s more capable GeForce graphics kick into gear when you need them.

That’s the way it works with Windows at least. But as good as the Nvidia drivers for Linux are, Optimus power-switching isn’t properly supported on Linux. There are ways to enable it, however.

Nvidia’s official Optimus support

Nvidia has provided some Optimus support since 2013. It’s not as slick and convenient as it is on Windows, but it’s something.

On Ubuntu or Linux Mint, you’ll need to install the “nvidia-prime” package from your package manager first. Other Linux distributions may require additional configuration. After you do, you can open the graphical Nvidia X Server Settings application and choose between the Nvidia and Intel graphics hardware. You’ll see a “Select the GPU you would like to use” option under “PRIME Profiles” in the window.

nvidia optimus settings Linux Screenshots

A screenshot of Nvidia X Server Settings via xmodulo.com.

You’ll have to log out and log back in for your changes to take effect. Your computer also won’t automatically switch between the two. However, if you’re just using your Linux system for gaming and don’t care about longer battery life, you can have it always use the Nvidia hardware. It’ll work just like a desktop PC with an Nvidia GeForce GPU would.

The BIOS method

Some computers offer a switch for this in their BIOS or UEFI firmware settings screen, although most don’t.

If you’re lucky, you may be able to head to the BIOS and disable the Intel graphics entirely, forcing your computer to only use the Nvidia GeForce graphics. Linux will just see the Nvidia graphics hardware and everything will work normally, as if the Nvidia hardware was the only graphics hardware in your system. You won’t have to configure anything special in Linux.

Want to stay up to date on Linux, BSD, Chrome OS, and the rest of the World Beyond Windows? Bookmark the World Beyond Windows column page or follow our RSS feed.

Bumblebee and Primus

The Bumblebee project was created to reverse-engineer the way Optimus works on Windows and implement it similarly on Linux.

When you use Bumblebee, you must start an application with the “primusrun” command. This will activate the Nvidia GPU only while that application is running—just like on Windows. There’s no need to log out and log back in. It all happens on the fly, although you do have to run the command. It doesn’t just automatically switch when you launch an application, as it does on Windows. However, you can configure Steam to automatically run games with primusrun.

The official Steam website provides instructions for setting up Bumblebee to help get you started. This is a bit more work to set up and isn’t officially supported by Nvidia, but it’s the only way to have Linux automatically switch between the Nvidia and Intel GPUs when running specific applications. If you want Linux to use the Intel GPU on your laptop most of the time and the Nvidia GPU when running games, this is the only solution.

The Nouveau project—which creates an open-source, reverse-engineered Nvidia graphics driver—also has some support for this via “Nouveau Prime.” However, the Nouveau driver isn’t anywhere near as fast as the Nvidia driver for 3D graphics performance. To be frank, Nouveau still just isn’t a good option for most gamers at all. Non-gamers will be happy with the Intel graphics hardware, anyway.

To comment on this article and other PCWorld content, visit our Facebook page or our Twitter feed.
Shop Tech Products at Amazon
Notice to our Readers
We're now using social media to take your comments and feedback. Learn more about this here.