Difference between revisions of "NVIDIA"

From ArchWiki
Jump to navigation Jump to search
(Switching between nvidia and nouveau drivers: update link)
Line 24: Line 24:
2. Install the driver for newer cards (newest GPUs, GeForce 6 and newer [NV40 and newer]):
2. Install the driver for newer cards (newest GPUs, GeForce 6 and newer [NV40 and newer]):
:<pre># pacman -Rdd libgl</pre>
:<pre># pacman -S nvidia nvidia-utils</pre>
:<pre># pacman -S nvidia nvidia-utils</pre>
Line 38: Line 39:
:The nvidia<!--{,-173xx,-96xx,-71xx}-->-utils package conflict with the libgl package. This is normal. pacman will ask if it should remove libgl &mdash; answer "yes".
:The nvidia<!--{,-173xx,-96xx,-71xx}-->-utils package conflict with the libgl package. This is normal. If pacman asks to remove libgl and fails due to unsatisfied dependencies or some such, be sure you removed libgl as explained above.
:{{Note|For the latest card models, it may be required to install {{Package AUR|nvidia-beta}} and {{Package AUR|nvidia-utils-beta}} from the [[AUR]] since the stable drivers may not support the newly introduced features.}}
:{{Note|For the latest card models, it may be required to install {{Package AUR|nvidia-beta}} and {{Package AUR|nvidia-utils-beta}} from the [[AUR]] since the stable drivers may not support the newly introduced features.}}

Revision as of 22:06, 4 November 2011

This template has only maintenance purposes. For linking to local translations please use interlanguage links, see Help:i18n#Interlanguage links.

Local languages: Català – Dansk – English – Español – Esperanto – Hrvatski – Indonesia – Italiano – Lietuviškai – Magyar – Nederlands – Norsk Bokmål – Polski – Português – Slovenský – Česky – Ελληνικά – Български – Русский – Српски – Українська – עברית – العربية – ไทย – 日本語 – 正體中文 – 简体中文 – 한국어

External languages (all articles in these languages should be moved to the external wiki): Deutsch – Français – Română – Suomi – Svenska – Tiếng Việt – Türkçe – فارسی

Template:Article summary start Template:Article summary text Template:Article summary heading Template:Article summary wiki Template:Article summary wiki Template:Article summary wiki Template:Article summary wiki Template:Article summary end

This article covers installing and configuring NVIDIA's proprietary graphic card driver. For information about the open-source drivers, see Nouveau.



These instructions are for those using the stock Template:Package Official package. For custom kernel setup, skip to the next subsection.

Tip: It is usually beneficial to install the NVIDIA driver through pacman rather than through the package provided by the NVIDIA site, this allows the driver to be updated when upgrading the system.

1. Visit NVIDIA's driver download site to find out the appropriate driver for a given card.

Note: Currently nvidia-173xx, nvidia-96xx and nvidia-71xx drivers don't support Xorg release 1.11, and therefore not available in the Official Repositories. You could use the open source drivers (nouveau or nv) instead.

2. Install the driver for newer cards (newest GPUs, GeForce 6 and newer [NV40 and newer]):

# pacman -Rdd libgl
# pacman -S nvidia nvidia-utils
The nvidia-utils package conflict with the libgl package. This is normal. If pacman asks to remove libgl and fails due to unsatisfied dependencies or some such, be sure you removed libgl as explained above.
Note: For the latest card models, it may be required to install Template:Package AUR and Template:Package AUR from the AUR since the stable drivers may not support the newly introduced features.
On 64 bit systems, for 32 bit programs to take advantage of nvidia-utils you must also install the equivalent lib32 package (for example lib32-nvidia-utils).

3. Reboot. The nvidia package contains a file which blacklists the nouveau module. A reboot is necessary for this blacklist to take effect.

Once the driver has been installed, continue to: #Configuring.

Alternate install: custom kernel

First of all, it is of advantage to know how the ABS system works by reading some of the other articles about it:

Note: There is the Template:Package AUR package on AUR which turns out to make it easier to install the NVIDIA driver for custom kernels and multiple kernels

The following is a short tutorial for making a custom NVIDIA driver package using ABS:

Install ABS and generate the tree:

# pacman -S abs
# abs

As a standard user, make a temporary directory for creating the new package:

