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
nvidia-drm. But this module prevents bumblebee from unloadingnvidiaproperly. – clover Jul 12 '18 at 21:03