Xorg: Default Driver Selection for nvidia hardware

Registered by Rick Spencer

By default, Ubuntu has enabled the -nv driver for nVidia hardware since it has been a stable open source driver that supports most chips. Unfortunately, while this driver is open source, it is obfuscated and not very actively maintained upstream. Owners of nVidia hardware have largely had no choice but to use the binary proprietary -nvidia driver as a result.

The good news is that over the past few years a new video driver, -nouveau - a heroic reverse engineering effort by the open source community - has grown to feasible usefulness. Indeed, we included this driver in jaunty, although it was far from officially supported.

Our ambition is to move from using -nv to -nouveau as much as feasible. This session seeks to identify the steps required to do this, discuss problems we expect to encounter, and brainstorm workarounds and mitigations to help avoid a messy transition.

 * What hardware does -nouveau support / not support?
 * Review known issues
 * Recruiting testers
 * Organizing testing activity
 * Transitioning -nv users to -nouveau


 * Specification outlining a plan of attack for converting some/all chips from -nv to -nouveau.

Blueprint information

Martin Pitt
Bryce Harrington
Needs approval
Bryce Harrington
Series goal:
Accepted for lucid
Milestone target:
milestone icon lucid-alpha-3
Started by
Bryce Harrington
Completed by
Bryce Harrington

Related branches



Work items:
Set up xorg-edgers PPA with kernel, mesa, -nouveau, libdrm, etc. bits for doing KMS, 3D, and other features not yet available in an official release: DONE
Add -nouveau to xserver-xorg-video-all in xorg: DONE
File Main Inclusion Request to move -nouveau to main: DONE
Update the -nouveau launchpad page with bug directions: DONE
Update the -nouveau driver description to be less scary: DONE
[raof] Patch xserver to prefer "nouveau" instead of "nv": DONE
[sconklin] Determine status of kernel patches for nouveau and identify which bits need pulled: DONE
Test switching between -nouveau and -nvidia and back. Document the process, especially any differences from -nv<->-nvidia: DONE
Document a contingency plan to revert: DONE
Provide a X/Troubleshooting/ page for dealing with transition issues: DONE
By Alpha-3 at latest, make a go/no-go decision on -nouveau vs. reverting to -nv: DONE
Put out a call-for-testing of nouveau before uploading the packages: DONE
Draft release notes itemizing the functionality -nouveau provides over -nv, and for which chipsets: DONE
create metapackage for linux-backports-modules-nouveau-2.6.32-13-generic : DONE
add nouveau lbm metapackage as dependency to xserver-xorg-video-nouveau: DONE
add xserver-xorg-video-nouveau as a dependency to -video-all, so that it's pulled into the default install: DONE
Close out old -nouveau bugs that are no longer relevant with current packages: DONE
Close out all -nv bug reports filed before transition as obsolete due to move: DONE


bryce 2009-05-26: Session determined that replacing -nv with -nouveau as the open source default was viable. It remains to be seen if KMS will be supported in the kernel in time for Karmic. For the time being we expect -nvidia will still be the primary driver for nVidia hardware owners, however -nouveau will make a better alternate than -nv.

bryce 2009-06-16: Testing nouveau on several video cards has not been going good, with black-screen-on-boot issues being common.

bryce 2009-06-19: From the testing I've done so far it appears that doing both KMS and switching to -nouveau as the default may be too ambitious. In a way the two directions are at cross-purposes a bit since for KMS we want to pull in a lot of bleeding edge code, but for switching defaults our interest is in maximizing stability. So, I think we get the most bang for our buck from focusing on KMS, and postpone setting setting -nouveau as the default until a later release.

In particular, I would like to see wider community testing before we switch. Hopefully via the KMS work we'll accumulate more testing hours on -nouveau generally.

bryce 2009-11-09: I think we should defer this to MM because Lucid is an LTS and changing to nouveau as the default open source driver is likely too ambitious a change for the cycle. Rather, effort should be placed on packaging improvements to -nvidia and stabilization work on -nv.

bryce 2009-11-24: At UDS we decided to go ahead with doing -nouveau in Lucid. While it is an ambitious change, it is what we want to be supporting in coming years rather than -nv. Hopefully it won't be too disruptive to users.

pitti 2009-11-27: I take it the contingency plan is to just revert the "nouveau >> nv" detection patch in the server and otherwise keep shipping the bits? when should we take the decision which one should be the default in lucid? beta-1? (please add to spec)

bryce 2009-11-25: I seem to recall xserver-xorg-video-all also can only have one of -nv or -nouveau so that would need undone as well. Some changes on the kernel side might be needed as well to disable use of KMS and so on. I hope we don't have to back it out, because it's going to be a goodly bit of work to get it in.

bryce 2010-01-21: The next task that needs done is a go/no-go decision on sticking with -nouveau for alpha-3; on the X.org side I think we're "go", so we just need a thumbs up or down from the kernel side. I don't want to put a lot of effort into the remaining nouveau tasks until we have firm decision for alpha-3.

bryce 2010-01-29: We are planning to discuss go/no-go on this next week at the platform sprint. Meanwhile, RAOF has made good progress at getting the X bits packaged up; these are available for testing in his PPA. In addition to the testing, there are still a lot of loose threads that need sorted out.

bryce 2010-02-04: We've tentatively decided to go ahead with nouveau as the default for Lucid. 3D, suspend/resume, and screen rotation do not work, but neither do these work in -nv. It did get the resolution correct by default on all the systems I tested, which is more than -nv could do. So, it's not perfect but it works at least as well as -nv and hopefully should just get better over time. RAOF prepped patch 106_nouveau_autodetect.patch to care for preferring nouveau rather than nv, in the xorg-edgers nouveau repo. Patch to add nouveau to -all is posted to the MIR.

Switching between -nouveau and -nvidia should be as simple as just enabling/disabiling nividia in jockey (Hardware Drivers). I played with this a bit today and am comfortable it will satisfy the need once we have -nouveau in main.

The contingency plan for reverting -nouveau has been added to the blueprint wiki page. Basically we just revert the xserver patch so nv is preferred again, remove the nouveau bits from the livecd, and revert adding nouveau to -video-all.

bryce 2010-02-22: Whew!


Work Items