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.

Some designs incorporating supported GPUs may not be compatible with the Nvidia Linux driver: in particular, notebook and all-in-one desktop designs with switchable (hybrid) or Optimus graphics will not work if means to disable the integrated graphics in hardware are not available.

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).

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:

Boot into recovery mode by holding Shift before booting and choosing for the recovery option

In the following menu, choose for netroot.

Uninstall nvidia:

nvidia-uninstall

Remove the configuration file generated by nvidia if any:

rm /etc/X11/xorg.conf

Reinstall the Mesa package for GL:

apt-get --reinstall install libgl1-mesa-glx

When done, reboot with:

reboot

Installation instructions for Bumblebee

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:

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 with sudo apt-get install virtualgl-libs-ia32. You have to add linux-headers-generic, otherwise the power saving module bbswitch cannot be built.

Instead of virtualgl, you can also try primus to achieve better performance. The package name is primus and you can use:

Using acpi_call manually is deprecated. By default, it won't survive suspend.

Do not use ppa:mj-casalogic/bumblebee or the MrMEEE/bumblebee-Old-and-abandoned git, it's not maintained anymore and contains a lot of errors.

Martin Juhl forked the original Bumblebee to Ironhide, but in my opinion it should not be used because the design flaws from the original Bumblebee are still present and the "power management" features are not stable (the wrong methods, _ON and _OFF, are used). Installation is still a mess, your installation may be broken after removing it.

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:

@JorgeCastro Bumblebee is only necessary if you want to use the nvidia card. If you don't install the nvidia driver, the Intel card will function fine.
–
LekensteynOct 22 '11 at 15:58

2

@JorgeCastro That's correct, no further action is necessary to have a working graphical desktop. Just tell people not to install the nvidia driver. If they already did, they should remove it.
–
LekensteynOct 22 '11 at 16:21

What about energy consumption? Isn't Bumblebee able to switch off the inactive (Nvidia) GPU? AFAIK it will still be active and suck power if you go the "just ignore Jockey" route (which at least will enable people to work with their systems, so that's not too bad :)).
–
htorqueOct 22 '11 at 16:35

1

@htorque Bumblebee is able to turn cards on/off, but that's an experimental feature which requires that you know the working calls. If you've twitter, follow me (Lekensteyn) or Team_Bumblebee to be notified when Bumblebee finally has an automated way to detect the right calls.
–
LekensteynOct 22 '11 at 17:12

1

@htorque With Bumblebee 3.0, the card can now be disabled using bbswitch.
–
LekensteynJan 20 '12 at 9:51

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, and intel. Nvidia has now expressed interest in supporting hybrid graphics on linux, but the dma-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 ☺.

I think that a year for PRIME (Dave's work) is still optimistic and two years is more realistic. Technologies like Optimus are full software solutions, the hardware does not provide support, not even under Windows 7. While Bumblebee is not a perfect solution, version 3.0 adds power saving by default. More about that in askubuntu.com/a/36936/6969
–
LekensteynJan 22 '12 at 22:34

2

Optimus isn't a full-software solution; the nVidia GPU has some hardware to help (what the nouveau project calls the PCOPY engine), although that's just a performance optimisation. I, obviously, don't think that a year is too unlikely for PRIME. Optimus isn't actually much more sophisticated than copying from VRAM. It's mainly the design of the X server that's made it hard.
–
RAOFJan 22 '12 at 23:01

1

That slipped out of my mind. My point was that the switching functionality is fully implemented in software and that the hardware does not help at that ("muxless")
–
LekensteynJan 22 '12 at 23:25

Right. That's totally true. My point was a bit of a nitpick; the hardware is purely an optimisation.
–
RAOFJan 22 '12 at 23:55

1

Thanks for your update for 12.10, RAOF, but can you elaborate on the latest Ubuntu's support a bit? I'm using Nvidia Optimus and I'm not seeing, for example, anything to access a DVI port that's attached to the Nvidia chipset.
–
KenJan 21 '13 at 21:52

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,

sudo add-apt-repository ppa:bumblebee/stable

then

sudo apt-get update

To install Bumblebee using the proprietary nvidia driver:

sudo apt-get install bumblebee bumblebee-nvidia linux-headers-generic

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 run glxspheres with nvidia card type. However a gui method also exist

optirun glxspheres

To run firefox type : optirun firefox &

Note: If you intend to run 32-bit programs like Wine and using Ubuntu 11.10 Oneiric or later, install 32-bit libraries with:

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).