$ mkdir -p ~/devel/abs

Make a copy of the Template:Filename package directory:

$ cp -r /var/abs/extra/nvidia/ ~/devel/abs/

Go into the temporary Template:Filename build directory:

$ cd ~/devel/abs/nvidia

It is required to edit the files Template:Filename and Template:Filename file so that they contain the right kernel version variables.

While running the custom kernel, get the appropriate kernel and local version names:

$ uname -r
  1. In nvidia.install, replace the Template:Codeline variable with the custom kernel version, such as Template:Codeline or Template:Codeline depending on what the kernel's version is and the local version's text/numbers. Do this for all instances of the version number within this file.
  2. In PKGBUILD, change the Template:Codeline variable to match the appropriate version, as above.
  3. If there are more than one kernels in the system installed in parallel, (such as a custom kernel alongside the default -ARCH kernel) change the Template:Codeline variable in the PKGBUILD to a unique identifier, such as nvidia-2622 or nvidia-custom. This will allow both kernels to use the nvidia module, since the custom nvidia module has a different package name and will not overwrite the original. You will also need to comment the line in Template:Codeline that creates Template:Filename (else pacman will complain that it already exists).

Then do:

$ makepkg -ci

The Template:Codeline operand tells makepkg to clean left over files after building the package, whereas Template:Codeline specifies that makepkg should automatically run pacman to install the resulting package.


It is possible that after installing the driver it may not be needed to create an Xorg server configuration file. You can run a test to see if the Xorg server will function correctly without a configuration file. However, it may be required to create a Template:Filename configuration file in order to adjust various settings. This configuration can be generated by the NVIDIA Xorg configuration tool, or it can be created manually. If created manually, it can be a minimal configuration (in the sense that it will only pass the basic options to the Xorg server), or it can include a number of settings that can bypass Xorg's auto-discovered or pre-configured options.

Automatic configuration

The NVIDIA package includes an automatic configuration tool to create an Xorg server configuration file (Template:Filename) and can be run by:

# nvidia-xconfig

This command will auto-detect and create (or edit, if already present) the Template:Filename configuration according to present hardware.

If there are instances of DRI, ensure they are commented out:

#    Load        "dri"

Double check your Template:Filename to make sure your default depth, horizontal sync, vertical refresh, and resolutions are acceptable.

Warning: That may still not work properly with Xorg-server 1.8

Automatic configuration with multiple monitors

The NVIDIA package provides Twinview. This tool will help by automatically configuring all the monitors connected to your video card. This only works for multiple monitors on a single card. To configure Xorg Server with Twinview run:

# nvidia-xconfig --twinview

Minimal configuration

To create a basic Template:Filename, as root:

# vi /etc/X11/xorg.conf

And add the driver:

Section "Device"
   Identifier     "Device0"
   Driver         "nvidia"
   VendorName     "NVIDIA Corporation"
Tip: Make sure, in order to have full multimedia functionality, to have xorg-input-drivers installed.
Tip: If upgrading from the nouveau drivers make sure to remove "nouveau" from /etc/mkinitcpio.conf. You can use those scripts if you are switching between open and closed drivers often.


GUI: nvidia-settings

The NVIDIA package includes the Template:Codeline program that allows adjustment of several additional settings.

For the settings to be loaded on login, run this command from the terminal:

$ nvidia-settings --load-config-only

Or add it to the the desktop environment's auto-startup method.

Tip: On rare occasions the Template:Filename may become corrupt. If this happens, the Xorg server may crash and the file will have to be deleted to fix the issue.

Advanced: xorg.conf

Edit Template:Filename, and add the option to the correct section. NVIDIA tests and ships the drivers with the recommended setting so note that some edits may cause instability, tearing, among other problems. Since not all options may work for a given system, consider backing up Template:Filename before making any edits. The Xorg server will need to be restarted before any changes are applied.

Enabling desktop composition

As of NVIDIA driver version 180.44, support for GLX with the Damage and Composite X extensions is enabled by default. Refer to Composite for detailed instructions.

Disabling the logo on startup

Add the Template:Codeline option under section Template:Codeline:

Option "NoLogo" "1"

Enabling hardware acceleration

Note: RenderAccel is enabled by default since drivers version 97.46.xx

Add the Template:Codeline option under section Template:Codeline:

Option "RenderAccel" "1"

Overriding monitor detection

The Template:Codeline option under section Template:Codeline allows to override monitor detection when X server starts, which may save a significant amount of time at start up. The available options are: Template:Codeline for analog connections, Template:Codeline for digital monitors and Template:Codeline for televisions.

The following statement forces the NVIDIA driver to bypass startup checks and recognize the monitor as DFP:

Option "ConnectedMonitor" "DFP"
Note: Use "CRT" for all analog 15 pin VGA connections, even if the display is a flat panel. "DFP" is intended for DVI digital connections only.

Enabling triple buffering

Enable the use of triple buffering by adding the Template:Codeline Option under section Template:Codeline:

Option "TripleBuffer" "1"

Use this option if the graphics card has plenty of ram (equal or greater than 128MB). The setting only takes effect when syncing to vblank is enabled, one of the options featured in nvidia-settings.

Note: This option may introduce full-screen tearing and reduce performance.

Using OS-level events

Taken from the NVIDIA driver's README file: "[...] Use OS-level events to efficiently notify X when a client has performed direct rendering to a window that needs to be composited." It may help improving performance, but it is currently incompatible with SLI and Multi-GPU modes.

Add under section Template:Codeline:

Option "DamageEvents" "1"
Note: This option is enabled by default in newer driver versions.

Enabling power saving

Add under section Template:Codeline:

Option "DPMS" "1"

Enabling SLI

Warning: As of May 7, 2011, you may experience sluggish video performance in GNOME 3 after enabling SLI.

Taken from the NVIDIA driver's README appendix: This option controls the configuration of SLI rendering in supported configurations. A supported configuration is a computer equipped with an SLI-Certified Motherboard and 2 or 3 SLI-Certified GeForce GPUs. See NVIDIA's SLI Zone for more information.

Find the first GPU's PCI Bus ID using Template:Codeline:

$ lspci | grep VGA

This will return something similar to:

03:00.0 VGA compatible controller: nVidia Corporation G92 [GeForce 8800 GTS 512] (rev a2)
05:00.0 VGA compatible controller: nVidia Corporation G92 [GeForce 8800 GTS 512] (rev a2)

Add the BusID (3 in the previous example) under section Template:Codeline:

BusID "PCI:3:0:0"
Note: The format is important. The BusID value must be specified as Template:Codeline

Add the desired SLI rendering mode value under section Template:Codeline:

Option "SLI" "SLIAA"

The following table presents the available rendering modes.

Value Behavior
0, no, off, false, Single Use only a single GPU when rendering.
1, yes, on, true, Auto Enable SLI and allow the driver to automatically select the appropriate rendering mode.
AFR Enable SLI and use the alternate frame rendering mode.
SFR Enable SLI and use the split frame rendering mode.
SLIAA Enable SLI and use SLI antialiasing. Use this in conjunction with full scene antialiasing to improve visual quality.

Alternatively, you can use the Template:Codeline utility to insert these changes into Template:Codeline with a single command:

# nvidia-xconfig --busid=PCI:3:0:0 --sli=SLIAA

To verify that SLI mode is enabled from a shell:

$ nvidia-settings -q all | grep SLIMode
 Attribute 'SLIMode' (arch:0.0): AA 
   'SLIMode' is a string attribute.
   'SLIMode' is a read-only attribute.
   'SLIMode' can use the following target types: X Screen.

Forcing Powermizer performance level (for laptops)

Add under section Template:Codeline:

# Force Powermizer to a certain level at all times
# level 0x1=highest
# level 0x2=med
# level 0x3=lowest
# AC settings:
Option "RegistryDwords" "PowerMizerLevelAC=0x3"
# Battery settings:
Option	"RegistryDwords" "PowerMizerLevel=0x3"

Settings are better explained in NVIDIA Driver for X.org:Performance and Power Saving Hints.

Letting the GPU set its own performance level based on temperature

Add under section Template:Codeline:

Option "RegistryDwords" "PerfLevelSrc=0x3333"

Disable vblank interrupts (for laptops)

When running the interrupt detection utility powertop, it can be observed that the Nvidia driver will generate an interrupt for every vblank. To disable, place in the Template:Codeline section:

Option "OnDemandVBlankInterrupts" "1"

This will reduce interrupts to about one or two per second.

