So I was updating and installing everything on my new dual-boot setup and noticed that Info Center (or something with its icon) was pushing me to install rtl8812au-dkms for my WiFi even though I had the one from gnab/rtl8812au already installed and working. My question is what's the difference between the two and should I install one over the other?

up vote 7 down vote accepted

The biggest difference between a dkms driver, and non-dkms drivers, is that dkms drivers will automatically rebuild themselves whenever you do a Software Update and the Ubuntu kernel gets updated. Non-dkms drivers usually stop working after a kernel upgrade, and will require a manual recompile and re-installation.

To see if you're running a dkms driver version, or not, use this terminal command...

dkms status

You'll see something like this...

r8168, 8.046.00, 4.15.0-36-generic, x86_64: installed
rtl8812au, 5.2.20, 4.15.0-34-generic, x86_64: installed
rtl8812au, 5.2.20, 4.15.0-36-generic, x86_64: installed
rtl8814au, 4.3.21, 4.15.0-34-generic, x86_64: installed
rtl8814au, 4.3.21, 4.15.0-36-generic, x86_64: installed

To manually determine if you're running a dkms version, look in /usr/src and see if you see a folder of the driver software, and if it contains a dkms.conf file, then it's a dkms driver.

~$ ls /usr/src/rtl8812au-5.2.20
clean      hal          Kconfig   platform               regdb
core       ifcfg-wlan0  Makefile  README.md              runwpa
dkms.conf  include      os_dep    Realtek_Changelog.txt  wlan0dhcp

Another difference could be that the github driver patches an error, or adds more hardware compatibility. Check the version info in the README file on github.

Update #1:

  1. The Synaptic rtl8812au-dkms driver version is 4.3.8.12175 from 2014.

    • this requires a modification to the make command in dkms.conf to:

      MAKE="'make' KVER=${kernelver}"

  2. The gnab/rtl8812au driver version is based on 4.2.2 from 2013.

  3. A better/newer rtl8812au version is here and it's version 5.2.20.

  • In addition to @heynnema 's excellent answer, as newer devices are shipped, their repective usb.ids are added to later versions of the driver. Therefore, a device that was released in 2016 would not be driven by the circa-2013 driver version 4.2.2. Also, the older versions will likely not compile properly on later, i.e. 4.15.0-xx kernels. – chili555 Oct 18 at 14:58
  • Is dkms working in rtl8812au-dkms? – Jeremy31 Oct 22 at 11:36
  • @Jeremy31 I don't understand your question. Please elaborate. – heynnema Oct 22 at 13:16
  • It had the issue with dkms.conf causing the new module to be built on the old headers which caused exec format error, vermagic didn't match the kernel – Jeremy31 Oct 22 at 14:45
  • @Jeremy31 Change the make command in dkms.conf to MAKE="'make' -j$PROCS_NUM KVER=${kernelver} KSRC=/lib/modules/${kernelver}/build", or even MAKE="'make' KVER=${kernelver}" should do. I'd use the newer version anyway. – heynnema Oct 24 at 22:13

Your Answer

 

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.