Some designs incorporating supported GPUs may not be compatible with the NVIDIA Linux driver: in particular, notebook and all-in-one desktop designs with switchable (hybrid) or Optimus graphics will not work if means to disable the integrated graphics in hardware are not available.

Now you know what to look for in your new NVIDIA based laptop specs if you want to drive the NVIDIA from linux.

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 (type optirun programname in a terminal to start programname) and then it will be able to use the nVidia graphics.

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!

In the Intel Web site they claim that the HD graphics 3000 can output up to 2560 X 1600. My Dell XPS 15 L502X is linked through the miniDisplayPort to a 1900X1080p external Monitor. But I can't tell if it is outputting 1080i or 1080p. How could you be sure of it? What do you mean by (I cannot get 1080i)? my ext.monitor is showing 1900X1080 60Hz PP (source : Intel HD 3000).
–
HanynowskyNov 10 '11 at 2:25

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

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 Windows7 is not an option.

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.

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.

To answer the question:
It's horrible. First of all, forget about the hybrid mode (Optimus). Sure, there's Bumblebee, but it's unfinished, complex and doesn't work most of the time (don't expect a one click install!). For me, it's absolutely useless. Manually disabling a gpu (integrated one or dedicated one) does not save energy anyway.

When it comes to the drivers, things did not get better for me: After installing the default proprietary drivers I got a lot of trouble, Xorg not starting up anymore. Using the real nvidia drivers made things worse.

So right now, I'm using the crappy and buggy opensource drivers. I'm having graphical issues every now and then, but it's the only way I can get GFX acceleration. Ubuntu without GFX acceleration is total fail: Unity-2D is buggy (more than Unity with acceleration) and I feel it's underdeveloped. XFCE was my only temporary solution until I got the opensource drivers working again. XFCE is nice (it has software rendering for transparency and such), but you'll need to spend some time for getting things like a global menu to work in XFCE.

In a nutshell: it's all good as long as you don't try to install better drivers. At least, that was the case for me. If you want to run games (probably through wine), I don't think the opensource drivers will get you far.
Also don't expect a great battery life. (for me: 4h30-5h00 under windows, 1h45 under ubuntu!!! And I've tried everything I could find on the net...)

I've got a GT540m 1Gb and an Intel IGP (I disabled the latter trying to win some battery life, but to no avail).

try the lekenstyn answer - the new release has just been made in the last week which looks very promising.
–
fossfreedom♦Jan 21 '12 at 12:46

Thanks. I honestly gave up as soon as I got a running Xorg again. I also thought the projects stalled. Can you tell me, is there a chance I'll reduce power consumption using the provided method? That would be really nice, since my current battery life is rather poor under linux.
–
Mr. PixelJan 21 '12 at 13:01

1

according to lekenstyn in this answer (askubuntu.com/questions/70031/…) - yes. The key thing though is that the new project is actively being updated. So expect good & better things now and in the future! Contact Lekenstyn and the project for more info.
–
fossfreedom♦Jan 21 '12 at 13:10

You cannot disable the intel GPU unless it's a BIOS option. Bumblebee 2.2 or 2.3 did not have power saving, but the new 3.0 version has power saving features available that are automatically applied. Thus, the discrete video card will always be turned off unless a program is requested to be run with Bumblebee.
–
LekensteynJan 21 '12 at 13:18

If you are planning to use Linux as your main OS, do not buy an Nvidia Optimus-based computer!

Please ! Just don't do it... it will be the most horrible mistake in your life.

I am not trying to be hard or evil. I'm just saying that all the problems with Nvidia, Bumblebee, HDMI not working, Intel not doing a great job (because we bought an Nvidia laptop and is the Intel that is doing the whole job), No Flash at more than 480p (just forget it) in full screen.

If you are thinking about buying a computer just because it has a good battery and it is little so you can play 3D games correctly with Windows or watch flash and HD Movies with Windows, than yes you can go ahead and buy it.

But if you want to buy it to use Ubuntu (or any Linux Distribution) as your most used OS than please do yourself a favour and don't buy it... or just wait until the problems are solved... and I promise you, it is going take a LONG time before we see something working.

I don't understand why people downvote this answer. He's right: optimus is a nightmare. Sure, maybe one out of 1000000 ubuntu users got optimus working partially, but there are no magic solutions for "normal" users. I mean, just look at the first answer: it gives me headache looking at the wall of commands to by typed. And after all, let us not forget the whole point of optimus: energy saving! It doesn't work on ubuntu. Even with a gpu disabled, energy consumption does not seem to change.
–
Mr. PixelApr 6 '12 at 11:40

