Skip to content
Peter Wu edited this page Sep 30, 2013 · 36 revisions

Common issues and their solution can be found here.

Are you really using an nVidia Optimus card?

Only laptops have these kind of nVidia Optimus card, so this project won't apply to desktops (for now). Cards from the 4xxM and newer series are all Optimus-enabled. The M stands for "Mobile". But having a 4xxM card isn't enough to be sure that you're having an Optimus laptop. There must also be an integrated video controller in your processor. To check that, run this command in a terminal:

lspci -vnn | grep '\''[030[02]\]'

If it outputs two lines, then you're likely having an Optimus laptop. Else, it's probably not one, ask on the hybrid graphics mailing list for more informations, providing the above command output.

Have you installed a recent nvidia driver?

Version 260.19.12 was the first to support Optimus enabled card (but does not support Optimus technology itself). Ensure that you've a recent driver installed. If you're using Ubuntu, install the ubuntu-x-swat/x-updates PPA and upgrade nvidia-current:

sudo apt-add-repository ppa:ubuntu-x-swat/x-updates
sudo apt-get update
sudo apt-get upgrade

Also make sure that you don't have drivers installed for older cards. On Ubuntu, these are the packages nvidia-96, nvidia-173 and nvidia-180.

[VGL] Could not obtain Pbuffer-capable RGB visual on the server

[VGL] ERROR: Could not open display :8 with certain programs

Some programs quit optirun by running detached. Workaround: run a shell with optirun and start the program from that shell:

optirun bash
$ yourprogram

When done, you can exit the shell with exit. The idea is to keep at least one optirun instance running.

Desktop effects do not work anymore

If you've generated /etc/X11/xorg.conf using nvidia-xconfig, remove that file. It's not compatible with Optimus laptops:

sudo rm /etc/X11/xorg.conf

3D effects don't work and when running 3D apps in a terminal you get Xlib: extension "GLX" missing on display ":0"

First, if you are using Ubuntu using version 3.0-1~...ppa1, upgrade to 3.0-1~...ppa2 or newer and be sure that bumblebee-nvidia is installed if you are using the proprietary nvidia driver. A reboot may be necessary.

Otherwise, you've probably messed up GLX library in Xorg. To recover it, try to do the following things:

sudo apt-get install --reinstall libgl1-mesa-glx xserver-xorg-core

Then reboot and your should be OK.

optirun does not work

First, if you are using Ubuntu using version 3.0-1~...ppa1, upgrade to 3.0-1~...ppa2 or newer and be sure that bumblebee-nvidia is installed if you are using the proprietary nvidia driver. A reboot may be necessary.

optirun is quite helpful in debugging, i.e. when you need to re-login after installation or if you forgot to add yourself to the bumblebee group. There are many reasons why optirun would fail to run. To start debugging, look in /var/log/sys.log and /var/log/Xorg.8.log (replace 8 by the VirtualDisplay setting in /etc/bumblebee/bumblebee.conf). New log messages are appended to the end, so make sure you look at the end of your log file for recent messages.

I don't get any power saving!

Power management relies on ACPI, disabling ACPI renders bbswitch unusable. Be sure that your kernel boot parameters do not contain on of the options noacpi, pci=noacpi, acpi=off. You can read your current kernel parameters by reading the /proc/cmdline file.

bbswitch is ineffective due to nvidia driver loading on boot -- bbswitch: device XXX is in use by driver 'nvidia', refusing OFF

In some configurations, proprietary GPU driver loads itself at boot-time, unconditionally enabling the device and rendering bbswitch unusable. Kernel messages you may see if this is the problem:

bbswitch: device XXX is in use by driver 'nvidia', refusing OFF

or

nvidia XXX: power state changed by ACPI to D0
nvidia XXX: enabling device (0006 -> 0007)

at system boot.

To fix this, you can

  • blacklist the nvidia module (see e. g. ArchWiki)
  • if you are using DKMS to build the proprietary driver and have their startup script enabled (especially on ArchLinux), DKMS may unconditionally load all the modules on boot.
    On ArchLinux, this is fixed by setting LOAD=no in /etc/conf.d/dkms.

sys.log: The Bumblebee X server failed to start. Please check /var/log/Xorg.8.log

