How do I install the Nvidia drivers?
I just ordered the Nvidia GTX card. I have a dilemma, though. Should I keep using the driver which is available in "additional drivers" in Ubuntu, or should I install the driver from the Nvidia site?
So which driver is the best for me?
Updated - January 25, 2020
1. The quick way
Before adding this PPA, please read the PPA's Description on their page which mentions important information about using it, which version is right for your Nvidia card and more. This is for desktop users who want the latest version of the driver or the last supported one for their card.
Using 18.04+ To install run the following command:
sudo add-apt-repository ppa:graphics-drivers/ppa
This will automatically update the repositories and then you can run the following line:
sudo apt install nvidia-driver-440
If your desktop does not load after installing the corresponding driver, then do the following:
sudo nano /etc/gdm3/custom.conf
then remove the comment (# symbol) from the line that says
# WaylandEnable=false
and save. Then reboot. If this still does not work, then please disable Secure Boot since you might actually be using UEFI.
2. Common questions regarding Nvidia
For Troubleshooting Nvidia Problems or Overclocking Settings please see this answer which covers:
- What common bugs are solved by using the latest drivers?
- My video card is not installing (Installation problems)
- Tuning and Tweaking by Video card
- Quick way of setting default screen resolution
Top questions asked about video cards discussed below:
- Can I use the latest driver on an older version of Ubuntu?
- Difference between video cards & drivers: Official Nvidia site, Ubuntu's Default, PPA & Nouveau?
- What PPAs are recommended when using any video card?
- How to know which driver or package to install?
- How to install a driver?
- Difference between Proprietary Drivers?
- How to know if my video card is supported in Ubuntu?
2.1 Can I use the latest driver on an older version of Ubuntu?
Since 12.04+, video drivers are maintained and updated more often. It is easier to handle and solve the problems that showed with older ones. You most likely won't need additional PPAs unless you have the latest Nvidia card.
2.2 Difference between video cards & drivers: Official Nvidia site, Ubuntu's Default, PPA & Nouveau
I recommend them in the following order according to problems found, how the "out of the box" experience feels to end users, how compatible they are, how easy it is to update, install or remove and how it will feel once you have it set up:
Nvidia PPA - Great Performance. It works out of the box for most cards by using the driver included in the PPA (Which are different for each generation of Nvidia cards.
Ubuntu Default Recommended Drivers - Ubuntu does an amazing job in figuring out which Nvidia driver you need depending on the card you are using.
Nouveau - This is the open source implementation of the Nvidia driver. They also do an amazing job and although they are not on par with the official drivers or the ones in the PPA (Even more so with the latest Nvidia cards), the speed of development, the commitment, dedication and advancements that they do per week, gives confident that this is in fact an option to have and promote.
Official Nvidia Site - These are the official drivers (Same as the ones in the PPA), the key difference is that they do not upgrade automatically and have some issues when updating, uninstalling and installing (Very rare but it happens).
The differences can be summed in the following points:
Official Site
- Offers the latest driver
- Installation is through the terminal
- When an update appears you have to manually download the new package
- It has more issues than any other method (Specially for Nvidia)
PPA Repositories
- Offers the latest driver hours/days after its official release
- Installation is either through terminal or GUI
- If you have a previously installed a driver it will update the package automatically
- When an update appears you will be notified to update using the Update Manager
- It is more stable and tested than the official ones
- It has less issues than using any other method (Less issues for all video cards)
- It is the 1st recommended way for Nvidia Cards.
Default Ubuntu Drivers
- For every new release the drivers get better and better
- Gets updated less frequently than a PPA
- In most cases the drivers will work out of the box (Nouveau for Nvidia)
- Not up to date when compared with the official site or a PPA
- It is by far, more tested in Ubuntu than any other way (PPA or Official)
- Easier to update
2.4 How to know which driver or package to install?
Depending on how many video cards you have and if they are integrated or not, the installation method and packages to install will change from the PPA mentioned above which is for Single Cards.
Computer with two video cards in hybrid mode
Starting with Nvidia 319.xx, both Nvidia Optimus and the common PCIe drivers are integrated into one, so if you install the Nvidia-319 package or newer, you will get the driver for the Integrated Nvidia cards and also for the PCI ones.
There are two solutions possible for hybrid cards: The first one is a package called bumblebee
, which is able to use different configurations for different applications. To install it, run:
sudo apt install bumblebee linux-headers-generic
The second one is an official NVIDIA package called nvidia-prime
, which is automatically installed together with the nvidia-355
package. It is able to decide on which card to use at profile level, i.e. when the user logs in. This decision is adjustable at NVIDIA X Server Settings Control Panel. Note that nvidia-prime
and bumblebee
are incompatible: If bumblebee
is installed then nvidia-prime
won't function correctly, and its options won't be shown at NVIDIA X Server Settings Control Panel. You'll have to 1. remove bumblebee
2. reinstall nvidia-430
in order to make it work again.
After this, it is recommended to turn off the computer and then back on.
The following picture should be seen with nvidia-prime
installed, but not necessarily when bumblebee
is also installed.
Computers with a SLI setup
If you have 2 or more video cards in SLI mode you can do the following:
-
For NVidia cards, when creating the
Xorg.conf
add the following to the line:sudo nvidia-xconfig --sli=On
Lastly, Ubuntu has a neat way of recommending which driver to use depending on your video card and drivers available (This is why I also recommend adding the PPAs first). Simply type:
ubuntu-drivers devices
It should show you a list of driver packages available for your hardware, including but not limited to the video card. If you wish to see which driver is recommended for your video card then simply type the following:
ubuntu-drivers devices | grep recommended
2.5 How to install a driver?
The method used will depend on how many video cards you have and which type of video cards you are using. The following are some of the ways of installing an Nvidia video card:
NVIDIA (old drivers that need the headers)
For Nvidia, many times you need to first install the header files of the kernel version you are using at that moment for the driver to install correctly. So you would first need to execute the following line:
sudo apt-get install linux-headers-generic
And then install the package related to the driver (nvidia* for Nvidia cards). In other cases you might need to go a little further and install the sources and specific header files, for example:
sudo apt install linux-source linux-headers-3.5.0-16-generic
which installs the linux-source
package and the specific header file assuming you have in this case the 3.5.0-16-generic
kernel version.
To check which version you have at any given time type uname -r
which should give you the specific kernel version in use.
For Nvidia, it depends on the video card and package needed for it, for the latest video cards and assuming you added the PPA mentioned above, the terminal line would be:
sudo apt install nvidia-driver-440
The number at the end would change depending on how old your video card is or how new it is (Some versions available are 390, 410, 415 and 418).
For GeForce 10, 20 and RTX series GPUs use nvidia-430
For GeForce 8 and 9 series GPUs use nvidia-340
For GeForce 6 and 7 series GPUs use nvidia-304
The latest versions bring more fixes and correct issues related to graphics corruption, HDMI support, thermal support and more for the latest Nvidia cards. Normally, updating the video drivers solves many issues.
Note that Fan Control and any other Nvidia features that are not found on the nvidia-settings
app, are not Ubuntu related, but Nvidia related. I would recommend, asking the Nvidia developers in the official Nvidia forum about features you may want to include (Fan Control, Overclocking features, etc...)
CUDA
For CUDA you can follow this link Installing and testing CUDA in Ubuntu 14.04
Bumblebee
For Bumblebee (NVIDIA Optimus) you can use the following PPA (Ubuntu 15.04+ users can optionally not do this since it is already included):
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt-get update
sudo apt-get install bumblebee linux-headers-generic
2.6 Difference between Proprietary Drivers?
Please visit Difference between Additional Drivers (Nvidia) for more information about Proprietary Drivers.
2.7 How to know if my video card is supported in Ubuntu?
Here are a couple of hints to know if your video card is supported in Ubuntu:
If the video card existed BEFORE the release of the Ubuntu version you are using, it has a 99% change it will be supported.
If the video card appeared less than 6 months AFTER the release of the Ubuntu version you are using and you kept that Ubuntu version updated, then you have a pretty good chance it will be supported.
If you added one of the PPAs I mentioned above then you have a 99.99% chance that it will be supported.
Checking the Nvidia Site or the PPA for support might yield a quicker answer, but in almost 100% of all cases, your video card will be supported either by the open source driver or by the proprietary driver.
Using the latest Ubuntu version will also improve your chances of having your latest video card supported.
In general, I make it a rule of thumb that if you have the latest video card or almost one of the latest video cards, you will need the latest drivers. So always install the latest drivers through the PPA or the Software Sources that come with Ubuntu if you have the latest Nvidia card.
NOTE - Ubuntu might show in the Graphics option in "About This Computer" the value Unknown. If this is happening, please install the mesa-utils
package.
This answer is oriented towards resolving common Nvidia bugs (Black screen, drivers not working in general, low FPS, etc...)
- What common bugs are solved by using the latest drivers?
- My video card is not installing (Installation problems)
- Tuning and Tweaking by Video card
- Quick way of setting default screen resolution
2.7.1 What common bugs are solved by using the latest drivers?
Common bugs shared by all video cards are:
- Missing Unity launcher or panel
- Missing options inside Nvidia Settings
- Desktop does not appear (Black screen)
- Top/Bottom of the screen are cut out
- Video looks cut into pieces
- Higher Resolutions are not usable (Not found)
- Video shows with VGA but not with HDMI (And Vice Versa)
- Suspend not working on Laptop when closing Lid
- Fan speed makes a lot of noise or is always at full speed
- Heat Problems
-
nvidia-xconfig
not creatingxorg.conf
correctly
If you happen to have any of this, it is a good idea to add one of the PPAs and update your video drivers to the latest they can manage. In almost all cases, the problem is solved after updating and rebooting. For these cases I also recommend using the Graphics Drivers PPA.
I also invite you to take a look at some of the related questions:
Which ATI/AMD, or Intel, or NVIDIA Graphics for Unity?
What is the correct way to install proprietary ATI Catalyst Video Drivers (fglrx) directly from AMD?
How to correctly enable Desktop Cube in Unity 3D?
Enable HDMI audio for an Nvidia card
How do I enable desktop visual effects?
NVIDIA drivers not working after upgrade. Why can I only see terminal?
Desktop does not show when I installed nvidia drivers!
Black screen on latest Nvidia/Ati Cards when starting LightDM/Ubuntu
HDMI/VGA connection cuts borders of screen or creates blurry text
/etc/X11/xorg.conf doesn't exist?
Installing latest Nvidia from Xorg PPA gives black screen
Now some pointers I want to mention:
-
For NVIDIA Cards, it also helps to create the
xorg.conf
file using thenvidia-xconfig
command line. Just go in the terminal to type the following and then reboot:sudo nvidia-xconfig
Know that if
nvidia-xconfig
throws one of the following errors you most likely need to delete the existingxorg.conf
file first before executing thenvidia-xconfig
command again:VALIDATION ERROR - It can mention section missing, incorrect information in a section, not closed sections or simply requiring at least 1 section to proceed.
WARNING - It can mention several errors in values regarding any parameter found in a section, for example not specifying explicitly a value for a parameter.
FATAL SERVER ERROR - After running
nvidia-xconfig
you can get in small cases a "no screens found" error which most likely means that the recommendations mentioned above like installing the PPA were not applied first or a possible module is still working (Either the nouveau is loading or an nvidia driver installed using the Nvidia driver package from the nvidia site.ERROR - You will get an error similar to
Unable to write to directory '/etc/X11'
if you executed thenvidia-xconfig
command without sudo. If the error persists via thenvidia-settings
you need to delete thexorg.conf
file first.
For all the cases where you need to delete the
xorg.conf
file, please make sure to backup any changes to did to it before deleting it. -
Reinstalling the driver solves several issues. For example, if you are using the
nvidia-graphics-drivers-355
driver package, then do the following to reinstall it:sudo apt-get install --reinstall nvidia-graphics-drivers-355
-
Reinstalling Xorg also helps in other cases:
-
Remove existing xorg using the following command
sudo apt-get remove --purge xserver-xorg
-
Install xorg using the following command
sudo apt-get install xserver-xorg
-
Reconfigure xorg using the following command
sudo dpkg-reconfigure xserver-xorg
After this it is recommended to reinstall the video driver if you are using Nvidia or ATI as mentioned above.
-
I have to add that if you suffer from Black Screen after installing the Nvidia drivers from the PPA and rebooting (And you don't have a Hybrid System) then your problem might be the need to remove the bumblebee package along with the bumblebee.conf file. Follow the steps provided in Installing latest Nvidia from Xorg PPA gives black screen for this or simply run the following lines:
sudo apt-get purge bumblebee primus
sudo rm -fr /etc/modprobe.d/bumblebee.conf
sudo reboot
2.7.2 My video card is not installing correctly (Installation problems)
Most installation problems related to ATI or Nvidia can be solved by following the steps provided in Can not install Nvidia driver but in short I can summarize that in the following steps assuming you have one of the following issues:
- Installed the official Nvidia drivers and have a problem updating or removing them
- Screen looks wrong/corrupted
- Unity does not load of fails to load
- Can not access the GUI environment in no way
If you have installed the official Nvidia Drivers, follow all steps below after having started Ubuntu in Recovery Mode. If not, skip to step 2:
-
If you installed the Nvidia driver from the Nvidia site or the ATI driver from the official AMD site, then type the following on the terminal (In this example assume you have the Ubuntu 64Bit with the 304.51 version of Nvidia):
sudo sh NVIDIA-Linux-x86_64-304.51.run --uninstall
If you have install any nvidia package like
nvidia-current
ornvidia-current-updates
remove them. Same goes with ATI drivers.sudo apt-get remove nvidia-current
for example.ANY change you did to blacklist the Nvidia/ATI driver for instance or changes to any other files related to the Nvidia/ATI drivers should be reversed. This is just in case you went ahead and started editing like crazy (Which happens I know ^^).
Delete or backup/move the
xorg.conf
file. You will not need this file right now.After doing all the steps above then Reboot the PC and make sure it loads with Nouveau and not with any Nvidia drivers for Nvidia cases or with ATI drivers and not with
fglrx
for Ati/AMD cases.If right now you KNOW you are running Unity with the Nouveau driver (Or ATI open source driver) or if you just happened to get a video error, or it just fails to correctly load LightDM, do not worry, all 3 options will end the same way. When rebooting, in the GRUB menu, select the "Recovery Mode". After the recovery mode shows you the recover options, choose the root option or the Failsafe X option. In this modes and after all previous steps have been done, install the Nvidia/ATI driver using the PPA I mentioned above. Always try to install the latest driver if you have a recent video card:
sudo apt-get install nvidia-430
for Nvidia cards orsudo apt-get install fglrx
for the latest Ati/AMD Cards. Remember there should not be anything installed before doing this in regards to Nvidia/ATI drivers (Except obviously the Nouveau drivers).Now reboot and all should work.
NOTE - In Step 6, if it looks as though the PC is stuck loading just press CTRL+ALT+F1 to go to the TTY1 terminal and do step 6 from there.
Other common installation problems involve resolution. You can check and change the resolution via terminal in the following way:
Open the terminal and type
xrandr
this will show you all possible supported resolutions (This depends on your video card and monitor/tv). Take note on the order they appear listed. The first line that shows the resolution is line 1, the next one is 2 and so on for all resolutions supported. A value of 0 will reset the resolution to the default one after you actually set a resolution.-
Type
xrandr -s X
where X is the line number as mentioned above. So it would look something like:xrandr -s 1
.Lastly for users that have reported not seeing the Unity Launcher/Panel after updating the Kernel and/or Nvidia version, the first thing to do is to check if the Unity Plugin is enabled. For this go to the Compiz Config Settings Manager (Am assuming it is already installed) and go to the Unity Plugin. Check to see that the checkbox for it is activated. If not then activate this option and follow the on-screen suggestions.
2.7.3 Tuning and tweaking my video card
For Nvidia Video Cards follow these steps:
In the terminal type:
sudo nano /etc/X11/xorg.conf
-
Find the device section and add the following line:
Option "Coolbits" "4"
it should look something like this:
Section "Device"
Identifier "Device0"
Driver "nvidia"
VendorName "NVIDIA Corporation"
Option "Coolbits" "4"
EndSection
Now save and reboot. You should now see (Depending on your video card model) a new option about Fan Speed like this:
A brief explanation of CoolBits:
CoolBits enables various unsupported features, such as support for GPU clock manipulation in the NV-CONTROL X extension. This option accepts a bit mask of features to enable. Which means a value of 0, 1, 2 or 4.
CoolBits = 1 - When "1" (Bit 0) is set in the "Coolbits" option value, the nvidia-settings
utility will contain a page labeled "Clock Frequencies" through which clock settings can be manipulated. "Coolbits" is only available on GeForce FX and Above.
CoolBits = 2 - When "2" (Bit 1) is set it will attempt to initialize SLI when using GPUs with different amounts of video memory.
CoolBits = 4 - When "4" (Bit 2) is set the Thermal Monitor page will allow configuration of GPU fan speed, on graphics boards with programmable fan capability.
The default option is 0 (unsupported features are disabled).
As of Nvidia 337.XX the following options are available:
CoolBits = 8 - When "8" (Bit 3) is set the PowerMizer page in the nvidia-settings
control panel will display a table that allows setting per-clock domain and per-performance level offsets to apply to clock values. This is allowed on certain GeForce GPUs in the GeForce GTX 400 series and later. Not all clock domains or performance levels may be modified.
CoolBits = 12 - When "12" (Bit 3 + 2) this will be the same as activating the effects of Coolbits 8 + Coolbits 4. So you will get the new overclocking features and fan control.
This options can also be activated by issuing the following command:
nvidia-xconfig --cool-bits=4
WARNING: this may cause system damage and void warranties.
I also want to add that the information for Proprietary drivers is typically saved in the home folder. For example, the information saved by nvidia-settings
is stored in ~/.nvidia-settings-rc
which you can access by typing the following:
nano ~/.nvidia-settings-rc
I mention this because if the xorg.conf
is not used, then how do the settings for ATI or Nvidia work? The reason is that X can automatically detect and configure many options of xorg.conf
like input/output devices and Video cards. This did not happen automatically before, but since 2010, X can handle many options and detect them without any problems or the need to configure a file for them.
Note that, many of these are still present but divided into more specific files in /usr/share/X11/xorg.conf.d/
For example, some video cards do not show the Unity Launcher or top panel unless xorg.conf
is present. In other cases, users that want to tweak their video card, may need the Coolbits option which is added to xorg.conf. These are the reasons why nvidia-xconfig
exists. To provide an additional level of support in case X does not detect or offer all the options for the video card.
Another trick is to run update-pciids
so it updates the PCI Id List. On very rare cases, the ID is not found or detected incorrectly for the video card (Actually any PCI device) so this will help solve any problem related to it.
In some cases it also helps to change the Texture Filter value to Fast in the OpenGL Plugin inside the Compiz Config Settings Manager.
Lastly, changing the Image Settings options to "High Performance" in the OpenGL Settings of the Nvidia Settings Panel can help in some cases.
2.7.4 Quick way of setting default screen resolution
I have read and done some of the tips about using xrandr
or editing the xorg.conf
file, but the quickest way that I found was literally editing the ~/.config/monitors.xml
file and changing the resolution around lines 15 to 18 (The ones that mention Width, Height and Rate). So set the correct Width, Height and Rate and reboot to test this. This is only to set the default resolution you wish to see once the computer starts.
First of all you should identify your NVIDIA graphics hardware - so open a terminal and execute:
lspci -k | grep -EA2 'VGA|3D'
The following options should not all be taken.
Stop when you reach what you want to achieve.
The higher the number the more complex (and less stable) the solution.
Option 1 - Check for NVIDIA drivers available in the official Ubuntu repositories:
apt-cache search nvidia
Option 2.1 - Check for NVIDIA drivers available on Launchpad:
Proprietary GPU drivers PPA
Option 2.2 - To include the latest NVIDIA drivers - add the repository to software sources:
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt-get update
Search for drivers ... you will see a list of drivers ... the version at the bottom is the newest one:
apt-cache search nvidia | grep -oE "nvidia-[0-9]{1,3}"
Option 3 - Search for drivers available on NVIDIA website:
NVIDIA GPU drivers releases
Then follow these steps :
Step 1.1 - Select the NVIDIA drivers you want to use and execute:
sudo apt-get install nvidia-<version_number>
Step 1.2 - In case the NVIDIA GPU has Optimus support execute:
sudo apt-get install nvidia-prime
Step 2 - To finish the drivers installation process execute:
sudo reboot
Additional information:
Supported NVIDIA GPU products
NVIDIA GPU drivers release information
NVIDIA support timeframes for legacy GPU releases
Install the driver:
sudo apt-get update
sudo apt-get install nvidia-current
sudo apt-get update
Install mesa-utils
to display graphics info:
sudo apt-get install mesa-utils
glxinfo | grep OpenGL
Restart the computer:
sudo shutdown -r now
Resolving problems:
Configure a /etc/X11/xorg.conf
file to get all resolutions. Info about configuring xorg.conf Use gtf to create a mode line
Making a file called xorg.conf
and putting it in /etc/X11
. X will read the config file and try to accept your statements. It will then auto config anything you don't explicitly say.
Running nvidia-xconfig
creates a fishbone with basic configuration. Similar commands for other binary drivers may exist.
sudo service lightdm stop
sudo X -configure
sudo mv xorg.conf.new /etc/X11/xorg.conf
sudo start lightdm
This will create xorg.conf.new file in your current dir. Now you should do the following:
- kill x server
- generate a new xorg.conf file
- rename and move
- return to GUI
Better GUI (arandr) for manipulating resolutions etc:
sudo apt-get update
sudo apt-get install arandr
You don’t need to use command line nor software centre to install NVIDIA drivers (also its best not to install it this way because sometimes you may boot to black screen.).
Ubuntu comes with NVIDIA drivers pre-configured (but not installed), all you need to do is:
Open dash
Search and launch Additional Drivers, wait for it to search, then select the driver you want to install. It comes with 2 drivers, one is open source Nouveau and proprietary from NVIDIA.
Select the driver, press Apply Changes and wait. It may require some time and internet connection for it to download and install it for you.
Now reboot.
I have selected the proprietary drivers
The recommended way is to install the drivers from Ubuntu repositories.
Now all Nvidia adapters are supported by the drivers included in Ubuntu repositories. But this was not always the case and in the future some new adapters may appear that will not be supported by the Ubuntu official drivers for a while.
In most cases the system picks the correct driver in
System Settings -> Software & Updates -> Additional drivers.
First of all you need to find the model of your GPU.
Run in terminal lspci -k | grep -EA2 'VGA|3D'
and you will get something like
01:00.0 VGA compatible controller: NVIDIA Corporation GF116 [GeForce GTX 550 Ti] (rev a1)
Subsystem: Gigabyte Technology Co., Ltd Device 351a
Kernel driver in use: nvidia
So, the model is GeForce GTX 550 Ti
and some Nvidia proprietary driver is installed.
If the open source driver is in use, you will see
Kernel driver in use: nouveau
To check which proprietary driver is installed run:
dpkg -l | grep nvidia
The package marked with ii
is installed.
You can check which driver version support this adapter at
Nvidia drivers site
For example my card is supported by 340, 346, 349, 352 and 355 major versions.
Now Ubuntu repositories have 340 and 352 driver versions for this adapter. It makes sense to install the 352.
It can be done from GUI as mentioned above or by running
sudo apt-get install nvidia-352
If your adapter is not supported by any driver from the official repositories, or you want to try the very latest one, you can install a driver from ppa.
Hybryd graphics
If you have a laptop with an Intel CPU, in most cases you will have also an Intel adapter that is built in CPU.
In this case you will have to install nvidia-prime
package too. But if you install from the official repositories, it will be installed automatically.
Then you will be able to switch adapters in Nvidia X Server Settings
(PRIME Profiles).
Or you can do it in terminal.
-
sudo prime-select nvidia
will switch to the Nvidia adapter. -
sudo prime-select intel
will switch to the Intel adapter. -
prime-select query
will show the current state.
You will need to log off and log on to apply the setting.
New adapters that are not supported by the nouveau driver
You may face a situation that you have a very new Nvidia adapter that is poorly supported by the open source nouveau driver.
In this case your system may be unable to boot to GUI.
You can refer to this answer and boot with nomodeset
parameter. You will have to boot the system this way when you boot from LiveUSB, then install Ubuntu.
After you install Ubuntu, you will need to boot with nomodeset
again and install the proper Nvidia driver.
When you boot in UEFI mode, that F6
option does not appear. In that case you will need to get to grub menu, press e
and type in nomodeset
manually.