Ubuntu – How to install the Nvidia drivers

drivershybrid-graphicsnvidia

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?

Best Answer

  • 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:

    1. What common bugs are solved by using the latest drivers?
    2. My video card is not installing (Installation problems)
    3. Tuning and Tweaking by Video card
    4. Quick way of setting default screen resolution

    Top questions asked about video cards discussed below:

    1. Can I use the latest driver on an older version of Ubuntu?
    2. Difference between video cards & drivers: Official Nvidia site, Ubuntu's Default, PPA & Nouveau?
    3. What PPAs are recommended when using any video card?
    4. How to know which driver or package to install?
    5. How to install a driver?
    6. Difference between Proprietary Drivers?
    7. 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...)

    1. What common bugs are solved by using the latest drivers?
    2. My video card is not installing (Installation problems)
    3. Tuning and Tweaking by Video card
    4. 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 creating xorg.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 the nvidia-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 existing xorg.conf file first before executing the nvidia-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 the nvidia-xconfig command without sudo. If the error persists via the nvidia-settings you need to delete the xorg.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:

      1. Remove existing xorg using the following command

        sudo apt-get remove --purge xserver-xorg
        
      2. Install xorg using the following command

        sudo apt-get install xserver-xorg
        
      3. Reconfigure xorg using the following command

        sudo dpkg-reconfigure xserver-xorg
        
      4. 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:

    1. 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
      
    2. If you have install any nvidia package like nvidia-current or nvidia-current-updates remove them. Same goes with ATI drivers. sudo apt-get remove nvidia-current for example.

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

    4. Delete or backup/move the xorg.conf file. You will not need this file right now.

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

    6. 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 or sudo 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).

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

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

    2. 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:

    1. In the terminal type: sudo nano /etc/X11/xorg.conf

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

  • Related Question