I have a laptop with Ubuntu 15.04 on it and Nvidia video card GT840M. I've installed video driver in a way like this:

sudo apt-get purge nvidia*
sudo add-apt-repository ppa:ubuntu-x-swat/x-updates
sudo apt-get update
sudo apt-get install nvidia-340
sudo apt-get install nvidia-settings
sudo nvidia-xconfig

After that I've installed bumblebee and primus

sudo apt-get install bumblebee
sudo apt-get install bbswitch-dkms
sudo apt-get install primus
sudo systemctl enable bumblebeed

In /etc/modules-load.d/modules.conf I've added lines

i915
bbswitch

And in /etc/modprobe.d/nouveau.conf I've added line

blacklist nouveau

Almost everything works fine. In nvidia-settings (sudo gksu nvidia-settings) I selected CPU I want to use Intel (power saving mode) and my discret video card is off by default (as I wanted, because I need my laptop at the university where I don't have a lot of sockets to charge it and turned on video card uses a lot of energy). When I start my PC and type lspci -v I have a message

03:00.0 3D controller: NVIDIA Corporation GM108M [GeForce 840M] (rev ff) (prog-if ff)
!!! Unknown header type 7f

Which says that my card is turned off -- everything is fine now.

The problem is when I try to use my card, e.g. primusrun firefox it turns on and when I stop firefox it doesn't turn off back. So I keeps turned on and uses a lot of power. The only way to turn it off back is

# echo OFF > /proc/acpi/bbswitch

But I don't want to do it all the time I use it. How can do it automatically?

This problem has occured only when I started to use Ubuntu 15.04. Before it (I had Ubuntu 14.10) it worked fine.


I found that editing the /etc/bumblebee/bumblebee.conf to match your installed driver. Your file should look like this for your current configuration. When this is configured it will automatically enable and work when using the primusrun command and after exiting the program it will shut it off.

# 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=false
# 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=nvidia
# 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
# 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-340
PMMethod=auto
# colon-separated path to the nvidia libraries
LibraryPath=/usr/lib/nvidia-340:/usr/lib32/nvidia-340
# comma-separated path of the directory containing nvidia_drv.so and the
# default Xorg modules path
XorgModulePath=/usr/lib/nvidia-340/xorg,/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=auto
XorgConfFile=/etc/bumblebee/xorg.conf.nouveau