Bumblebee is a solution to Nvidia Optimus hybrid-graphics technology allowing to use the dedicated graphics card for rendering.
Optimus Technology is an hybrid graphics implementation without a hardware multiplexer. The integrated GPU manages the display while the dedicated GPU manages the most demanding rendering and ships the work to the integrated GPU to be displayed. When the laptop is running on battery supply, the dedicated GPU is turned off to save power and longer the battery life.
Bumblebee is a software implementation based on VirtualGL and the Nvidia proprietary kernel module to be able to use the dedicated GPU, which is not physically connected to the screen.
This article will describe how to configure Bumblebee.
AUR package: bumblebee
You need to configure a second X server, load the correct kernel module and the load of bumblebee daemon.
Configure X Server
In the installation an Template:Filename file is created with the minimal device configuration. Here you must specify the PCI bus address of the Nvidia card. To get it run in a terminal:
$ lspci | grep VGA
Will give you something like this:
00:02.0 VGA compatible controller: Intel Corporation Core Processor Integrated Graphics Controller (rev 18) 01:00.0 VGA compatible controller: nVidia Corporation GT218 [GeForce 310M] (rev a2)
Take note of the PCI address of the nVidia card (01:00.0 in this case) and edit the line in Template:Filename with the option "BusID" under the "Device" section:
Section "Device" Identifier "Device1" Driver "nvidia" VendorName "NVIDIA Corporation" BusID "PCI:01:00:0" Option "IgnoreEDID" EndSection
Load Kernel Module
Bumblebee needs the proprietary Nvidia kernel module to run properly. You need to unload the Nouveau kernel module and load the Nvidia proprietary one. To do so run in a terminal:
# rmmod nouveau # modprobe nvidia
To check for success of loading the kernel module, check the output of this command:
$ lspci -k | grep nvidia
Should be something like this:
Kernel driver in use: nvidia
To load nvidia module at startup you must blacklist nouveau first. Add them to the "MODULES" array in Template:Filename:
MODULES=( ... !nouveau nvidia ...)
Start VirtualGL Client
Run this command in a terminal:
$ vglclient -gl
To start vglclient at system startup add "bumblebee" to the "DAEMONS" array in Template:Filename:
DAEMONS=( ... dbus bumblebee ...)
You can test Bumblebee by comparing these two commands:
To launch an application using the dedicated graphics card:
$ optirun <application> [application-parameters]