Enabling overclocking

Warning: Please note that overclocking may damage hardware and that no responsibility may be placed on the authors of this page due to any damage to any information technology equipment from operating products out of specifications set by the manufacturer.

To enable GPU and memory overclocking, place the following line in the Template:Codeline section:

Option "Coolbits" "1"

This will enable on-the-fly overclocking within an X session by running:

$ nvidia-settings
Note: GTX 4xx/5xx series Fermi cores cannot currently be overclocked using the Coolbits method. The alternative is to edit and reflash the GPU BIOS either under DOS (preferred), or within a Win32 environment by way of nvflash and NiBiTor 6.0. The advantage of BIOS flashing is that not only can voltage limits be raised, but stability is generally improved over software overclocking methods such as Coolbits.
Setting static 2D/3D clocks

Set the following string in the Template:Codeline section to enable PowerMizer at its maximum performance level:

Option "RegistryDwords" "PerfLevelSrc=0x2222"

Set one of the following two strings in the Template:Codeline section to enable manual GPU fan control within Template:Codeline:

Option "Coolbits" "4"
Option "Coolbits" "5"

Enable screen rotation through XRandR

Place the following line in the Template:Codeline section:

Option "RandRRotation" "True"

After restarting Xorg:

$ xrandr -o left

The Screen should be rotated. To restore:

$ xrandr -o normal
Note: Editing xorg.conf may be unnecessary since screen rotation should be enabled by default, ideally by using the respective DE tools, such as SystemSettings in KDE.

Tips and tricks

Enabling Pure Video HD (VDPAU/VAAPI)

Hardware Required:

At least a video card with second generation PureVideo HD [1]

Software Required:

Nvidia video cards with the proprietary driver installed will provide video decoding capabilities with the VDPAU interface at different levels according to PureVideo generation.

You can also add support for the VA-API interface with:

# pacman -S vdpau-video

Check VA-API support with:

$ vainfo

To take full advantage of the hardware decoding capability of your video card you will need a media player that supports VDPAU or VA-API.

To enable hardware acceleration in MPlayer edit Template:Filename


To enable hardware acceleration in VLC go:

Tools -> Preferences -> Input & Codecs -> check "Use GPU acceleration (experimental)"

To enable hardware acceleration in smplayer go:

Options -> Preferences -> General -> Video Tab -> select vdpau as output driver

To enable hardware acceleration in gnome-mplayer go:

Edit -> Preferences -> set video output to vdpau

Playing HD movies on cards with low memory:

If your graphic card does not have a lot of memory (>521MB?), you can experience glitches when watching 1080p or even 720p movies. To avoid that start simple window manager like TWM or MWM.

Additionally increasing the MPlayer's cache size in Template:Filename can help, when your hard drive is spinning down when watching HD movies.

Using TV-out

A good article on the subject can be found here

X with a TV (DFP) as the only display

The X server falls back to CRT-0 if no monitor is automatically detected. This can be a problem when using a DVI connected TV as the main display, and X is started while the TV is turned off or otherwise disconnected.

To force nvidia to use DFP, store a copy of the EDID somewhere in the filesystem so that X can parse the file instead of reading EDID from the TV/DFP.

To acquire the EDID, start nvidia-settings. It will show some information in tree format, ignore the rest of the settings for now and select the GPU (the corresponding entry should be titled "GPU-0" or similar), click the "DFP" section (again, "DFP-0" or similar), click on the "Acquire Edid" Button and store it somewhere, for example, Template:Filename.

Edit xorg.conf by adding to the "Device" section:

Option "ConnectedMonitor" "DFP"
Option "CustomEDID" "DFP-0:/etc/X11/dfp0.edid"

The "ConnectedMonitor" option forces the driver to recognize the DFP as if it were connected. The "CustomEDID" provides EDID data for the device, meaning that it will start up just as if the TV/DFP was connected during X the process.

This way, one can automatically start a display manager at boot time and still have a working and properly configured X screen by the time the TV gets powered on.

Check the power state

NVIDIA X.org driver can detect power source. To see the current state check 'GPUPowerSource' read-only parameter (0 - AC, 1 - battery):

   $ nvidia-settings -q GPUPowerSource -t

For it to be able to detect this you need to have acpid installed. Make sure to include acpid on DAEMONS array in rc.conf or this warning will appear on system log:

