ultimate tutorial installing Bumblebee driver for SUSE

There are always this or that problems installing Bumblebee optimus driver under SUSE. Here are some useful steps towards this isssue and some solutions were propsed for frequent and headache problems. I wish this will help SUSE users for configurating their system well.

Nowadays, it is quite common and popular to have two dedicated graphic cards in laptop: usually, one is intergrated (eg: intel HD4xxx ) and the other is indepedent (eg: Nvidia GTX xxx). Such strategy can save laptop energy if we use integrated card for document task; while we can switch to independent one if dedicated CG work needed.
Neither downloading nvidia.run driver file from official website nor install from Linux distribution repository works for nvidia graphic cards. Those old methods usually lead to xserver behave abnormally even one cannot enter GUI anymore. Here showed some useful steps towards installing NVIDIA optimus driver for openSUSE in Dell M3800 laptop:

Environment
graphic card: Intel HD4600+Nvidia K1100M
OS: openSUSE 13.2, SLE 12

Steps
Update the system via Yast or zypper up – it is important to make sure that the system is fully updated before continuing. If you are using Virtualbox and other tools need to recompile Linux kernel, it is better to install them before the following steps.
Make sure Optimus is enabled in the laptop’s BIOS setting

  1. [FONT=宋体]Get rid of all NVIDIA-related packages: [/FONT]
*> zypper se nvidia*

*> zypper rm ...*

Get rid of
bumblebee, primus, dkms, dkms-nvidia, dkms-bbswitch
if you’ve installed before
2. [FONT=宋体]Get rid of all mentions of nvidia in [/FONT]
/etc/sysconfig/kernel
3. [FONT=宋体]Make sure xf86-video-intel package is installed[/FONT]

*> zypper if xf86-video-intel*


  1. add the line “blacklist nouveau” to /etc/modprobe.d/50-blacklist.conf
    add option “nouveau.modeset=0” to the end of boot loader option from “Yast–>boot loader–>Boot Loader option–>optional kernel command line parameter”

5. [FONT=宋体]mkinitrd[/FONT]
6. [FONT=宋体]reboot your system[/FONT]

At this stage, we are running on Intel HD integrated card and we should login into the SUSE GUI environment KDE/GNOME without any problem.

7[FONT=宋体].Install ‘powertop’ package and note power consumption (must be on battery for power consumption to be shown)[/FONT]
*

   > zypper in powertop



  1. [FONT=宋体]Install the ‘devel_kernel’ pattern[/FONT]
    >  zypper in -t pattern devel_kernel


9.[FONT=宋体] Add bumblebee repository through YAST or zypper command: [/FONT]

     > *zypper ar*

http://download.opensuse.org/repositories/X11:/Bumblebee/openSUSE_13.2/*   bumblebee*


SUSE Linux Enterprise 12 users can add the following repository:

zypper ar http://download.opensuse.org/repositories/X11:/Bumblebee/SLE_12/  bumblebee
  1. i[FONT=宋体]nstall necessary software:[/FONT]
     > *zypper in bbswitch bumblebee dkms nvidia-bumblebee nvidia-bumblebee-32bit primus VirtualGL-devel  VirtualGL-32bit 
*

  1. [FONT=宋体]enable dkms and bumblebeed at booting[/FONT]
    > *systemctl enable dkms *

    > *systemctl enable bumblebeed*

  1. [FONT=宋体]Add current user to video and bumblebee groups through YAST or command line[/FONT]
*  > usermod -A video your_user_name*

*     > usermod -A bumblebee your_user_name*

  1. [FONT=宋体]reboot your system[/FONT]
  2. [FONT=宋体]check the status of your bumblebee services[/FONT]
  > systemctl status bumblebeed

bumblebeed.service - Bumblebee C Daemon
   Loaded: loaded (/usr/lib/systemd/system/bumblebeed.service; enabled)
   Active: active (running) since Thu 2014-05-22 20:31:08 CEST; 46min ago
 Main PID: 1693 (bumblebeed)
   CGroup: /system.slice/bumblebeed.service
           ├─1693 /usr/sbin/bumblebeed
           └─2763 Xorg :8 -config /etc/bumblebee/xorg.conf.nvidia -configdir...