Check your /var/log/Xorg.8.log for possible errors. Use grep -Fn '(EE' /var/log/Xorg.8.log for finding errors quickly, prefixed with the line number. Known errors messages and their description are listed below.

(EE) Failed to load module "kbd" (module does not exist, 0) (<=2.4.1)

This is a harmless message.

(EE) NVIDIA(0): WAIT: (E, 0, 0x857d, 0)

Ensure that ConnectedMonitor option from /etc/bumblebee/xorg.conf.nvidia is valid:

cat /etc/bumblebee/xorg.conf.nvidia | grep ConnectedMonitor 

Valid value for this option you can get from output of xrandr command (valid value is LVDS1 in follow case):

LVDS1 connected 1366x768+0+0 (normal left inverted right x axis y axis) 309mm x 174mm
VGA1 disconnected (normal left inverted right x axis y axis)
HDMI1 disconnected (normal left inverted right x axis y axis)
DP1 disconnected (normal left inverted right x axis y axis)

Failed to initialize the NVIDIA GPU at PCI:1:0:0. Please ...

PCI:1:0:0 may vary, but take a look at the last lines of the kernel log (usually located at /var/log/kern.log, /var/log/kernel or /var/log/messages).

ERROR: ld.so: object 'libdlfaker.so' from LD_PRELOAD cannot be preloaded: ignored.

If you run Wine (or a 32-bit application) on Ubuntu Oneiric or later and get this error, you need to install the 32-bit libraries for VirtualGL:

sudo apt-get install virtualgl-libs:i386

Other reasons why you get this reason:

  • The program you're trying to run is a statically linked program. There is no workaround for this
  • The program you're trying to run has a setuid/setgid bit set which makes the program run under the owner of the file. For security reasons, virtualgl cannot hook into it. There is a workaround with chmod u+s, but it's very unsafe and not recommended.
  • The environment variable LD_LIBRARY_PATH is cleared. See the previous workaround for ways to solve it.

[ERROR]Cannot access secondary GPU - error: [XORG] (EE) [drm] failed to open device

If you get this error, the nouveau driver may be overriding the official one. Even if you've installed the proprietary nvidia driver, if the nouveau driver is loaded it'll take precedence. So be sure to set Driver=nvidia in /etc/bumblebee/bumblebee.conf or blacklist and unload nouveau. If you want to use the nouveau driver, check the syslog for more log entries.

This can also happen if the driver and client versions don't match. If you get this error after an update, it's likely that one was upgraded but not the other. If this is the case, you'll get messages in your kernel log (/var/log/kernel.log or similar) like this:

NVRM: API mismatch: the client has the version <version>, but
NVRM: this kernel module has the version <different version>.  Please
NVRM: make sure that this kernel module and all NVIDIA driver
NVRM: components have the same version.

To fix it, just update the one that's behind (or downgrade the one that's ahead) so they're at the same version.

[ERROR]Cannot access secondary GPU - error: could not start X Server and/or Kernel oops with GT 600M series cards (Kepler) on boot

Make sure you have a recent kernel and the latest nvidia driver, i.e. not only the one, which first claims support for GT600M cards (302.17). First working driver for the tested card (GT620M - inside ASUS UX32) is the (beta) driver 304.22. (tested with kernelversion 3.4.6 on ArchLinux).

To verify this issue, make sure bbswitch cannot be loaded (e.g. move it away) and try: "nvidia-xconfig -query-gpu-info".

On Ubuntu, if you get a kernel oops with something mumbling about the audio driver, try the workaround in https://github.com/Bumblebee-Project/Bumblebee/issues/205#issuecomment-8022153

bumblebeed: Module 'nvidia' is not found.

You can find this message in your syslog when the configured nvidia driver is invalid, you might need KernelDriver=nvidia-current for example. Find out the name by executing find /lib/modules/$(uname -r) -name 'nvidia*.ko*' (ignore nvidiafb.ko, you should be looking for something like nvidia_current.ko or nvidia_325.ko).

Can't find the nvidia module? Then ensure that you the module is built. You will need the kernel headers matching your kernel and maybe some patches if you run a very recent kernel with a slightly older nvidia driver.

If you cannot solve your issue, continue at Reporting Issues.

Clone this wiki locally