ACPI: failed to connect to the ACPI event daemon; the daemon
may not be running or the "AcpidSocketPath" X
configuration option may not be set correctly.  When the
ACPI event daemon is available, the NVIDIA X driver will
try to use it to receive ACPI event notifications.  For
details, please see the "ConnectToAcpid" and
"AcpidSocketPath" X configuration options in Appendix B: X
Config Options in the README.

Displaying GPU temperature in the shell

Method 1 - nvidia-settings

Note: This method requires that you are using X. Use Method 2 or Method 3 if you are not. Also note that Method 3 currently does not not work with newer nvidia cards such as the G210/220 as well as embedded GPUs such as the Zotac IONITX's 8800GS.

To display the GPU temp in the shell, use nvidia-settings as follows:

$ nvidia-settings -q gpucoretemp

This will output something similar to the following:

Attribute 'GPUCoreTemp' (hostname:0.0): 41.
'GPUCoreTemp' is an integer attribute.
'GPUCoreTemp' is a read-only attribute.
'GPUCoreTemp' can use the following target types: X Screen, GPU.

The GPU temps of this board is 41 C.

In order to get just the temperature for use in utils such as rrdtool or conky, among others:

$ nvidia-settings -q gpucoretemp -t

Method 2 - nvidia-smi

Use nvidia-smi which can read temps directly from the GPU without the need to use X at all. This is important for a small group of users who do not have X running on their boxes, perhaps because the box is headless running server apps. To display the GPU temp in the shell, use nvidia-smi as follows:

$ nvidia-smi -a

This should output something similar to the following:

$ nvidia-smi -a

==============NVSMI LOG==============

Timestamp			: Mon Dec 13 20:11:28 2010

Driver Version			: 260.19.29

GPU 0:
	Product Name		: GeForce 8400 GS
	PCI Device/Vendor ID	: 6e410de
	PCI Location ID		: 0:1:0
	Board Serial		: 2648101198649
	Display			: Connected
	Temperature		: 40 C
	    GPU			: 1%
	    Memory		: 8%

In order to get just the temperature for use in utils such as rrdtool or conky, among others:

$ nvidia-smi -a | grep Temp | cut -c17-18

Reference: http://www.question-defense.com/2010/03/22/gpu-linux-shell-temp-get-nvidia-gpu-temperatures-via-linux-cli

Method 3 - nvclock

Use nvclock which is available from the [extra] repo. Note that nvclock cannot access thermal sensors on newer NVIDIA cards such as the G210/220.

There can be significant differences between the temperatures reported by nvclock and nvidia-settings/nv-control. According to this post by the author (thunderbird) of nvclock, the nvclock values should be more accurate.

Set Fan Speed at Login

You can adjust the fan speed on your graphics card with Template:Codeline's console interface. First ensure that your Xorg configuration sets the Coolbits option to 4 or 5 in your Template:Codeline section to enable fan control.

Option "Coolbits" "4"
Note: GTX 4xx/5xx series cards cannot currently set fan speeds at login using this method. This method only allows for the setting of fan speeds within the current X session by way of nvidia-settings.

Place the following line in your [[xinitrc|Template:Filename]] file to adjust the fan when you launch Xorg. Replace <n> with the fan speed percentage you want to set.

nvidia-settings -a "[gpu:0]/GPUFanControlState=1" -a "[fan:0]/GPUCurrentFanSpeed=<n>"

You can also configure a second GPU by incrementing the GPU and fan number.

nvidia-settings -a "[gpu:0]/GPUFanControlState=1" \ 
-a "[gpu:1]/GPUFanControlState=1" \
-a "[fan:0]/GPUCurrentFanSpeed=<n>" \
-a  [fan:1]/GPUCurrentFanSpeed=<n>" &

If you use a login manager such as GDM or KDM, you can create a desktop entry file to process this setting. Create Template:Filename and place this text inside it. Again, change <n> to the speed percentage you want.

[Desktop Entry]
Exec=nvidia-settings -a "[gpu:0]/GPUFanControlState=1" -a "[fan:0]/GPUCurrentFanSpeed=<n>"

Order of install/deinstall for changing drivers

Where the old driver is nvidiaO and the new driver is nvidiaN.

