Nvidia optimus is a technology that allows an Intel integrated GPU and discrete NVIDIA GPU to be built into and accessed by a laptop.
- 1 Available methods
- 2 Use Intel graphics only
- 3 Use NVIDIA graphics only
- 4 Troubleshooting
- 4.1 Tearing/Broken VSync
- 4.2 Failed to initialize the NVIDIA GPU at PCI:1:0:0 (GPU fallen off the bus / RmInitAdapter failed!)
- 4.3 Resolution, screen scan wrong. EDID errors in Xorg.log
- 4.4 Wrong resolution without EDID errors
- 4.5 Lockup issue (lspci hangs)
- 4.6 No screens found on a laptop/NVIDIA Optimus
- 5 Use switchable graphics
There are several methods available:
- #Use Intel graphics only - saves power, because NVIDIA GPU will be completely powered off.
- #Use NVIDIA graphics only - gives more performance than Intel graphics, but drains more battery (which is not welcome for mobile devices).
- Using both (use NVIDIA GPU when needed and keep it powered off to save power):
- #Using optimus-manager - switches graphics with a single command (logout and login required to take effect). It achieves maximum performance out of NVIDIA GPU and switches it off if not in use.
- #Using nvidia-xrun - run separate X session on different TTY with NVIDIA graphics. It achieves maximum performance out of NVIDIA GPU and switches it off if not in use.
- #Using Bumblebee - provides Windows-like functionality by allowing to run selected applications with NVIDIA graphics while using Intel graphics for everything else. Has significant performance issues and does not support Vulkan.
- #Using nouveau - offers poorer performance (compared to the proprietary NVIDIA driver) and may cause issues with sleep and hibernate. Does not work with latest NVIDIA GPUs.
Use Intel graphics only
If you only care to use a certain GPU without switching, check the options in your system's BIOS. There should be an option to disable one of the cards. Some laptops only allow disabling of the discrete card, or vice-versa, but it is worth checking if you only plan to use just one of the cards.
If your BIOS does not allow to disable Nvidia graphics, you can disable it from the Linux itself. See Hybrid graphics#Fully Power Down Discrete GPU.
Use NVIDIA graphics only
The proprietary NVIDIA driver does not support dynamic switching like the nouveau driver (meaning it can only use the NVIDIA device). It also has notable screen-tearing issues that NVIDIA recognizes but has not fixed, unless you are using x.org > 1.19 and enable prime sync, see . However, it does allow use of the discrete GPU and has (as of January 2017) a marked edge in performance over the nouveau driver.
$ lspci | egrep 'VGA|3D'
The PCI address is the first 7 characters of the line that mentions NVIDIA. It will look something like
01:00.0. In the
xorg.conf, you will need to format it as
#:#:# while converting hexadecimal numbers to decimal numbers; e.g.
01:00.0 would be formatted as
If X.Org X server version 1.17.2 or higher is installed ()
Section "Module" Load "modesetting" EndSection Section "Device" Identifier "nvidia" Driver "nvidia" BusID "PCI:<BusID for NVIDIA device here>" Option "AllowEmptyInitialConfiguration" EndSection
Next, add the following two lines to the beginning of your
xrandr --setprovideroutputsource modesetting NVIDIA-0 xrandr --auto
Now reboot to load the drivers, and X should start.
If your display dpi is not correct add the following line:
xrandr --dpi 96
If you get a black screen when starting X, make sure that there are no ampersands after the two
xrandr commands in
~/.xinitrc. If there are ampersands, it seems that the window manager can run before the
xrandr commands finish executing, leading to a black screen.
If you are using a display manager then you will need to create or edit a display setup script for your display manager instead of using
For the LightDM display manager:
#!/bin/sh xrandr --setprovideroutputsource modesetting NVIDIA-0 xrandr --auto
Make the script executable:
# chmod +x /etc/lightdm/display_setup.sh
Now configure lightdm to run the script by editing the
[Seat:*] section in
Now reboot and your display manager should start.
xrandr --setprovideroutputsource modesetting NVIDIA-0 xrandr --auto
For the GDM display manager create two new .desktop files:
[Desktop Entry] Type=Application Name=Optimus Exec=sh -c "xrandr --setprovideroutputsource modesetting NVIDIA-0; xrandr --auto" NoDisplay=true X-GNOME-Autostart-Phase=DisplayServer
Make sure that GDM use X as default backend.
You can check if the NVIDIA graphics are being used by installingand running
$ glxinfo | grep NVIDIA
For more information, look at NVIDIA's official page on the topic .
This requires DRM kernel mode setting, which will in turn enable the PRIME synchronization and fix the tearing.1.19 or higher, kernel 4.5 or higher, and 370.23 or higher. Then enable
You can read the official forum thread for details.
Failed to initialize the NVIDIA GPU at PCI:1:0:0 (GPU fallen off the bus / RmInitAdapter failed!)
Resolution, screen scan wrong. EDID errors in Xorg.log
This is due to the NVIDIA driver not detecting the EDID for the display. You need to manually specify the path to an EDID file or provide the same information in a similar way.
To provide the path to the EDID file edit the Device Section for the NVIDIA card in Xorg.conf, adding these lines and changing parts to reflect your own system:
Section "Device" Option "ConnectedMonitor" "CRT-0" Option "CustomEDID" "CRT-0:/sys/class/drm/card0-LVDS-1/edid" Option "IgnoreEDID" "false" Option "UseEDID" "true" EndSection
If Xorg wont start try swapping out all references of CRT to DFB. card0 is the identifier for the intel card to which the display is connected via LVDS. The edid binary is in this directory. If the hardware arrangement is different, the value for CustomEDID might vary but yet this has to be confirmed. The path will start in any case with /sys/class/drm.
Alternatively you can generate your edid with tools likeand point the driver to this file. Even modelines can be used, but then be sure to change "UseEDID" and "IgnoreEDID".
Wrong resolution without EDID errors
Using nvidia-xconfig, incorrect information might be generated in Xorg.conf and in particular wrong monitor refresh rates that restruct the possible resolutions. Try commenting out the
VertRefresh lines. If this helps, you can probably also remove everything else not mentioned in this article.
Lockup issue (lspci hangs)
Symptoms: lspci hangs, system suspend fails, shutdown hangs, optirun hangs.
Applies to: newer laptops with GTX 965M or alike when bbswitch (e.g. via Bumblebee) or nouveau is in use.
When the dGPU power resource is turned on, it may fail to do so and hang in ACPI code (kernel bug 156341).
For known model-specific workarounds, see this issue.
In other cases you can try to boot with
acpi_osi="!Windows 2015" or
acpi_osi=! acpi_osi="Windows 2009" added to your Kernel parameters. (Consider reporting your laptop to that issue.)
No screens found on a laptop/NVIDIA Optimus
$ lspci | grep VGA
outputs something similar to:
00:02.0 VGA compatible controller: Intel Corporation Core Processor Integrated Graphics Controller (rev 02) 01:00.0 VGA compatible controller: nVidia Corporation Device 0df4 (rev a1)
NVIDIA drivers now offer Optimus support since 319.12 Beta  with kernels above and including 3.9.
Use switchable graphics
Optimus-manager is one of the easiest solutions for graphics switching between Nvidia and Intel with a single command. Graphical systray applet is also available.
Install required NVIDIA driver and AUR. Optionally install for power saving and AUR for system tray applet.
Also start and enable
Use below commands to switch graphics:
$ optimus-manager --switch intel # Use Intel graphics $ optimus-manager --switch nvidia # Use NVIDIA graphics $ optimus-manager --switch auto # Switch to different graphics (from what is used now)
Also specify which graphics to use on boot:
$ optimus-manager --set-startup intel $ optimus-manager --set-startup nvidia
For more information and troubleshooting, see upstream documentation.