Bumblebee Intel+Nvidia on 15.10 blackscreen issue
I have a fresh install of Kubuntu 15.10, i have a msi GT70 laptop with optimus.
I have installed bumblebee bumblebee-nvidia
, it is absolutely needed because nouveau keeps crashing at login.
So i edited /etc/bumblebee/bumblebee.conf
# 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-304
PMMethod=auto
# colon-separated path to the nvidia libraries
LibraryPath=/usr/lib/nvidia-304:/usr/lib32/nvidia-304
# comma-separated path of the directory containing nvidia_drv.so and the
# default Xorg modules path
XorgModulePath=/usr/lib/nvidia-304/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
I have
$ cat /proc/acpi/bbswitch
0000:01:00.0 ON
I putted in /etc/modules-load.d/modules.conf
i915
bbswitch
So i am able to do :
$ primusrun glxinfo | grep "OpenGL version"
OpenGL version string: 4.2.0 NVIDIA 304.128
But if i reboot all i have is a black screen, to get my system starting i have to login in tty1 and do:
sudo modprobe nvidia_304
sudo service sddm restart
to get the kubuntu login screen any ideas to fix that ?
Also if i replace nvidia-304 by nvidia-355 i can't boot at all : the modprobe tip is not working.
Here is my config with lspci:
$ lspci|grep -i vga
00:02.0 VGA compatible controller: Intel Corporation 4th Gen Core Processor Integrated Graphics Controller (rev 06)
01:00.0 VGA compatible controller: NVIDIA Corporation GK104M [GeForce GTX 870M] (rev ff)
EDIT:
Some related info and potential fix http://forum.ubuntu-it.org/viewtopic.php?p=4760241 (italian through) https://www.kubuntuforums.net/showthread.php?69190-Bumblebee-Nvidia355&p=381043
Also there is actually a bug with i915 module on kernel 4.2 https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1494903
EDIT2 (working bumblebee solution):
I have manage to make this work https://www.kubuntuforums.net/showthread.php?69190-Bumblebee-Nvidia355&p=381043
- install nvidia-355 and nvidia-prime
- select intel driver in nvidia panel and logout
- install bumblebee only (not bumblebee-nvidia)
- edit as needed /etc/bumblebee/bumblebee.conf line22 KernelDriver=nvidia replace nvidia-current by nvidia-355
- /etc/bumblebee/xorg.conf.nvidia uncomment BusID "PCI:01:00:0" as described here https://askubuntu.com/questions/29044...vices-detected,
- you can now boot under intel card and use optirun and primusrun. It is working for me so far, test with primusrun glxinfo
EDIT3: (maj 03/12/2015)
Using ppa:graphics-drivers/ppa and ppa:xorg-edgers/ppa, after an update and reboot, I had a blackscreen using 358.16-0ubuntu0~gpu15.10.2.
So I purged everything and then just installed bumblee-nvidia nvidia-358, edited /etc/bumblebee/bumblebee.conf and did sudo service bumblebeed restart.
It did work again after a reboot.
Solution 1:
As you have quite new GPU hardware you should use new NVIDIA drivers and software as well.
Replace bumblebee with nvidia-prime
to switch between integrated and dedicated graphics.
Reinstall the NVIDIA drivers, but first uninstall all NVIDIA software and remove the bumblebee.
Open a terminal and execute:
sudo apt-get purge nvidia* '^bumblebee.*'
sudo reboot
When the GRUB boot menu appears : Highlight the Ubuntu menu entry and press the E key.
Add the nouveau.modeset=0
parameter to the end of the Linux line ... Then press F10 to boot.
Install the stable NVIDIA proprietary drivers from the Ubuntu repositories (does not apply to ubuntu 12.04:
sudo apt-get update
sudo apt-get install nvidia-352 nvidia-prime
sudo reboot
When you want to use the latest drivers - install them from the Proprietary GPU drivers PPA:
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt-get update
sudo apt-get install nvidia-355 nvidia-prime
sudo reboot
Solution 2:
Managed to get bumblebee to work in Wily after way too much unnecessary headaches, without that nvidia-prime horribleness.
As others suspected, it's because of gpu-manager. Whatever that is, it is barfing all over the update-alternative configuration. Masking that service and reinstalling bumblebee[-nvidia] fixes all problems, now the card turns on and off via optirun as expected, and no more black screens at boot.
sudo systemctl mask gpu-manager.service
sudo apt-get install --reinstall bumblebee bumblebee-nvidia
Also make sure there's no broken /etc/X11/xorg.conf left behind.
Solution 3:
Although everything seemed to work, trying the following shows the bbswitch cannot turn off the nvidia card properly:
cat /proc/acpi/bbswitch
primusrun glxinfo|grep OpenGL
sleep 1
cat /proc/acpi/bbswitch
Then I reinstalled bumblebee-nvidia, it worked UNTIL I restart the system. After digging some more about the problem, I noticed that update-alternatives are updated after restarting the system and I noticed that gpu-manager is causing that. (simply run "sudo gpu-manager" and you'll see it is updated)
gpu-manager runs after you start lightdm. so, as a quick workaround, I disabled it.
now everything works as expected. after running something with optirun or primusrun, bbswitch turns nvidia off properly when the process exits.
To sum up, here is my summary to install everything from scratch (run it manually by reading the comments):
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt-get update
sudo apt-get purge -y nvidia* bumblebee bumblebee-nvidia bbswitch-dkms primus
sudo apt-get install nvidia-355
#switch to intel
sudo tee /etc/prime-discrete <<< off
#reboot is recommended at this point
sudo add-apt-repository ppa:bumblebee/stable
sudo apt-get update
sudo apt-get install bumblebee primus
#sudo gedit /etc/modules
# add the line "bbswitch load_state=0"
#sudo gedit /etc/modprobe.d/bumblebee.conf
#and make sure the following line exists
# blacklist nvidia-355
#sudo gedit /etc/bumblebee/bumblebee.conf
# change line 22 "Driver=" to "Driver=nvidia"
# change all nvidia-current to nvidia-355
#sudo gedit /etc/bumblebee/xorg.conf.nvidia
# uncomment BusID line if it is commented and make sure it corresponds to the correct BusID
#disable gpu-manager as it changes i386-linux-gnu_gl_conf and x86_64-linux-gnu_gl_conf
sudo systemctl mask gpu-manager.service
EDIT: I removed rc.local modifications because gpu-manager was running not only at runtime but also while using the system. Therefore I disabled it completely.