This answer is simply not true, I bought intel, nvidia, optimus combination a week ago on 12.04, everything works great. Just add the stable ppa: launchpad.net/~bumblebee/+archive/stable and it works great. Now they even have an gui app that allows you to select the applications that will run with nvidia and which with intel gpu.
–
enedeneMay 31 '12 at 23:27

I am sorry but It doesn't work great... just try to run some flash on the browser or heavy games using the nvidia, or even using the HDMI... It may work for you, but It doesn't work for a lot of people. I own myself an Asus 1215N and I don't have HDMI (Video and Sound), and no Flash (more than 480p in normal or full screen). Yes the bumblebee projecto is a huge step to try to solve the problem, and all the team deserve kudos for that... But a fact is a fact... If someone can avoid (for now) any computer with Muxless Optimus THEY MUST DO !... Simply
–
aliasbodyJun 2 '12 at 0:06

I own an Asus N53SM (excellent 1366x768 resolution) and it runs great with the bumblebee driver. I can play videos at any resolution/fullscreen. Tested SecondLife and it can run at near full graphics (ulimate setting) with a good fps! As an example, Tux Racer runs fullscreen and averages almost 100fps. You just have to remember to use optirun whenever you know you're gonna need more graphics power.
–
SeperoJul 2 '12 at 3:01

It works fine with 13.10, no bumblebee or other workaround necessary. Battery life is a little worse though, apparently because Nvidia is always in use.
–
NoBugsJan 15 '14 at 6:27

Hey thanks a lot guys i did not Optimus wasn't supported in Linux thanks a lot for showing me bumblebee, and Web-E i noticed my battery was being drained fast, and my it seemed like my CPU was overheating i found it weird but i guess i know why now, and in response to if i completely disable optimus in my bios will i be able to use my intel portion of the graphics?.....oh and web-e you told me not install the graphics drivers alone what did you mean by this ?
–
Mohamed AhmedJun 26 '12 at 8:24

As far as I know there isn't option to disable optimus in BIOS. Possibly you are misunderstanding with ATI hybrid graphics. Nvidia optimus system are always muxless. Read this why i told you not to install driver directly (only via bumblebee) - askubuntu.com/a/36936/35775
–
Web-EJun 26 '12 at 9:09

@Web-E there is a "disable optimus" option in the BIOS of my dell e6420. In fact i use it right now. The result is nvidia graphics card running all the time (not "ondemand" like it is the case with optimus). Does not affect the battery life much (but it does).
–
Yevgeniy M.Jun 26 '12 at 11:18

Thanks for the info. :). Its good know at least they gave some option. However in most system is doesn't have that option. like dell my xps 15. :( . @MohamedAhmed did you get any options to disable optimus in BIOS?
–
Web-EJun 26 '12 at 11:28

I installed Ubuntu 12.04.3 on a new ASUS K55VM laptop which comes with i7 ivybridge and nvidia GT630M. I was surprised to notice that nvidia 319 driver with nvidia prime installed right out of the box with both HDMI and nvidia working well. I then got a similar laptop and installed Kubuntu but this time with Bumblebee and 310 drivers but no nvidia prime. I also installed Manjaro on the same laptop, Manjaro installs nvidia 325 with kernel 310 and Bumblebee. The FPS on the nvidia prime laptop was the highest but it did run bit warmer at idle compared to the two others, also battery consumption was a bit higher but thats expected because the nvidia card runs all the time. However these numbers were trivial, 2-3c average temps higher at idle compared to Kubuntu with Manjaro running coolest with 5c less temp than the Ubuntu machine. For battery consumption, I use TLC on all machines and the nvidia prime one lost out by half hour to one hour to the other two machines but it gained quite well on FPS.

Currently (as of 13.04 IIRC) if you download the NVIDIA binary driver via Additional Drivers, it will automatically install nvidia-prime along with it.

Then, once you install and reboot, you can change to discrete graphics by changing the renderer under the PRIME section in nvidia-settings, and X11 will use it on the next login.

However, I find that this causes ATROCIOUS tearing, so I still would not recommend using this option. So, if you want to install Bumblebee as others have suggested, don't fret. All you need to do before installing Bumblebee is simply to remove the nvidia-prime package.

Prior to ubuntu 14.04 this question was valid - now its not an issue - I have an Nvidia card with Optimus and suffered getting things like WebGL to work properly and had to resort to using bumblbee in prior years - however when I did a clean drive wipe / install 14.04 even the default nouveau drivers now render graphics like a champ - WebGL is now effortless !!!