mirror of
https://pagure.io/fedora-docs/quick-docs.git
synced 2024-12-01 07:39:48 +00:00
551 lines
19 KiB
Text
551 lines
19 KiB
Text
= Bumblebee
|
||
|
||
'''
|
||
|
||
[IMPORTANT]
|
||
======
|
||
|
||
This page was automatically converted from https://fedoraproject.org/wiki/Bumblebee
|
||
|
||
It is probably
|
||
|
||
* Badly formatted
|
||
* Missing graphics and tables that do not convert well from mediawiki
|
||
* Out-of-date
|
||
* In need of other love
|
||
|
||
Pull requests accepted at https://pagure.io/fedora-docs/quick-docs
|
||
|
||
Once you've fixed this page, remove this notice, and update
|
||
`_topic_map.yml`.
|
||
|
||
Once the document is live, go to the original wiki page and replace its text
|
||
with the following macro:
|
||
|
||
....
|
||
{{#fedoradocs: https://docs.fedoraproject.org/whatever-the-of-this-new-page}}
|
||
....
|
||
|
||
======
|
||
|
||
'''
|
||
|
||
|
||
[[description]]
|
||
Description
|
||
~~~~~~~~~~~
|
||
|
||
Nvidia Optimus is an optimization technology created by Nvidia which,
|
||
depending on the resource load generated by client software
|
||
applications, will transparently and seamlessly switch between two
|
||
graphics adapters within a computer system in order to provide either
|
||
maximum performance or minimum power draw from the system's graphics
|
||
rendering hardware. From
|
||
https://github.com/Bumblebee-Project/Bumblebee/wiki/FAQ[Bumblebee's
|
||
FAQ]: Bumblebee is a effort to make Nvidia Optimus enabled laptops work
|
||
in GNU/Linux systems. Such feature involves two graphics cards with two
|
||
different power consumption profiles plugged in a layered way sharing a
|
||
single framebuffer.
|
||
|
||
The discrete GPU (NVidia) is turned off when not in use and activated
|
||
and turned on though ACPI calls when demanding OpenGL applications
|
||
require the extra power the discrete GPU can give. Demanding OpenGL
|
||
applications might include such things as 3D games or 3D rendering
|
||
software but would not include such things as a web browser or a video
|
||
playback program like mplayer or VLC.
|
||
|
||
[[how-can-you-tell-if-you-have-an-optimus-notebook-computer]]
|
||
How can you tell if you have an optimus notebook computer?
|
||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||
|
||
If you purchased a notebook with an NVidia sticker on it, you _might_
|
||
have a optimus computer. If you don’t have an optimus technology
|
||
computer nothing in this documentation is relevant to your PC. (Optimus
|
||
was slated at one point to go in desktop PCs but the industry ended up
|
||
rejecting that concept…)
|
||
|
||
To tell, after you have installed the OS, open a terminal window and
|
||
type:
|
||
|
||
....
|
||
$ lspci | grep 'VGA\|3D'
|
||
....
|
||
|
||
If you see two video cards in the output like:
|
||
|
||
....
|
||
$ lspci | grep 'VGA\|3D'
|
||
00:02.0 VGA compatible controller: Intel Corporation HD Graphics 530 (rev 06)
|
||
02:00.0 3D controller: NVIDIA Corporation GM108M [GeForce 940MX] (rev a2)
|
||
....
|
||
|
||
And one is a Intel “Integrated Graphics Controller” and the other is a
|
||
“NVIDIA Corporation” chip, then you probably have an optimus notebook.
|
||
|
||
To further verify, if you have the two VGA devices with one as Intel
|
||
Integrated and other as NVIDIA, as root look for the
|
||
/sys/kernel/debug/vgaswitcheroo/switch file. If it exists, then you have
|
||
an optimus PC. If its missing, then you might not. (It might be that you
|
||
have a card that nouveau can’t use yet because it is too new…)
|
||
|
||
[[before-you-get-started]]
|
||
Before you get started
|
||
~~~~~~~~~~~~~~~~~~~~~~
|
||
|
||
Most users will want to turn off “Secure boot” in the bios or UEFI
|
||
screen when you need nvidia drivers or bbswitch-dkms. If you want to
|
||
make your own public / private keys for kernel module signing you can
|
||
look
|
||
https://docs.fedoraproject.org/en-US/Fedora/22/html/System_Administrators_Guide/sect-signing-kernel-module-with-the-private-key.html[here]
|
||
or
|
||
https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/System_Administrators_Guide/sect-signing-kernel-modules-for-secure-boot.html[here]
|
||
for more information on the subject. If you end up doing that and use
|
||
the closed source NVidia driver, you will need to edit the
|
||
/etc/bumblebee/bumblebee-nvidia-sign.conf file.
|
||
|
||
Next, do a dnf update before you begin. And just to be safe, reboot your
|
||
PC so that you are booted into the newest kernel. The reason for this is
|
||
that you want the kernel-devel package to match the kernel you are
|
||
running under. If you don’t reboot after a dnf update these versions may
|
||
differ which will cause compiling problems.
|
||
|
||
[[installation]]
|
||
Installation
|
||
~~~~~~~~~~~~
|
||
|
||
[[for-free-or-open-source-solution]]
|
||
For free or open source solution
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
Some users http://www.kroah.com/log/linux/stable_api_nonsense.html[feel
|
||
strongly] that they should not use closed source kernel modules. This is
|
||
understandable. In all cases,
|
||
http://nouveau.freedesktop.org/wiki/Optimus/[PRIME] will work better
|
||
then using bumblebee.
|
||
|
||
In fact, you can no longer use the bumblebee software with nouveau any
|
||
longer even if you want to. See
|
||
https://github.com/Bumblebee-Project/Bumblebee/issues/773[issue 773] for
|
||
further information about this subject. You *MUST USE PRIME*. The
|
||
nouveau driver already handles power saving nowadays so bumblebee would
|
||
just be superfluous…
|
||
|
||
[[for-closed-source-solution]]
|
||
For closed source solution
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
Do not use the NVidia video drivers from *http://rpmfusion.org/*,
|
||
*http://negativo17.org/*. I’m sure they are fine drivers and I am not
|
||
trying to criticize them at all. But they *DO NOT support or work* with
|
||
bumblebee without modifications. I have created a pair of drivers
|
||
packages you may use that require no modifications to work. There is a
|
||
managed version which contains a reasonably recent “long lived branch”
|
||
driver blob. There is also a unmanaged repo which contains an empty
|
||
drivers package. The unmanaged version requires you to download a “blob”
|
||
from http://www.nvidia.com/object/unix.html[here] and then copy the file
|
||
manually to the /etc/sysconfig/nvidia/ directory as root. You might need
|
||
the “unmanaged” version if your laptop requires a “legacy” driver
|
||
version or if you need the “short lived branch” driver for some reason.
|
||
Do not install both the managed and unmanaged repos. You should pick one
|
||
or the other depending on your needs. If you are unsure which to use,
|
||
use the managed repo.
|
||
|
||
*Special note concerning versions 355.11-375.10:*
|
||
|
||
There is a bug which prevents certain versions from working with the
|
||
unmanaged version of the bumblebee-nvidia shell script wrapper. I have
|
||
opened a discussion thread
|
||
https://devtalk.nvidia.com/default/topic/885657/linux/can-t-install-driver-to-work-with-bumblebee-with-version-355-11/[here]
|
||
concerning this problem. See also
|
||
https://github.com/NVIDIA/nvidia-installer/issues/1[this issue] on
|
||
github.com. If you use a version older then 355.11 or newer then 375.10
|
||
you should be ok. If you need one in between those you’ll have to patch
|
||
and compile the nvidia-installer program yourself to get it to work.
|
||
You’d need to disable the symlink check and the runtime check within the
|
||
c code which is what we did for a while there with the “managed”
|
||
version.
|
||
|
||
[[for-closed-source-solution-fedora]]
|
||
For closed source solution fedora
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
Add bumblebee repo:
|
||
|
||
....
|
||
# dnf -y --nogpgcheck install http://install.linux.ncsu.edu/pub/yum/itecs/public/bumblebee/fedora$(rpm -E %fedora)/noarch/bumblebee-release-1.2-1.noarch.rpm
|
||
....
|
||
|
||
Managed NVidia repo:
|
||
|
||
....
|
||
# dnf -y --nogpgcheck install http://install.linux.ncsu.edu/pub/yum/itecs/public/bumblebee-nonfree/fedora$(rpm -E %fedora)/noarch/bumblebee-nonfree-release-1.2-1.noarch.rpm
|
||
....
|
||
|
||
or Unmanaged NVidia repo:
|
||
|
||
....
|
||
# dnf -y --nogpgcheck install http://install.linux.ncsu.edu/pub/yum/itecs/public/bumblebee-nonfree-unmanaged/fedora$(rpm -E %fedora)/noarch/bumblebee-nonfree-unmanaged-release-1.2-1.noarch.rpm
|
||
....
|
||
|
||
'''Remember, you do not want to install both the managed and unmanaged
|
||
repos. Pick one or the other but not both! '''
|
||
|
||
No multilib fedora 23+:
|
||
|
||
....
|
||
# dnf install bumblebee-nvidia bbswitch-dkms primus kernel-devel
|
||
....
|
||
|
||
Multilib on a 64 bit install fedora 23+: (You may need to add additional
|
||
32 bit packages to get your 32 bit applications to work with
|
||
bumblebee/primus)
|
||
|
||
....
|
||
# dnf install bumblebee-nvidia bbswitch-dkms VirtualGL.x86_64 VirtualGL.i686 primus.x86_64 primus.i686 kernel-devel
|
||
....
|
||
|
||
You will need to reboot before you can test if its working. *If you used
|
||
the “unmanaged” repo don’t forget to copy the NVidia “blob” to
|
||
/etc/sysconfig/nvidia/ before you reboot!* Most folks will want the
|
||
“managed” version rather then the “unmanaged” version.
|
||
|
||
[[using-bumblebee-software]]
|
||
Using bumblebee software
|
||
~~~~~~~~~~~~~~~~~~~~~~~~
|
||
|
||
*General usage*
|
||
|
||
....
|
||
$ optirun [options] application [application-parameters]
|
||
....
|
||
|
||
For example, start a Windows applications with optimus named
|
||
application.exe:
|
||
|
||
....
|
||
$ optirun wine application.exe
|
||
....
|
||
|
||
For another example, open NVidia settings panel with optimus:
|
||
|
||
....
|
||
$ optirun -b none nvidia-settings -c :8
|
||
....
|
||
|
||
For another example, open the java based Minecraft with primus bridge:
|
||
|
||
....
|
||
$ optirun -b primus java -jar /PATH/TO/Minecraft.jar
|
||
....
|
||
|
||
For a list of the options for optirun, view its manual page:
|
||
|
||
....
|
||
$ man optirun
|
||
....
|
||
|
||
In general, using the primus bridge gives better performance then using
|
||
the default VirtualGL bridge. In bumblebee 4.0 (coming soon) primus will
|
||
become the default bridge and VirtuaGL will need to be called explicitly
|
||
if you still want it. Also beginning with bumblebee 4.0 (coming soon)
|
||
the VirtuaGL dependency will be replaced with a primus dependency
|
||
instead. So you might not even have VirtuaGL installed by default in the
|
||
future.
|
||
|
||
For primus, there is a separate shell script you can use to invoke it
|
||
called “primusrun.”
|
||
|
||
For a list of the options for primusrun, view its manual page:
|
||
|
||
....
|
||
$ man primusrun
|
||
....
|
||
|
||
....
|
||
$ primusrun java -jar /PATH/TO/Minecraft.jar
|
||
....
|
||
|
||
and
|
||
|
||
....
|
||
$ optirun -b primus java -jar /PATH/TO/Minecraft.jar
|
||
....
|
||
|
||
are functionally equivalent commands.
|
||
|
||
It may become tedious to always use the optirun program in a terminal to
|
||
launch 3D games or other 3D opengl applications. You may wish to create
|
||
desktop launchers which use the optirun or primusrun commands in order
|
||
to streamline this process.
|
||
|
||
For example, in MATE desktop environment, when you right click on an
|
||
empty space in the desktop a popup menu is displayed. One option on this
|
||
menu is “Create launcher..” which allows you to create a graphical
|
||
launcher icon for your apps which can be left on the desktop or moved
|
||
into some folder. Other desktop environments also offer this
|
||
functionality though the methods differ from desktop to desktop.
|
||
|
||
[[multi-monitor-setup-with-closed-driver]]
|
||
Multi monitor setup with closed driver
|
||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||
|
||
Optimus laptops have two video chips: an integrated Intel and a discrete
|
||
NVidia one. If the port (DisplayPort / HDMI / VGA) is wired to the Intel
|
||
chip, you do not need to do anything special to get external monitors to
|
||
work.
|
||
|
||
When the external port is wired into the NVidia chip, you cannot
|
||
currently expand the screen over monitors without extra effort. Read on
|
||
if you fall into this category…
|
||
|
||
Install the intel-gpu-tools package.
|
||
|
||
....
|
||
# dnf install intel-gpu-tools
|
||
....
|
||
|
||
Running ‘intel-virtual-output’ (from the intel-gpu-tools rpm) without
|
||
any extra parameters will daemonize itself and detect attached displays
|
||
in the background. It will then perform all the trickery of virtualizing
|
||
and cloning so that the newly attached screen can be used via
|
||
conventional screen management methods, such as cloning/extending with
|
||
xrandr.
|
||
|
||
For example, if your laptop’s display is called eDP1, and your using a
|
||
external adapter called HDMI1, and you wanted the display to be
|
||
1920×1080 resolution, you could run the following commands:
|
||
|
||
To have your HDMI screen to the right of your desktop, run:
|
||
|
||
....
|
||
$ xrandr –output eDP1 –mode 1920×1080 –output HDMI1 –mode 1920×1080 –right-of eDP1
|
||
....
|
||
|
||
To clone your desktop, run:
|
||
|
||
....
|
||
$ xrandr –output eDP1 –mode 1920×1080 –output HDMI1 –mode 1920×1080 –same-as eDP1
|
||
....
|
||
|
||
There are many different possibilities. Type xrandr with no arguments to
|
||
see what displays you have attached. See
|
||
https://github.com/Bumblebee-Project/Bumblebee/wiki/Multi-monitor-setup[this
|
||
web page] for further information on this subject. Read the manual page
|
||
for xrandr for even more information on the possibilities this command
|
||
provides.
|
||
|
||
If intel-virtual-output works ok running by hand you could add it to
|
||
your startup automatically if you desire. One way would be to create a
|
||
/etc/rc.d/rc.local script and add it into there. Another way might be to
|
||
create a systemd unit file as Type=oneshot. A third way might be to run
|
||
it at login using whatever mechanism your desktop environment supports
|
||
for doing such things. For example, in MATE desktop environment, there
|
||
is a mate-session-properties program (System -> Preferences -> Personal
|
||
-> Startup Applications) that you can run programs from when you login.
|
||
Most desktop environments offer similar functionality though the methods
|
||
differ from desktop to desktop.
|
||
|
||
[[troubleshooting]]
|
||
Troubleshooting
|
||
~~~~~~~~~~~~~~~
|
||
|
||
When you are using the closed source NVidia drivers, there is a checking
|
||
system you can run. To test, type this command:
|
||
|
||
....
|
||
$ bumblebee-nvidia --check
|
||
....
|
||
|
||
This will tell you if the NVidia driver and bbswitch-dkms compiled into
|
||
the current kernel ok. It works with both the managed and unmanaged
|
||
driver packages.
|
||
|
||
Some other errors you may encounter form the output from
|
||
bumblebee-nvidia –check
|
||
|
||
....
|
||
Error: Too many NVidia blobs in /etc/sysconfig/nvidia/
|
||
Blob count = 2.
|
||
....
|
||
|
||
This means that there are too many NVidia “blobs” in
|
||
/etc/sysconfig/nvidia/ and the solution is to delete one of them.
|
||
|
||
....
|
||
Error: No Nvidia blob in /etc/sysconfig/nvidia/
|
||
....
|
||
|
||
This means there is no blob in /etc/sysconfig/nvidia/ and you should
|
||
copy one there if using the unmanaged repo or re-install
|
||
bumblebee-nvidia if using the managed repo. (dnf reinstall
|
||
bumblebee-nvidia)
|
||
|
||
If the module did not compile, you can run:
|
||
|
||
....
|
||
# bumblebee-nvidia --debug
|
||
....
|
||
|
||
as root or via sudo. This may give you clues as to why the nvidia
|
||
installer was unable to work.
|
||
|
||
Type
|
||
|
||
....
|
||
$ bumblebee-nvidia --help
|
||
....
|
||
|
||
to see a full list of options the wrapper script provides.
|
||
|
||
If you see this error:
|
||
|
||
....
|
||
[ERROR]You've no permission to communicate with the Bumblebee daemon. Try adding yourself to the 'bumblebee' group
|
||
[ERROR]Could not connect to bumblebee daemon - is it running?
|
||
....
|
||
|
||
It could be caused by adding another user account to your notebook after
|
||
you have already installed the various bumblebee packages. The solution
|
||
is to run:
|
||
|
||
....
|
||
# usermod -a -G bumblebee USERNAME
|
||
....
|
||
|
||
where *USERNAME* is your account name to add to the bumblebee group. You
|
||
MUST be in the bumblebee group for primusrun or optirun to work.
|
||
|
||
*Primusrun mouse delay/disable VSYNC*
|
||
|
||
For primusrun, VSYNC is enabled by default and as a result, it could
|
||
make mouse input delay lag or even slightly decrease performance. Test
|
||
primusrun without VSYNC:
|
||
|
||
....
|
||
$ vblank_mode=0 primusrun glxgears
|
||
....
|
||
|
||
*Primus issues under compositing window managers*
|
||
|
||
Since compositing hurts performance, invoking primus when a compositing
|
||
WM is active is
|
||
https://github.com/amonakov/primus#issues-under-compositing-wms[not
|
||
recommended]. If you need to use primus with compositing and see
|
||
flickering or bad performance, synchronizing primus’ display thread with
|
||
the application’s rendering thread may help:
|
||
|
||
....
|
||
$ PRIMUS_SYNC=1 primusrun ...
|
||
....
|
||
|
||
*optirun crashes after you boot into “Troubleshooting -> Start Fedora
|
||
Live in basic graphics mode” and do an install that way.*
|
||
|
||
If you did an install under “Troubleshooting -> Start Fedora Live in
|
||
basic graphics mode.” bumblebee will not work. You can tell by examining
|
||
the /var/log/Xorg.8.log log file and looking for Kernel command line:
|
||
and seeing nomodeset on that line. When you use “Start Fedora Live in
|
||
basic graphics mode.” it adds “nomodeset” to your kernel command line
|
||
which will cause your machine to use the VESA driver and make bumblebee
|
||
not work. (It will just crash when you try) To fix that, edit
|
||
/etc/default/grub and on the GRUB_CMDLINE_LINUX= line, remove the word
|
||
nomodeset and then save the file, next, either run
|
||
|
||
....
|
||
# grub2-mkconfig -o /boot/grub2/grub.cfg
|
||
....
|
||
|
||
on a BIOS based notebook or
|
||
|
||
....
|
||
# grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg
|
||
....
|
||
|
||
on a UEFI based notebook. Then reboot. After that
|
||
bumblebee/optirun/primusrun should start working.
|
||
|
||
[[compatibility-with-recent-laptops-that-have-american-megatrend-bioses]]
|
||
Compatibility with recent laptops that have American Megatrend BIOSes
|
||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||
|
||
Some recent laptop models featuring AMI bioses have some compatibility
|
||
issues with bbswitch and Optimus, making them unable to load into
|
||
graphics mode and crashing every time it is attempted, as discussed in
|
||
further details in this post on the Bumblebee's github:
|
||
https://github.com/Bumblebee-Project/Bumblebee/issues/764#issuecomment-234494238
|
||
.
|
||
|
||
If you are trying to use Linux on a recent Optimus laptop and it crashes
|
||
every time you try to enter a graphics environment, please try adding
|
||
the following parameters to your boot loader (Fedora users usually have
|
||
GRUB installed):
|
||
|
||
....
|
||
acpi_osi=! acpi_osi='Windows 2009'
|
||
....
|
||
|
||
This seems to work on most laptop models facing this issue, but bear in
|
||
mind that this workaround has not been tested in every laptop model ever
|
||
made – so your mileage may vary. If the problems persist, you could try
|
||
updating your BIOS or look for more info in the Bumblebee documentation
|
||
and their community.
|
||
|
||
[[broken-power-management-with-kernel-4.8]]
|
||
Broken power management with kernel 4.8
|
||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||
|
||
If you have a newer laptop (BIOS date 2015 or newer), then Linux 4.8
|
||
might break bbswitch since bbswitch does not support the newer,
|
||
recommended power management method. As a result, the dGPU may fail to
|
||
power on, fail to power off or worse.
|
||
|
||
See https://github.com/Bumblebee-Project/bbswitch/issues/140[Issue 140]
|
||
for further information about this problem.
|
||
|
||
As a workaround, add pcie_port_pm=off to your kernel parameters.
|
||
|
||
Alternatively, if you are only interested in power saving (and perhaps
|
||
use of external monitors), remove bumblebee / bbswitch and rely on
|
||
Nouveau runtime power-management (which supports the new method).
|
||
|
||
[[mesa-13.0.3-6-and-libglvnd-issues]]
|
||
mesa-13.0.3-6 and libglvnd issues
|
||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||
|
||
In fedora 25 and 26 a new library called libglvnd was added which
|
||
initially caused some issues.
|
||
|
||
primus-1.1.03282015-4 and newer, bumblebee-3.2.1-13 and newer, and
|
||
(managed version) bumblebee-nvidia-375.26-2 and newer, and (un-managed
|
||
version) bumblebee-nvidia-3.0-2 and newer will work with the newer mesa
|
||
and new libglvnd library.
|
||
|
||
When you first upgrade to mesa-13.0.3-6 or newer bumblebee-nvidia
|
||
doesn't know that it needs to rebuild the shim. So you can force that by
|
||
running the command:
|
||
|
||
....
|
||
bumblebee-nvidia --force
|
||
....
|
||
|
||
via `su` as root or via `sudo`. And the primus bridge should work after
|
||
that. You can track this issue upstream
|
||
https://github.com/amonakov/primus/issues/193[here].
|
||
|
||
[[useful-links]]
|
||
Useful links
|
||
~~~~~~~~~~~~
|
||
|
||
* http://bumblebee-project.org/
|
||
* https://github.com/Bumblebee-Project/Bumblebee/wiki
|
||
* https://github.com/Bumblebee-Project/Bumblebee/
|
||
* https://github.com/Bumblebee-Project/bbswitch
|
||
* https://github.com/amonakov/primus
|
||
* https://www.linux.ncsu.edu/bumblebee/
|
||
|
||
http://www.thelinuxrain.com/articles/the-state-of-nvidia-optimus-on-linux[The
|
||
State of NVIDIA Optimus on Linux]
|
||
'''
|
||
|
||
See a typo, something missing or out of date, or anything else which can be
|
||
improved? Edit this document at https://pagure.io/fedora-docs/quick-docs.
|