I am considering buying a Dell XPS 15 laptop. The laptop has a Nvidia 420m card which should work with Linux but I keep reading that the Nvidia Optimus technology isn't supported on Linux. I am not really interested in switching from Nvidia to Intel to save power but need to know that the Nvidia card will in fact work if I installed Ubuntu.
If anyone has experience using a Nvidia card with Optimus technology or even better the exact laptop in question (Dell XPS 15 with 1GB NVIDIA® GeForce® GT 420M) it would be great.
A major problem holding people back from adopting Linux is this sort of hardware issue. I am a long term Ubuntu user and supporter who can't afford to make a mistake with a purchase like this. I don't want to spend £500+ to find I have no graphics acceleration because Windows 7 is not an option.
Even if the Supported Products tab on the driver download page says that GT420M is supported, the Optimus variants are not supported. From the Additional Information tab:
This Optimus design means that the discrete Nvidia card is wired into the integrated Intel GPU and that it's not connected to a monitor at all. Some hybrid graphics laptops still allow you to choose the Nvidia card in BIOS, but most modern Optimus laptops don't have this option.
I am speaking from experience, I have a GT425M combined with an i5-460M processor. If there is no BIOS or hardware setting for switching / disabling the card, you're throwing away your money. The XPS 15 family does not appear to have any of these features. Although you are able to use the Intel graphics card, you may want to use the Nvidia card as well because you've paid for it which is not directly possible at the moment.
You'd better look for another laptop without Optimus. Optimus is crap and Nvidia refuses to provide better support for Linux. If you are adventurous and buy such a notebook, visit the Linux Hybrid Graphics blog and subscribe to its Launchpad mailing list. Visit their wiki for various ways to get such a card (hopefully) working. One method is called Bumblebee which allows you to render programs on your nvidia card. I currently recommend it over other solutions (disclosure: I'm a developer of it).
Ubuntu 12.10 Quantal will be shipped with the first bits for real support for hybrid graphics laptops, called PRIME. This is highly experimental and in development and probably not stable enough for many people. Only the open-source graphics drivers support this, though Nvidia may release support in the future too if it is not too much work for them. This page tracks hybrid graphics support for Quantal, these are the blueprints for Raring.
If you've installed the driver from nvidia.com
You've made a huge mistake by installing the drivers directly from nvidia.com. If you want to have newer drivers, add the
ubuntu-x-swat/x-updates
PPA because these will install the nvidia drivers in such a way that your Optimus system does not die.After installing the nvidia driver from nvidia.com, you may experience loss of all graphics effects, black screen or very slow graphics performance. Uninstallation instructions:
netroot
.Uninstall nvidia:
Remove the configuration file generated by nvidia if any:
Reinstall the Mesa package for GL:
When done, reboot with:
Installation instructions for Bumblebee
If you have installed Bumblebee or Ironhide before, be sure to check the instructions on http://wiki.bumblebee-project.org/Upgrading-on-Ubuntu
Since Bumblebee version 3.0 "Tumbleweed", it can disable the Nvidia card in a safe way to save power (press release). You can also run programs using the discrete card for better performance. Installation instructions:
Enable the Universe and multiverse repository for the Nvidia driver. 1.(optional for 13.10 Saucy) Add a PPA containing recent drivers as the one in the repositories is possibly outdated:
(for 13.04 Raring and earlier, not needed for Saucy and later) Add the Stable Bumblebee Releases PPA:
Install Bumblebee using the proprietary Nvidia driver:
If you'd like to run a program on the nvidia card now, use the
optirun
program:If you are only interested in power savings, replace the last command in step 4 by:
At a later time, you can still use NVIDIA by installing
bumblebee-nvidia
. If you want to use a 32-bit program, you can still install the required libraries withsudo apt-get install virtualgl-libs-ia32
. You have to add linux-headers-generic, otherwise the power saving modulebbswitch
cannot be built.Instead of virtualgl, you can also try
primus
to achieve better performance. The package name isprimus
and you can use:(note: before asking about a 60 fps limit, please read its FAQ.)
See also https://wiki.ubuntu.com/Bumblebee
Notes:
acpi_call
manually is deprecated. By default, it won't survive suspend.ppa:mj-casalogic/bumblebee
or the MrMEEE/bumblebee-Old-and-abandoned git, it's not maintained anymore and contains a lot of errors.If you do not want to use the nvidia card nor Bumblebee
If you've accidentally installed the nvidia driver (i.e. using the jockey), you've two choices:
nvidia-current
)Update as of Ubuntu 12.10:
All the pieces of the graphics stack required to support hybrid graphics made it into 12.10; the Quantal Quetzal has the infrastructure to support for hybrid graphics - both to extend the display when the external monitors can only be driven by the discrete chip, and to run applications on the discrete chip and display them on the integrated GPU.
There are two caveats, though, one large, one minor.
The minor caveat is that there's no GUI support - there's no obvious way to run an application on the discrete GPU. You can do this by setting the
DRI_PRIME=1
environment variable before starting an application.The major caveat is that this only applies to the free drivers -
nouveau
,radeon
, andintel
. Nvidia has now expressed interest in supporting hybrid graphics on linux, but thedma-buf
kernel symbols they need to use are marked as GPL, which they won't use.Additionally the hybrid support has seen only light testing, and there are still pieces that remain to be implemented, like synchronisation across GPUs to prevent tearing.
Status as of Ubuntu 12.04 LTS:
nVidia's official position is that they have no plans to support Optimus on Linux - our graphics stack is engineered with an assumption that only one card is driving a given display, and it's not easy to work around.
Dave Airlie has done a lot of work untangling this in the X server and kernel, and that'll likely be rebased on the
drm-buf
work that's primarily come out of the ARM world via Linaro. Once this is all up and running - which seems to be 6 months to a year away - it'll be possible to do hybrid graphics correctly. At that point nVidia might reconsider supporting Optimus on Linux, as it will no longer be a huge technical mess to implement¹.In terms of supporting hybrid graphics now, the Bumblebee project does something along those lines. It essentially runs a second X server on the nVidia card and copies across the output of the rendering. This is not as bad as it might sound - that's basically what the nVidia card does under Windows 7, too, just with a little bit of hardware support.
The Ubuntu X team does not plan to support Bumblebee or Ironhide (a fork of Bumblebee).
If your system has a BIOS option to switch between the Intel and nVidia cards then you can chose between them.
If your system has a hardware mux - so both the nVidia and Intel GPUs are connected to the outputs - and vga_swicheroo works, you can use that interface to switch between them, but only if you're using the open-source drivers. For 12.04 we plan to ensure that the unused GPU is turned off in this case, which should improve battery life.
If your system doesn't have a BIOS option and doesn't have a hardware mux that vga_switcheroo knows how to drive then your nVidia card will not be usable on 12.04.
¹: AMD's
fglrx
driver has some support for hybrid graphics. It appears to do this by pretending to be an X server and loading the Intel driver itself. This is not a clean solution ☺.Your laptop is nvidia - optimus enabled. Its a dual graphics configuration to save power. Presently nvidia doesn't provide any support for this technology in linux. So in linux both graphics card are on which lead to high battery consumption and overheat. For more detail read the links listed below.
In optimus tech, the intel graphics is always on. When you use GT540M, images generated by GT540M actully transported through intel grphics card.
options available in linux
Turn off nvidia GT540M and use intel only. Use Nvidia card with special command only when required.
Also never install nvidia-drivers alone.
Instruction for installing Bumblebee to turn off discrete GPU and enable only when required
Type the following in terminal,
then
To install Bumblebee using the proprietary nvidia driver:
Reboot.
If you just want to disable nvidia card, no need to learn followings
Usage Instruction :
To run a program with nvidia card, use
optirun
command prefixed in terminal. Like to runglxspheres
with nvidia card type. However a gui method also exist.To run firefox type:
Note: If you intend to run 32-bit programs like Wine and using Ubuntu 11.10 Oneiric or later, install 32-bit libraries with:
Linked Questions:
Can't use nvidia card/driver on optimus notebook
NVIDIA Optimus is not supported in any way on present unix platforms.
This is specifically for any laptop (mobile) NVIDIA based system that says OPTIMUS in its specifications list. You will not be able to even use the NVIDIA graphics in your Ubuntu. You will need to work with the integrated Intel Graphics drivers (to the extent they are supported for your platform -- Sandy Bridge support is still weak).
It should be noted that Optimus is different from the older ability to switch between the integrated (usually Intel) and discrete (NVIDIA, ATI) graphics systems. With Optimus, the integrated graphics path is always in use and lets you (additionally) enable the discrete graphics when required -- this needs Windows 7 at the moment (afaik, won't work on Vista either).
Here are a few references to get up to speed on this.
Posted by Michael Larabel on April 25, 2011
hint: I use a XPS 15 L502x with the 525M Optimus discrete graphics.
Update: This is a quote from the NVIDIA Drivers 270.06 page in the
Additional Information
tab.Now you know what to look for in your new NVIDIA based laptop specs if you want to drive the NVIDIA from linux.
Update: Look at the Bumblebee-Project.
Start from the
README
there.Currently there is Bumblebee to support nVidia Optimus.
I have a Dell Latitude E6520 with Intel Core i5 (with built-in Intel graphics) and an nVidia 420M graphics card. You can run a program with
optirun
(typeoptirun programname
in a terminal to startprogramname
) and then it will be able to use the nVidia graphics.I haven't tried it with CUDA programs.
Nvidia drivers won't work because Dell does not have a BIOS option to select a graphics card. Try a stable release of bumblebee. It worked for me yesterday on a Dell l502x (525M card) and I verified after rebooting multiple times. By default Intel would be used but you can run applications using NVIDIA by command optirun then. Also you will have to restart bumblebee after booting.
I think NVidia Optimus works just fine with Ironhide on both 11.10 and 11.04. I think any advice to not purchase an Optimus laptop is pedantic and overbearing. Who needs to run a graphics monster on a Linux laptop 24x7? The intel GPU is much better on power and as far as I can tell, Ironhide does not run the NVidia GPU until you invoke Optirun. I am very happy with my Optimus laptop.
The lack of proper support for external monitors (I cant get 1080i resolution) is a SandyBridge Intel HD3000 issue which I trust will be sorted in later releases. This issue has nothing to do with Optimus and will be present on all Intel HD3000 laptops.
This guide is for Dell XPS17 L702x laptops and Oneiric, but I believe it should work for most Optimus laptops.
Be sure to remove all NVidia drivers before following the links above, and the best of luck!
The bumblebee solution allows you to run both the integrated card and the discrete nvidia optimus card at the same time. Then acpi_call and byo-switcheroo provide different mechanisms for switching on/off the discrete graphics card, depending on your specific laptop model. Things are relatively better supported now than they were in the past, have a look at: http://launchpad.net/~hybrid-graphics-linux
If you are a long term Linux user you should understand that hardware compatibility relies on hardware manufacturers. We must give Linux/kernel community some time to adopt this new technology. At the end what we usually have is really competitive CPU management in Linux compared to any other OS. But it takes time.
Be patient my friend.
For anyone, that has or is gonna buy a Laptop with Nvidia Optimus, like I did:
As of this date, it works perfectly. I followed the steps pointed out by Lekensteyn's answer on a Packard Bell EasyNote TS Laptop, with an Intel HD3000 and Geforce GT 540M (1GB) and can use both graphic devices now under Ubuntu 12.04.
The only thing I had to do first was, to change into the BIOS to use only the integrated Intel graphics (I had to reinstall like that, as my first try ended to have no suitable driver choicen on reboot and a messed up videomode). With both activated, compiz/3D would not have been active before/after Ubuntu install. With only the integrated graphics activated in the BIOS, 3D with Intel graphics was completely active from the install screen already.
This would have given me the choice, to use Bumblebee for just powersaving without ever installing any Nvidia driver.
Finally, I activated both graphics in the BIOS and installed Bumblebee and the bumblebee-nvidia package and it works like a charm. By using "glxgears -info" and "optirun glxgears -info" I can confirm, it runs either with the Intel or the Nvidia graphics. I actually like the usage of "optirun" even better than the automatic switch under Win7, because I can decide now, if I want to use better graphics or not to safe battery.