15.[FONT=宋体] run your software for testing:[/FONT]

    > *optirun ~/bin/pymol*

 This Executable Build integrates and extends Open-Source PyMOL 1.7.0.5.
 Detected OpenGL version 2.0 or greater. Shaders available.
 Detected GLSL version 4.40.
 OpenGL graphics engine:
  GL_VENDOR:   NVIDIA Corporation
  GL_RENDERER: Quadro K1100M/PCIe/SSE2
  GL_VERSION:  4.4.0 NVIDIA 334.21
 Adapting to Quadro hardware.


**tips: ** Dell M3800 uses QHD screen and the resolution is 3200x1800 which lead to window icon and font unvisuable. It is better to install “xrandr” to scale the screen.

  > *xrandr --output eDP1 --mode "3200x1800" --scale "0.75x0.75"*


caution: It is highly recommened that update your system only once. If the OS is updated frequently especially updating the keneral, it will destroy dkms and bumblebee. In this case, one have to reinstall nvidia optimus driver again.

issuse:
(1)if the kernerl was updated, reinstallation of bumblebee I got an error saying something about nvidia.ko missing,just ingore it.

editing /etc/modprobe.d/50-bbswitch.conf load_state from 0 to -1:

cat /etc/modprobe.d/50-bbswitch.conf options bbswitch load_state=-1 unload_state=1



reboot the system, and bumblebee should work fine now.
(2) some software may fail with messages:

libGL error: No matching fbConfigs or visuals found
libGL error: failed to load driver: swrast

[VGL] WARNING: The OpenGL rendering context obtained on X display
[VGL]    :8 is indirect, which may cause performance to suffer.
[VGL]    If :8 is a local X display, then the framebuffer device
[VGL]    permissions may be set incorrectly.



this problem can be solved by making soft link of libGL**.** pointing to the latest Nvidia library:

sudo ln -s /usr/lib/nvidia/libGL.so.346.35 /usr/local/lib/libGL.so.1

sudo ln -s /usr/lib/nvidia/libGL.so.346.35 /usr/local/lib/libGL.so

sudo ln -s /usr/lib64/nvidia/libGL.so.346.35 /usr/local/lib64/libGL.so.1
sudo ln -s /usr/lib64/nvidia/libGL.so.346.35 /usr/lib64/lib64/libGL.so. 

everything went smooth until step 14.

systemctl status bumblebeed -l
bumblebeed.service - Bumblebee C Daemon
Loaded: loaded (/usr/lib/systemd/system/bumblebeed.service; enabled)
Active: active (running) since czw 2015-02-19 12:26:17 GMT; 8min ago
Main PID: 1314 (bumblebeed)
CGroup: /system.slice/bumblebeed.service
└─1314 /usr/sbin/bumblebeed

lut 19 12:26:52 linux-ga04 bumblebeed[1314]: 29.645153] [INFO]/usr/sbin/bumblebeed 3.2.1 started
lut 19 12:26:52 linux-ga04 bumblebeed[1314]: rmmod: ERROR: Module nvidia is in use by: nvidia_uvm
lut 19 12:26:52 linux-ga04 bumblebeed[1314]: 32.652547] [ERROR]Unloading nvidia driver timed out.

any clues?

Had you installed the regular NVIDIA driver?? If so you must remove it before installing any of bumblebee.

If this is so then to fix is to again install the regular NVIDIA driver then remove it to be sure to get all of it gone. Then install NVIDIA-bumblebee Once done remove/disable the NVIDIA repo so you don’t get update from it

If you never installed the NVIDIA driver don’t do the above

Hi!

First time posting and kind of new to opensuse. First I would like to thank the OP for this very detailed tutorial.

I have been trying to install nvidia drivers in my laptop using this tutorial. I face a problem in step 10, when trying to install
nvidia-bumblebee and [FONT=宋体]nvidia-bumblebee-32bit. I get the following errors:
[FONT=宋体]
Installation of nvidia-bumblebee-352.55-1.1 failed:
Erro: Subprocess failed. Error: RPM failed: Error in checksums 3610339061 486335404
error: %pre(nvidia-bumblebee-352.55-1.1.x86_64) scriptlet failed, exit status 254
error: nvidia-bumblebee-352.55-1.1.x86_64: install failed

same for the 32bit version

[FONT=宋体]Installation of [/FONT]nvidia-bumblebee-32bit-352.55-1.1 failed:
Erro: Subprocess failed. Error: falha no RPM: Error in checksums 3610339061 486335404
error: %pre(nvidia-bumblebee-32bit-352.55-1.1.x86_64) scriptlet failed, exit status 254
error: nvidia-bumblebee-32bit-352.55-1.1.x86_64: install failed

Is this a problem from the repositories? Can I instead use the drivers downloaded directly from the NVIDIA website?

