Bumblebee on Ubuntu 16.04! Revised !
Well life is not
very easy, is it? I have been puling my hair out for the past 2-3
months when all of a sudden my bumblebee setup on Ubuntu 16.04
started to freak out. I have been monitoring my blog for comments and
all my readers say they have had either a login loop or they have had
black screens after following my instructions. Many have had weird
issues with primus not connecting to bumblebee daemon.
So i have been
searching the good old INTERNET while using nvidia-prime myself as an
alternative and always asking my readers to not use driver other than
nvidia-367. Well all was good for some time and then all of a sudden
one day I started having the worst possible screen tearing with
nvidia-prime and I was again disappointed with the state of primus
support on Linux.
Have been trying
various distributions to find out switching distros would really
help. So I switched to all other possible distros. So what now?
I was very pissed
wth all this and I had been talking to a friend of mine by the name
Brett Stevens. We together cracked this puzzle.
So what exactly is
the issue with this whole login loop (I thought switching to another
Display Manager would help, Alas ! That changes nothing ) and black
screen after bumblebee installation.
So how did I fix it?
“Here is how. By
Installing Bumblebee and Nvidia-Prime both.” Now you would say that
is crazy, How can that even work? Yeah Yeah ! I hear you. Please keep
reading and you will have your answers.
So something changed
with an update to Nvidia-36X.XX Series of drivers in Ubuntu 16.04
sometime after my earlier bumblebee post. Not sure what it was but
here is the behaviour.
Something has been
causing nvidia_drm, nvidia_modeset and nvidia-uvm to automatically
load at boot. Nothing could prevent these bad boys to stop loading at
boot. These automatically loading at boot is the reason why you have
the login loop and black screen. So what to do . I tried manually
blacklisting the modules but they would not stop. This was because
nvidia drivers were enabling modesetting and automatically
activating.
So we need something
to prevent these modules from automatically loading. We now had a
clear problem statement with no solution. So what to do. And then
Brett Came across this article.
by Jacek
Ciolek
This changed the
whole direction of investigation. I could not help noticing this
step in his article.
sudo prime-select intel
This was something I
could not digest. However looking deeper we found that this was real.
We were able to force the system to always use Intel using
prime-select. The package nvidia-prime works a bit differently than
bumblebee, It completely disables nvidia-card and forces intel card
to be primary all the time. It can also force the system to use nvidia card as well.
Once Intel is
forcefully made primary, There are no more login loops no more black
screens. Now In addition to this we installed bumblebee as usual. No
more errors, Switching is perfect. No issues.
So without further
delay. Here are the simplified instructions.
To install and
Configure Bumblebee on Ubuntu 16.04, Open up a Terminal and
Run the following
Commands in Sequence
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 install nvidia-prime nvidia-367
6) sudo prime-select intel
7) sudo apt-get
install bumblebee bumblebee-nvidia primus nvidia-settings nvidia-367
(You could use nvidia-364 or nvidia-367 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-367
blacklist
nvidia-367-updates
blacklist
nvidia-experimental-361
Ensure that this
section shown above exists. If not add it manually.
3) sudo gedit
/etc/bumblebee/bumblebee.conf
replace
nvidia-current
with
nvidia-367
(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 367.35
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 367.35
OpenGL shading
language version string: 4.50 NVIDIA
OpenGL context
flags: (none)
OpenGL profile mask:
(none)
OpenGL 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.