I have recently got my new System76 Gazelle Professional (GazP6) laptop, with the powerful GeForce GTX 560M video card. Even though I am doing most of the work in Ubuntu, and the drivers come preinstalled in Ubuntu, still I need to dual boot in Windows to work with some programs that simply don't perform very well in virtualization softwares.

The problem is that when running the NVIDIA driver Install Program I get the error:
NVIDIA Installer cannot continue This graphics driver could not find compatible graphics hardware
The reason for this error is that the specific device ID for my graphics card does is not present in any of the INF setup files. The workaround to this problem is to manually add the graphics card ID in any of the .inf files from the driver installation resources, so that the installation can start and install the driver. Follow the subsequent steps:

  • Get your device ID: click on Control Panel, then click on System, then click on Device Manager
  • Under Other Devices/ (or if your video card already has a driver under Display Adapter) click on Video Adapter
  • Click on Details, Device Instance Id should already be selected
  • You will see something similar to this: PCIVEN_10DE&DEV_1251&SUBSYS_51021558&REV_A1 4&30DE1B . This has the detail about your specific video card maker, chipset and model. VEN_10DE shows that the vendor is 10DE, which is nVidia; DEV_1251 tells that the chipset is 1251, that is the chipset GTC 560M; SUBSYS_51021558 means that this is the specific chipset on the current system configuration.
  • If you haven't got the nVidia driver installtion, do so from the official nVidia website. If you try to install the driver and get the "This graphics driver could not find compatible graphics hardware" error, proceed to the next step. Else, install the driver normally.
  • Go to the install directory. This is usually a new folder created by the installation on the disk where windows is installed. On my system it is C:/NVIDIA/DisplayDriver/275.33/Vista 64-bit/International/Display.Driver
  • In this folder you will find many INF files, such as nvaa.inf , nvac.inf , nvam.inf , etc.
  • Choose any one of them (I picked nvam.inf) and make a backup copy of the original, then open the original in a text editor (notepad for example).
  • Scroll down until you see lines like:

    [NVIDIA_SetA_Devices.NTamd64.6.1]
    %NVIDIA_DEV.0405.01% = Section002, PCIVEN_10DE&DEV_0405&SUBSYS_15D21043
    %NVIDIA_DEV.0405.02% = Section002, PCIVEN_10DE&DEV_0405&SUBSYS_16341043
    %NVIDIA_DEV.0407.01% = Section004, PCIVEN_10DE&DEV_0407&SUBSYS_15881043
    %NVIDIA_DEV.0407.02% = Section006, PCIVEN_10DE&DEV_0407&SUBSYS_16181043
    %NVIDIA_DEV.0407.03% = Section008, PCIVEN_10DE&DEV_0407&SUBSYS_16321043
    %NVIDIA_DEV.0407.04% = Section002, PCIVEN_10DE&DEV_0407&SUBSYS_17A21043
    %NVIDIA_DEV.0408.01% = Section002, PCIVEN_10DE&DEV_0408&SUBSYS_19021043
    %NVIDIA_DEV.0409.01% = Section002, PCIVEN_10DE&DEV_0409&SUBSYS_15841043
    %NVIDIA_DEV.0409.02% = Section006, PCIVEN_10DE&DEV_0409&SUBSYS_16191043

    These files are for the most part listed BY the four digit HEXidecimal number that appears after DEV.
  • NOW CAREFULLY scroll down to the section that is similar to your chipset / DEV number

    %NVIDIA_DEV.1050.06% = Section066, PCIVEN_10DE&DEV_1050&SUBSYS_17221043
    %NVIDIA_DEV.1050.08% = Section067, PCIVEN_10DE&DEV_1050&SUBSYS_17421043
    %NVIDIA_DEV.0862.01% = Section032, PCIVEN_10DE&DEV_0862&SUBSYS_16C21043
  • Take a look at this pattern. You will create a DEVICE ID for your Video Adapter and insert it here.
    The first part is the same for everyone:
    %NVIDIA_DEV.
    From Step 4 my DEV is 1251 so my device id so far is:
    %NVIDIA_DEV.1251.01%
    NOTE:
    If there is already DEVs same as yours then your line will be the next increment i.e.:
    %NVIDIA_DEV.1251.02%, or %NVIDIA_DEV.1251.03%, etc
    For the section just make it the same as the section where you're inserting it so I have:
    %NVIDIA_DEV.1251.01% = Section067,
    The next part is the same for everyone so you will have:
    %NVIDIA_DEV.1251.01% = Section067, PCIVEN_10DE&DEV_
    Add the rest (your DEV and SUBSYS numbers) so it matches your DEVICE ID and your finished device ID should look similar to this:
    %NVIDIA_DEV.1251.01% = Section067, PCIVEN_10DE&DEV_1251&SUBSYS_
    51021558
  • NOW SCROLL DOWN to the [Strings] section it will look like this:

    [Strings]
    DiskID1 = "NVIDIA Windows Vista / Windows 7 (64 bit) Driver Library Installation Disk 1"
    NVIDIA = "NVIDIA"
    NVIDIA_A = "NVIDIA"
    NVIDIA_DEV.0405.01 = "NVIDIA GeForce 9500M GS"
    NVIDIA_DEV.0405.02 = "NVIDIA GeForce 9500M GS"
    NVIDIA_DEV.0407.01 = "NVIDIA GeForce 8600M GT"
    NVIDIA_DEV.0407.02 = "NVIDIA GeForce 8600M GT"
    NVIDIA_DEV.0407.03 = "NVIDIA GeForce 8600M GT"
    NVIDIA_DEV.0407.04 = "NVIDIA GeForce 8600M GT"
    NVIDIA_DEV.0408.01 = "NVIDIA GeForce 9650M GS"
    NVIDIA_DEV.0409.01 = "NVIDIA GeForce 8700M GT"

    Same as before add a line in for your own Video Card:

    NVIDIA_DEV.0DF4.04 = "NVIDIA GeForce GT 540M"
    NVIDIA_DEV.0DF6.01 = "NVIDIA GeForce GT 550M"
    NVIDIA_DEV.1050.01 = "NVIDIA GeForce GT 520M"
    NVIDIA_DEV.1050.06 = "NVIDIA GeForce GT 520M"
    NVIDIA_DEV.1050.08 = "NVIDIA GeForce GT 520M"
    NVIDIA_DEV.1251.01 = "NVIDIA GeForce GTX 560M"
  • Save the INF file you have just edited.
  • If you have the file ListDevices.txt open it and add a line under the appropriate section
  • GO back and manually run setup.exe from where the NVIDIA files where extracted
    NOTE: DO NOT RERUN THE DOWNLOADED APPLICATION OR YOUR WILL OVERWRITE EVERYTHING YOU'VE JUST CHANGED!
    For Example Your setup program may be here:

    C:/NVIDIA/DisplayDriver/275.33/Vista 64-bit/International/setup.exe

So now your drivers will be installed and you will be able to enjoy your graphic card's performance.