Any help would be greatly appreciated!
[/FONT][/FONT]

And which version of openSUSE are you using?

You cannot use the drivers from the NVIDIA website directly ( unless you have a thorough knowledge of all the parameters you can pass through to the installer ).

It looks like you’re trying to install outdated packages, or the package download went wrong.

I am using openSUSE 13.2. The kernel version is 3.16.7-24-desktop.

I have tried to reinstall the packages: first I delete the downloaded packages at /etc/var/cache/zypp (if I tried to reinstall the packages, zypper would just use the downloaded but not installed packages found there) and then used zypper to reinstall the packages. I obtained the same warning messages. Using yast I obtain the same errors. So I think the problem should not be download going wrong and corrupting the files.

In any case, is there a way to download the packages first and then to a check sum manually? (just to make really sure it is not the download that is corrupting the packages).

Thanks for the help!

I have tried to download the two packages using the alternative metalinks found at

http://download.opensuse.org/repositories/X11:/Bumblebee/openSUSE_13.2/x86_64/nvidia-bumblebee-352.55-1.1.x86_64.rpm.mirrorlist

and

http://download.opensuse.org/repositories/X11:/Bumblebee/openSUSE_13.2/x86_64/nvidia-bumblebee-32bit-352.55-1.1.x86_64.rpm.mirrorlist

using the firefox Download Them All! and using the checksums MD5 and SHA-1. For both packages and both checksums I got the warning that the checksums did not match.

Is this a problem with the repository or I am doing something wrong?

Big thanks to author for this tutorial.
Finally I managed to make functional bumblebee on my MSI GP70 2PE Leopard.

One little question.
Should there be command “mkinitrd” before point 13?

Generally I don’t think so but then it does not hurt you are just locking the settings into systemd more or less lol!

@albumns: A million thanks! Your guide worked perfectly for me on my new Acer Aspire E17! Spent hours trying other “guides” without success. Someone should put this guide in the SDB, because what is there now did not work for me.

For LEAP 42.1 use repo: http://download.opensuse.org/repositories/X11:/Bumblebee/openSUSE_Leap_42.1/

Hello,
I am a new user of linux. I have follow the steps but it didn’t work for me I don’t know why but I have this errors



linux-2186:~ # systemctl status bumblebeed
bumblebeed.service - Bumblebee C Daemon
   Loaded: loaded (/usr/lib/systemd/system/bumblebeed.service; enabled)
   Active: active (running) since Thu 2015-12-24 22:10:03 CET; 1min 11s ago
 Main PID: 1249 (bumblebeed)
   CGroup: /system.slice/bumblebeed.service
           └─1249 /usr/sbin/bumblebeed

Dec 24 22:10:06 linux-2186 bumblebeed[1249]:    20.818758] [INFO]/usr/sbin/bumbleb...ed
Dec 24 22:10:06 linux-2186 bumblebeed[1249]: rmmod: ERROR: Module nouveau is in use
Dec 24 22:10:10 linux-2186 bumblebeed[1249]:    23.828289] [ERROR]Unloading nouvea...t.
Hint: Some lines were ellipsized, use -l to show in full.
linux-2186:~ # optirun ~/bin/pymol
  117.325615] [ERROR]Cannot access secondary GPU - error: [XORG] (EE) /dev/dri/card0: failed to set DRM interface version 1.4: Permission denied

  117.325644] [ERROR]Aborting because fallback start is disabled.
linux-2186:~ # 


could you please help me i have opensuse leap 42.1

Have you rebooted - Step 13 ?
What’s your hardware? Did you start with a fresh installation?

Else you have to make sure, that the module nouveau gets blacklisted. This should be performed by the nvidia-bumblebee package,
but if, for what reason ever, this didn’t happen, you have to take a look at the directory /etc/modprobe.d/
If there is a file 50-nvidia.conf or nvidia-default.conf, take a look inside to search for a line with

blacklist nouveau

.

If there is no such line, open the file /etc/modprobe.d/50-blacklist.conf as root and
add the line

blacklist nouveau

at the end of this configuration file.

You have to run

mkinitrd

as root and reboot to make changes take effect.

With this measure you forbid the kernel to load the open source nouveau module (module is a loadable part of the kernel).
This nouveau module usually gets loaded at boot time and takes the place you want the nvidia package of bumblebee to take instead.
Either nouveau or nvidia module can be loaded, but not both at the same time - they use the same ‘interface’.
If not blacklisted, nouveau will block the loading of the nvidia module.