remove nvidiaO
install nvidia-utilsN
install nvidiaN
install lib32-nvidia-utils-N (if required)

Switching between nvidia and nouveau drivers

If you are switching between the nvidia and nouveau driver often, you can use those two scripts to make it easier:

# nvidia -> nouveau

/usr/bin/sudo /bin/sed -i 's/#*options nouveau modeset=1/options nouveau modeset=1/' /etc/modprobe.d/modprobe.conf
/usr/bin/sudo /bin/sed -i 's/#*MODULES="nouveau"/MODULES="nouveau"/' /etc/mkinitcpio.conf

/usr/bin/sudo /usr/bin/pacman -Rdds --noconfirm nvidia-173xx{,-utils}
/usr/bin/sudo /usr/bin/pacman -S --noconfirm nouveau-dri xf86-video-nouveau

#/usr/bin/sudo /bin/cp {10-monitor,30-nouveau}.conf /etc/X11/xorg.conf.d/

/usr/bin/sudo /sbin/mkinitcpio -p linux
# nouveau -> nvidia

/usr/bin/sudo /bin/sed  -i 's/options nouveau modeset=1/#options nouveau modeset=1/' /etc/modprobe.d/modprobe.conf
/usr/bin/sudo /bin/sed -i 's/MODULES="nouveau"/#MODULES="nouveau"/' /etc/mkinitcpio.conf

/usr/bin/sudo /usr/bin/pacman -Rdds --noconfirm nouveau-dri xf86-video-nouveau libgl
/usr/bin/sudo /usr/bin/pacman -S --noconfirm nvidia-173xx{,-utils}

#/usr/bin/sudo /bin/rm /etc/X11/xorg.conf.d/{10-monitor,30-nouveau}.conf

/usr/bin/sudo /sbin/mkinitcpio -p linux

A reboot is needed to complete the switch.

Adjust the scripts accordingly if you are using other version of NVIDIA drivers (I use nvidia-173xx).

If you are using xorg-server older than 1.10.2-1, uncomment the lines that copy and remove {10-monitor,30-nouveau}.conf. Since version 1.10.2-1, xorg-server is patched to load nouveau driver automatically. I keep 10-monitor.conf and 30-nouveau.conf in the same directory as this script, adjust the path if needed.


Gaming using Twinview

In case you want to play fullscreen games when using Twinview, you will notice that games recognize the two screens as being one big screen. While this is technically correct (the virtual X screen really is the size of your screens combined), you probably do not want to play on both screens at the same time.

To correct this behavior for SDL, try:


For OpenGL, add the appropiate Metamodes to your xorg.conf in section Template:Codeline and restart X:

Option "Metamodes" "1680x1050,1680x1050; 1280x1024,1280x1024; 1680x1050,NULL;  1280x1024,NULL;"

Another method that may either work alone or in conjunction with those mentioned above is starting games in a separate X server.

Old Xorg Settings

If upgrading from an old installation, please remove old Template:Filename paths as it can cause trouble during installation.

Corrupted screen: "Six screens" issue

For some users using Geforce GT 100M's, the screen turns out corrupted after X starts; divided into 6 sections with a resolution limited to 640x480.

To solve this problem, enable the Validation Mode Template:Codeline in section Template:Codeline:

Section "Device"
 Option "ModeValidation" "NoTotalSizeCheck"

'/dev/nvidia0' Input/Output error

This error can occur for several different reasons, and the most common solution given for this error is to check for group/file permissions, which in almost every case is not the issue. The NVIDIA documentation does not talk in detail on what you should do to correct this problem but there are a few things that have worked for some people. The problem can be a IRQ conflict with another device or bad routing by either the kernel or your BIOS.

First thing to try is to remove other video devices such as video capture cards and see if the problem goes away. If there are too many video processors on the same system it can lead into the kernel being unable to start them because of memory allocation problems with the video controller. In particular on systems with low video memory this can occur even if there is only one video processor. In such case you should find out the amount of your system's video memory (e.g. with lspci -v) and pass allocation parameters to the kernel, e.g.:


Another thing to try is to change your BIOS IRQ routing from Operating system controlled to BIOS controlled or the other way around. The first one can be passed as a kernel parameter:


The noacpi kernel parameter has also been suggested as a solution but since it disables ACPI completely it should be used with caution. Some hardware are easily damaged by overheating.

