bumblebee doesn't work on Ubuntu 18.04

I installed a fresh version of Ubuntu 18.04 on my optimus laptop then I followed the instructions from this site to install the bumblebee package. It succeeded but I saw a line during the installation which stated that it couldn't remove the nouveau module. I did a reboot and I ran optirun --status to see if it's working and it outputted that discrete nvidia card is disable, then I tried running optirun glxgears and this error message came up.

[ERROR]Cannot access secondary GPU - error: [XORG] (EE) Failed to load module "mouse" (module does not exist, 0)

I have tried reinstalling Ubuntu and bumblebee.

I have an NVidia Geforce 940MX card.


Solution 1:

There was one major change in nvidia driver that prevents bumblebee from working - glvnd (https://github.com/NVIDIA/libglvnd). In short, bumblebee is running a separate instance of xorg on a separate display, which glvnd cannot handle. This behaviour should be disabled for bumblebee. Put the following line to /etc/environment

__GLVND_DISALLOW_PATCHING=1

In order to make glvnd work, nvidia also changed directories where related files/drivers are located. Bumblebee should be reconfigured accordingly (/etc/bumblebee/bumblebee.conf):

LibraryPath=/usr/lib/x86_64-linux-gnu:/usr/lib/i386-linux-gnu
XorgModulePath=/usr/lib/x86_64-linux-gnu/nvidia/xorg,/usr/lib/xorg/modules,/usr/lib/xorg/modules/input

Last issue that prevents bumblebee from unloading nvidia drivers is caused by nvidia-drm which is not supposed to be loaded in the bumblebee enviroment. This is easy to disable by aliasing it to off (/etc/modprobe.d/blacklist-nvidia.conf):

blacklist nvidia
blacklist nvidia-drm
blacklist nvidia-modeset

#alias nvidia off
alias nvidia-drm off
#alias nvidia-modeset off

nvidia-modeset is not needed as well, but loading it doesn't hurt and you may want to disable it as well.

I would also disable gpu manager (What does gpu-manager do?), as it's not needed in this case (/etc/default/grub): add nogpumanager to the GRUB_CMDLINE_LINUX_DEFAULT section.

I also had some issues with nvidia-persistenced service in the past (https://docs.nvidia.com/deploy/driver-persistence/index.html#persistence-daemon), you may want to disable it as well by issuing sudo systemctl disable nvidia-persistenced.

NOTE: I'm using nVidia 390 from https://launchpad.net/~graphics-drivers/+archive/ubuntu/ppa