Hi,
I just received my laptop and I am struggling to get NVIDIA graphics to work. I completed all the steps and was able to isolate the problem to loading X after all components of bumblebee/NVIDIA are installed

GS60 6QE

CPU: Intel® Core™ i7-6700HQ

GPU: NVIDIA GeForce® GTX 970M

OpenSUSE Tumbleweed

UEFI Enabled

Fast Boot Enabled

Secure mode Enabled

Intel(R) SpeedStep™ Disabled

CPU C states Disabled

Installed using nomodeset, otherwise installation does not proceed

Press e while starting installation and add nomodeset

installed to /dev/sda using btrfs

then reboot

press Del key and change the following

Boot Option #3 changed to UEFI Hard Disk: opensuse-secureboot

This is selected via UEFI Hard Disk Drive BBS Priorities

updated all before starting the next step

also updated the kernel to 4.6.3-1-1

What follows is the specific steps that worked until the last one

sudo zypper install -t pattern devel_C_C++ devel_kernel

Installing Bumblebee/NVIDIA using the Bumblebee repository

Add Bumblebee/Nvidia repository with priority 90

sudo zypper ar -f http://download.opensuse.org/repositories/X11:/Bumblebee/openSUSE_Tumbleweed/ Bumblebee
sudo zypper mr -p 90 Bumblebee

Install bumblebee

sudo zypper in bumblebee
sudo gpasswd -a mborgnia bumblebee
sudo gpasswd -a mborgnia video
su
echo “blacklist nouveau” >> /etc/modprobe.d/50-blacklist.conf
sudo systemctl enable bumblebeed
sudo mkinitrd

Install the corresponding nvidia drivers

sudo zypper nvidia-bumblebee
sudo systemctl enambe dkms
sudo zypper in nvidia-bumblebee-32bit

Put the system init mode 3 to separate graphic card issues

sudo systemctl set-default multi-user.target

reboot

System started in multi-user mode (init 3)

Note: at the end of this process yet Active

optirun --status showed that bumblebeed was not active
185.164629] [ERROR]The Bumblebee daemon has not been started yet or the socket path /var/run/bumblebee.socket was incorrect.
185.164658] [ERROR]Could not connect to bumblebee daemon - is it running?

sudo service bumblebeed start

optirun --status
Bumblebee status: Ready (3.2.1). X inactive. Discrete video card is off.

running startx from user at this point brings the system to a complete lock

While writing this, a new update to kernel 4.6.3 was made available but it does not change the behavior of the system

Before trying to install bumblebee, did your laptop work right with the intel driver?
DId you install bbswitch with your bumblebee installation?
What information does

dmesg | grep bbswitch

return?

One critical little bit that’s missing, for those of us who want OpenCL, is that the symlink /usr/lib64/libOpenCL.so.1 pointing to libOpenCL.so.1.0.0 is not created (or alternatively, that /etc/OpenCL/vendors/nvidia.icd should contain libnvidia-opencl.so or libnvidia-opencl.so.1.0.0 rather than libnvidia-libopencl.so.1). It sort of matters to me; with OpenCL I can process 15-16 images/min. vs. maybe 5-6 without (and 2-3 with my Dell M6500). So if the maintainer of that repo/these instructions is around, something that needs to be fixed.

Next step is to remove all of the nvidia repo bits and ensure that everything still works. Then I will try upgrading to the latest Xorg to see if things still work correctly. I’m pretty sure that I know how to back things out piece by piece now.

With a Quadro M4000M at 3840x2160 on a Xeon E3-1505Mv5 I would naively expect to get more than 80 fps running glxspheres (about 650 Mpix/sec), which isn’t a whole lot faster than the P530 built into the CPU. But maybe that isn’t exactly the right way to look at it…

So I had no luck running OpenCL without the nvidia repo packages installed; it appeared that quite a few things were missing. Now about to try X server 1.19.

Also, nvidia-xsettings fails:

$ optirun nvidia-settings

ERROR: Error querying enabled displays on GPU 0 (Missing Extension).

ERROR: Error querying connected displays on GPU 0 (Missing Extension)

X server 1.19 yields considerably better performance (the Intel part gets markedly better performance) than 1.18; both drivers get about 110 fps/870 Mpix/sec with vblank_mode=0.

But still no luck with nvidia-settings.

Sorry about spamming, but…

It looks like nvidia-settings -c :8 does the trick. But I don’t really know what it’s doing with that “control server”.