Note: The kernel parameters can be passed either through the kernel command line or the bootloader configuration file. See your bootloader Wiki page for more information.

'/dev/nvidiactl' errors

Trying to start an opengl application might result in errors such as:

Error: Could not open /dev/nvidiactl because the permissions are too
restrictive. Please see the Template:Codeline 
section of Template:Codeline 
for steps to correct.

Solve by adding the appropiate user to the "video" group and relogin:

# gpasswd -a username video

32 bit applications do not start

Under 64 bit systems, installing Template:Codeline that corresponds to the same version installed for the 64 bit driver fixes the issue.

Errors after updating the kernel

If a custom build of NVIDIA's module is used instead of the package from [extra], a recompile is required every time the kernel is updated. Rebooting is generally recommended after updating kernel and graphic drivers.

Crashing in general


More information about troubleshooting the driver can be found in the NVIDIA forums.

Bad performance after installing a new driver version

If FPS have dropped in comparison with older drivers, first check if direct rendering is turned on:

$ glxinfo | grep direct

If the command prints:

direct rendering: No

then that could be an indication for the sudden FPS drop.

A possible solution could be to regress to the previously installed driver version and rebooting afterwards.

CPU spikes with 400 series cards

If you are experiencing intermittent CPU spikes with a 400 series card, it may be caused by PowerMizer constantly changing the GPU's clock frequency. Switching PowerMizer's setting from Adaptive to Performance, add the following to the Device section of your Xorg configuration:

 Option "RegistryDwords" "PowerMizerEnable=0x1; PerfLevelSrc=0x3322; PowerMizerDefaultAC=0x1"

Laptops: X hangs on login/out, worked around with Ctrl+Alt+Backspace

If while using the legacy NVIDIA drivers Xorg hangs on login and logout (particularly with an odd screen split into two black and white/gray pieces), but logging in is still possible via Ctrl-Alt-Backspace (or whatever the new "kill X" keybind is), try adding this in Template:Filename:

options nvidia NVreg_Mobile=1

One user had luck with this instead, but it makes performance drop significantly for others:

options nvidia NVreg_DeviceFileUID=0 NVreg_DeviceFileGID=33 NVreg_DeviceFileMode=0660 NVreg_SoftEDIDs=0 NVreg_Mobile=1

Note that Template:Codeline needs to be changed according to the laptop:

  • 1 for Dell laptops.
  • 2 for non-Compal Toshiba laptops.
  • 3 for other laptops.
  • 4 for Compal Toshiba laptops.
  • 5 for Gateway laptops.

See NVIDIA Driver's Readme:Appendix K for more information.

Refresh rate not detected properly by XRandR dependant utilities

The XRandR X extension is not presently aware of multiple display devices on a single X screen; it only sees the Template:Codeline bounding box, which may contain one or more actual modes. This means that if multiple MetaModes have the same bounding box, XRandR will not be able to distinguish between them.

In order to support Template:Codeline, the NVIDIA driver must make each MetaMode appear to be unique to XRandR. Presently, the NVIDIA driver accomplishes this by using the refresh rate as a unique identifier.

Use Template:Codeline to query the actual refresh rate on each display device.

The XRandR extension is currently being redesigned by the X.Org community, so the refresh rate workaround may be removed at some point in the future.

This workaround can also be disabled by setting the "DynamicTwinView" X configuration option to "false", which will disable NV-CONTROL support for manipulating MetaModes, but will cause the XRandR and XF86VidMode visible refresh rate to be accurate.

No screens found on a laptop / NVIDIA Optimus

On a laptop, if the NVIDIA driver cannot find any screens, you may have an NVIDIA Optimus setup : an Intel chipset connected to the screen and the video outputs, and a NVIDIA card that does all the hard work and writes to the chipset's video memory.

Check if

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)

Unfortunately NVIDIA has no plans to support this in their Linux drivers.

You need to install the Intel driver to handle the screens, then if you want 3D software you should run them through Bumblebee to tell them to use the NVIDIA card.

No brightness control on laptops

Try to add the following line on 20-nvidia.conf

Option "RegistryDwords" "EnableBrightnessControl=1"

If it still not working, you can try install nvidia-bl or nvidiabl.

Black Bars while watching full screen flash videos with twinview

Follow the instructions presented here: link

External links