Daily Shaarli

All links of one day in a single page.

September 5, 2016

Osgyan: How to Install Latest Nvidia Drivers on Ubuntu 16.04 Xenial Xerus using Bumblebee or Nvidia-Prime

1) sudo apt-get update && sudo apt-get upgrade

2) sudo apt-get dist-upgrade

3) sudo apt-add-repository ppa:graphics-drivers/ppa (Skip this step if you are no t going to use Nvidia-364 or higher in future.)

4) sudo apt-get update && sudo apt-get dist-upgrade

5) sudo apt-get install bumblebee bumblebee-nvidia primus nvidia-settings nvidia-361 (You could use nvidia-364 if you have enabled Graphics Drivers PPA )

Once this is Installed, Below files need to be edited as shown.

1) sudo gedit /etc/modules

add

i915
bbswitch

2) sudo gedit /etc/modprobe.d/bumblebee.conf

Check for this

361

blacklist nvidia-361
blacklist nvidia-361-updates
blacklist nvidia-experimental-361

Workaround to make sure nvidia-uvm is removed as well

remove nvidia rmmod nvidia-uvm nvidia

Ensure that this section shown above exists. If not add it manually.

3) sudo gedit /etc/bumblebee/bumblebee.conf

replace

nvidia-current
with

nvidia-361 (Or whatever version of Driver is latest if using Graphics Drivers PPA)

Also Change

Driver = nvidia on Line Number 22

7) sudo gpasswd -a $USER bumblebee

8) sudo systemctl enable bumblebeed

9) Reboot

10) Install mesa utils if not already installed

sudo apt-get install mesa-utils

Check using

11) primusrun glxinfo | grep OpenGL

You shoud see a result like this.

OpenGL vendor string: NVIDIA Corporation
OpenGL renderer string: GeForce 820M/PCIe/SSE2
OpenGL core profile version string: 4.5.0 NVIDIA 361.42
OpenGL core profile shading language version string: 4.50 NVIDIA
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL core profile extensions:
OpenGL version string: 4.5.0 NVIDIA 361.42
OpenGL shading language version string: 4.50 NVIDIA
OpenGL context flags: (none)
OpenGL profile mask: (none)
OpenGL extensions:
OpenGL ES profile version string: OpenGL ES 3.2 NVIDIA 361.42
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.20
OpenGL ES profile extensions:

This means all is well and your bumblebee setup is working.

If you would like to see if bumblebee is actually working, try this

lsmod | grep bbswitch

You should see something similar to this

bbswitch 16384 0
The number in second column is Random and will vary.

also

if you run.

cat /proc/acpi/bbswitch

You should see something like this

0000:03:00.0 OFF

This means that your Nvidia Card is OFF by default. Once you run an application using primusrun or optirun commands, while the program you run is running you can see that the OFF change to ON Like below.

primusrun glxgears

this runs the glxgears program using your Nvidia Card via bumblebee.

Open another terminal and run.

cat /proc/acpi/bbswitch

You should see something like

0000:03:00.0 ON

Now Close the application which you launched via bumblebee earlier, in this Case glxgears.

again run

cat /proc/acpi/bbswitch

You should see something like this.

0000:03:00.0 OFF

If all is going like I have mentioned then you can be sure that bumblebee is configured correctly.

Now there are chances that your Nvidia graphics card remains turned ON after primus or optirun exits. This is a known bug and you need to manually unload the Nvidia Module.

Nvidia-Unload Bug

above is a Link to the bug, should you face it.

Now it you face the bug, don't feel bad, bugs are there in all software, I am sure the developers are working to fix the bug.

OK, What is the workaround for this? If you are on another distro, chances are that you might have to compile bumblebee from source and add the lines of code to fix the issue. In Arch the you need to edit the PKGBUILD and add the lines of code as per the bug report and compile bumblebee-git and it would work just fine.

The problem though is that it is not easy. Since you are using Ubuntu, We have another solution called as NVIDIA-PRIME. (No other distribution has this except OpenSuse which partially works and you have to unload the module manually some times even though it should work)

NVIDIA-PRIME.

Below are the Instructions.

Remove everything you installed in the previous steps using

sudo apt remove <packagename>

Reboot your laptop.

Login again and open up a terminal and run the commands.

sudo apt install nvidia-prime nvidia-361 (or nvidia-364 or higher in case you are using Graphics Drivers PPA)

Reboot your Laptop.

You should boot with your complete system using the Nvidia Graphics Card and your Graphics performance will be many times better than bumblebee in some games.

Now You don't want to be using Nvidia Card all the time, So, in the Dash search for Nvidia-Settings. Open Nvidia-Settings and browse to

PRIME PROFILES.

Click PRIME PROFILES. you see two Options, One is NVIDIA (Performance Mode) and is selected and Second is INTEL (Power Saving Mode).

Click on Power Saving Mode enter your password in the Authentication dialog box. The Log out and Log in.

Now you are running only on INTEL GPU. If you want to flip back to NVIDIA GPU you can use the same process again and select NVIDIA and logout and login again.

Only caveat is that you need to logout and login and manually switch Graphics. Once you switch you stay on that card till you manually switch again.

Other than that this is a great solution and my personal favorite and something I am using right now (because of that bug)

Please leave your feedback in the comments section.

Thanks for your time!