Ubuntu – Ubuntu 17.10 won’t use nvidia drivers, but uses nouveau instead

17.10driversgraphicsnvidiaproprietary

I'm running Ubuntu 17.10 for a while now. I have a Lenovo Ideapad 510-15ISK with a Nvidia Geforce 940MX and some Intel integrated graphics card. This was working fine with Dota 2, which I play. I had installed the Nvidia Proprietary drivers 384.111.

But suddenly I noticed when playing Dota 2 that the framerate was decreased a lot, from a steady 100 to about 30 – 40. I of course assumed there was a driver issue. So I found out that the Nvidia drivers weren't used anymore but the nouveau drivers instead:

03:00.0 3D controller: NVIDIA Corporation GM108M [GeForce 940MX] (rev a2)
Subsystem: Lenovo GM108M [GeForce 940MX]
Flags: bus master, fast devsel, latency 0, IRQ 11
Memory at 93000000 (32-bit, non-prefetchable) [size=16M]
Memory at 80000000 (64-bit, prefetchable) [size=256M]
Memory at 90000000 (64-bit, prefetchable) [size=32M]
I/O ports at 3000 [disabled] [size=128]
Expansion ROM at <ignored> [disabled]
Capabilities: <access denied>
Kernel modules: nvidiafb, nouveau

I found out that 'nvidiafb' is not the Nvidia Proprietary driver.

However, when I look in 'Software & Updates', it states that I'm using the proprietary drivers. See this screenshot: nvidia drivers

As you can see in the screenshot, I've changed driver versions. I've already tried purging all nvidia drivers and reinstalling. I've used both 384.111 and 390.12, but in all cases, my Ubuntu installation still uses the nouveau drivers instead.

Also I've tried to add the nouveau drivers to the blacklist, but that won't make a difference.

What could be the problem? How can I make Ubuntu use the proprietary drivers again? Hopefully I gave enough information, let me know if I need to give more information.

(Probably, because of this, the Nvidia X Server application won't start.)

Best Answer

A common problem is not loading the correct kernel module. You have that very issue (see follows):

Kernel modules: nvidiafb, nouveau

Please follow the advice of

Elder_Geek

in the original article on this subject: Install Nvidia driver instead of nouveau

0) Download the current NVIDIA driver

1) shutdown your login manager with Ctrl+Alt+F1, and type in

sudo service lightdm stop

2) blacklist the non-proprietary drivers by editing /etc/modprobe.d/blacklist.conf

blacklist nouveau
blacklist nvidiafb

3) remove the existing nvidia drivers and purge any old status and module entries

sudo apt-get remove --purge nvidia-*

4) rebuild your current kernel

sudo update-initramfs -u

5) reboot

6) install your new NVIDIA driver from the commandline: exit the login-screen and stop the x-server [see step (1)], run your NVIDIA-downloaded driver, install the driver, and reboot

7) execute lshw -c video and modprobe nvidia to make sure the correct kernel module is running:

modinfo nvidia
filename:       /lib/modules/4.13.0-36-generic/kernel/drivers/video/nvidia.ko
alias:          char-major-195-*
version:        390.25
supported:      external
license:        NVIDIA
srcversion:     B5B1CA3087B567ADFADC070
alias:          pci:v000010DEd00000E00sv*sd*bc04sc80i00*
alias:          pci:v000010DEd*sv*sd*bc03sc02i00*
alias:          pci:v000010DEd*sv*sd*bc03sc00i00*
depends:        ipmi_msghandler
name:           nvidia
vermagic:       4.13.0-36-generic SMP mod_unload 
parm:           NVreg_Mobile:int
parm:           NVreg_ResmanDebugLevel:int
parm:           NVreg_RmLogonRC:int
parm:           NVreg_ModifyDeviceFiles:int
parm:           NVreg_DeviceFileUID:int
parm:           NVreg_DeviceFileGID:int
parm:           NVreg_DeviceFileMode:int
parm:           NVreg_UpdateMemoryTypes:int
parm:           NVreg_InitializeSystemMemoryAllocations:int
parm:           NVreg_UsePageAttributeTable:int
parm:           NVreg_MapRegistersEarly:int
parm:           NVreg_RegisterForACPIEvents:int
parm:           NVreg_CheckPCIConfigSpace:int
parm:           NVreg_EnablePCIeGen3:int
parm:           NVreg_EnableMSI:int
parm:           NVreg_TCEBypassMode:int
parm:           NVreg_UseThreadedInterrupts:int
parm:           NVreg_EnableStreamMemOPs:int
parm:           NVreg_EnableBacklightHandler:int
parm:           NVreg_EnableUserNUMAManagement:int
parm:           NVreg_EnableIBMNPURelaxedOrderingMode:int
parm:           NVreg_MemoryPoolSize:int
parm:           NVreg_IgnoreMMIOCheck:int
parm:           NVreg_RegistryDwords:charp
parm:           NVreg_RegistryDwordsPerDevice:charp
parm:           NVreg_RmMsg:charp
parm:           NVreg_AssignGpus:charp

lshw -c video

  *-display
       description: VGA compatible controller
       product: NVIDIA Corporation
       vendor: NVIDIA Corporation
       physical id: 0
       bus info: pci@0000:04:00.0
       version: a1
       width: 64 bits
       clock: 33MHz
       capabilities: vga_controller bus_master cap_list rom
       configuration: driver=nvidia latency=0
       resources: irq:64 memory:f2000000-f2ffffff memory:e0000000-efffffff memory:f0000000-f1ffffff ioport:2000(size=128) memory:c0000-dffff

If the entries license, name and configuration: driver are for you the same as they are here, all went well and the proprietary driver is running.