nouveau is the open source driver for nVidia graphics cards.
Being an open source project running on what is largely proprietary hardware, there are some limitations inherrent to Nouveau that are not . That said, Nouveau is constantly evolving, so these limitations are subject to change over time. Some of the current issues are stated below:
- Performance (especially 3D performance) on the same card/chipset may be significantly worse than using nVidia/nvidia-drivers.
- Attempts to run at higher refresh rates (i.e. above 60 Hz) may fail.
- Using advanced features from various Nvidia cards (e.g. multiple-display capabilities of Quadro cards without SLI) may not function correctly.
You need to activate the following kernel options:
Device Drivers ---> Graphics support ---> <*> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) ---> <*> Nouveau (nVidia) cards
After setting the VIDEO_CARDS variable remember to update the system using the following command so the changes take effect:
emerge --ask --changed-use --deep @world
If you have installed the propritary driver from NVIDIA using the package
nvidia-drivers, it will have installed a udev rules file in
/lib/udev/rules.d/99-nvidia.rules. If you attempt to use the nouveau
driver without disabling that rule file, you may see your X11 log file
fill up with a block of messages like this repeating every 10ms:
[ 180.669] (II) NOUVEAU(0): EDID vendor "SAM", prod id 430 [ 180.669] (II) NOUVEAU(0): Using hsync ranges from config file [ 180.669] (II) NOUVEAU(0): Using vrefresh ranges from config file [ 180.669] (II) NOUVEAU(0): Printing DDC gathered Modelines: [ 180.669] (II) NOUVEAU(0): Modeline "1600x1200"x0.0 162.00 1600 1664 1856 2160 1200 1201 1204 1250 +hsync +vsync (75.0 kHz eP) [ 180.669] (II) NOUVEAU(0): Modeline "800x600"x0.0 40.00 800 840 968 1056 600 601 605 628 +hsync +vsync (37.9 kHz e) [ 180.669] (II) NOUVEAU(0): Modeline "800x600"x0.0 36.00 800 824 896 1024 600 601 603 625 +hsync +vsync (35.2 kHz e) [...] [ 180.669] (II) NOUVEAU(0): Modeline "1152x864"x0.0 108.00 1152 1216 1344 1600 864 865 868 900 +hsync +vsync (67.5 kHz e) [ 180.669] (II) NOUVEAU(0): Modeline "1280x1024"x0.0 108.00 1280 1328 1440 1688 1024 1025 1028 1066 +hsync +vsync (64.0 kHz e) [ 180.669] (II) NOUVEAU(0): Modeline "1280x960"x0.0 108.00 1280 1376 1488 1800 960 961 964 1000 +hsync +vsync (60.0 kHz e) [ 180.669] removing GPU device /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/drm/card2 /dev/dri/card2
To prevent this (without uninstalling the nvidia-drivers package), you can simply remove/move/rename the udev file /lib/udev/rules.d/99-nvidia.rules (see Udev#Advanced_Configuration). Note that the next time nvidia-drivers is updated, that file will be re-installed.
If you have the
acl USE flag enabled globally and are using ConsoleKit (i.e you're using a Desktop profile) permissions to video cards will be handled automatically. You can check the permissions using getfacl:
getfacl /dev/dri/card0 | grep larry
A broader solution is to add the user you want to be able to access the video card to the video group:
gpasswd -a larry video
Note that you will still be able to run X without permission to the DRI subsystem, but usually not with acceleration enabled.
The X server is designed to work out-of-the-box, with no need to manually edit X.Org's configuration files. It should detect and configure devices such as displays, keyboards, and mice.
However, the main configuration file of the X server is the xorg.conf.
Multi Monitor Problems
If you're having problems with freezing with possible EDID probes when using dual monitors/displays, try adding "video=VGA-1:e" or "video=VGA-1:d" (enable or disable respectively) to your grub.cfg/grub2.cfg command line options, substituting the name of your monitor listed within dmesg or /var/log/Xorg.0.log. (ie. CRT-1, VGA-1, LVDS-1, DVI-1, ...)
I have a Dell Inspiron 8100 laptop with a connected external display connected via the laptop's external VGA port. My current command line is: "video=LVDS-1:1280x1024@60 video=VGA-1:1280x1024@60". Think the EDID (DRM) probe on the external VGA connected display is still causing freezing during nouveau/drm load, but at least it's usable if the display is connected after grub is loaded and prior to the nouveau/drm modules loading. And with the prior mentioned command line LVDS/VGA resolutions, the displays are cloned and centered with somewhat correct resolutions for cloned displays.
If you are using a laptop with NVIDIA's Optimus technology (usually found in laptops built in 2010 and later) then everything will be passed through your integrated graphics controller (usually Intel) before it gets to your discreet video card (NVIDIA), which can cause a lot of otherwise unexplained problems when enabled. There are a few ways to handle this, but the simplest is to disable Optimus through your BIOS (normally accessed by pressing F12 during boot). This will result in increased power consumption (decreased battery life, increased running temperature), as your NVIDIA card will now be handling all of the work all of the time.
I'd like to post something here about how to get Optimus working properly, but I haven't figured it out enough to do so. I would suggest looking into the kernel option "config_vga_switcheroo" and the Bumblebee project to start.
- nVidia/nvidia-drivers - Closed source binary driver for NVIDIA graphic cards.
- nouveau & nvidia-drivers switching
- Hprofile#VGA - Or go directly there for dynamic switching with a single kernel. Warning: PRIME (VGASwitcheroo forn Intel/nVidia Optimus GPU hardware should be supported and functionnal), well if there is a /sys/kernel/debug/vgaswitcheroo/switch file is all you need to get intel/nouveau switching. Or else, getting intel/nvidia-drivers dynamic switching is cheap. Just follow the instructions!