Getting a driver (rtl8812au) to load against a Linksys WUSB6400M dongle

I purchased a Linksys WUSB6400M dongle. From what I read, the rtl8812au module is correct. I installed the module from the main update repo. The trl8812au-preempt package was installed also as well as a kernel-preempt-devel if I remember correctly. When I modprobe it, I am given the following message:


  225.239241] 8812au: loading out-of-tree module taints kernel.
  225.240745] 8812au: module verification failed: signature and/or required key missing - tainting kernel
  225.252202] usbcore: registered new interface driver rtl8812au 

The module loads, but is shown as “used by 0” when I lsmod. It is not being associated to the dongle.
When I insert the dongle with the driver already loaded, I get:


 1827.738918] usb 1-3: new high-speed USB device number 17 using xhci_hcd
 1827.890838] usb 1-3: New USB device found, idVendor=13b1, idProduct=0043, bcdDevice= 2.10
 1827.890843] usb 1-3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
 1827.890847] usb 1-3: Product: WUSB6400M
 1827.890849] usb 1-3: Manufacturer: Linksys

I have added a file to /etc/modules-load.d to have it load during boot and rebuilt the inirtd. I’ll post back if it works, but I suspect that I am missing something.

Please post:

zypper se -si rtl8812 kernel
modprobe -c | grep -i "13b1.\+0043"
uname -a

Here is the info:


S  | Name                      | Type    | Version                                                 | Arch   | Repository
---+---------------------------+---------+---------------------------------------------------------+--------+-----------------------
i+ | kernel-default            | package | 5.3.18-lp152.20.7.1                                     | x86_64 | Main Update Repository
i  | kernel-default-devel      | package | 5.3.18-lp152.20.7.1                                     | x86_64 | Main Update Repository
i+ | kernel-devel              | package | 5.3.18-lp152.20.7.1                                     | noarch | Main Update Repository
i+ | kernel-firmware           | package | 20200610-36.3                                           | noarch | (System Packages)
i+ | kernel-firmware-amdgpu    | package | 20200610-36.5                                           | noarch | (System Packages)
i+ | kernel-firmware-ath10k    | package | 20200610-36.5                                           | noarch | (System Packages)
i+ | kernel-firmware-bluetooth | package | 20200610-36.5                                           | noarch | (System Packages)
i+ | kernel-firmware-radeon    | package | 20200610-36.5                                           | noarch | (System Packages)
i+ | kernel-firmware-realtek   | package | 20200610-36.5                                           | noarch | (System Packages)
i+ | kernel-macros             | package | 5.3.18-lp152.20.7.1                                     | noarch | Main Update Repository
i  | kernel-preempt-devel      | package | 5.3.18-lp152.20.7.1                                     | x86_64 | Main Update Repository
i+ | kernel-source             | package | 5.3.18-lp152.20.7.1                                     | noarch | Main Update Repository
i  | kernel-syms               | package | 5.3.18-lp152.20.7.1                                     | x86_64 | Main Update Repository
i+ | rtl8812au                 | package | 5.6.4.2+git20200318.49e98ff-lp152.1.16                  | x86_64 | Main Repository
i+ | rtl8812au-debugsource     | package | 5.6.4.2+git20200318.49e98ff-lp152.1.16                  | x86_64 | Debug Repository
i+ | rtl8812au-kmp-default     | package | 5.6.4.2+git20200318.49e98ff_k5.3.18_lp152.18-lp152.1.16 | x86_64 | Main Repository

The modprobe grep came up empty

uname -a provided:


Linux localhost.localdomain 5.3.18-lp152.20.7-default #1 SMP Mon Jun 29 14:58:38 UTC 2020 (2a0430f) x86_64 x86_64 x86_64 GNU/Linux

I found the solution. I removed the Yast installed driver and installed the driver from git source. Still didn’t work. I searched the source files for the mac address 13b1:0043 and came to a file that referenced that 0043 required rtl8822bu driver:


 
/*=== Customer ID ===*/

 	{USB_DEVICE_AND_INTERFACE_INFO(0x13b1, 0x0043, 0xff, 0xff, 0xff), .driver_info = RTL8822B}, /* Alpha - Alpha*/  

I installed it from source. The dongle now works, although the LED does not.

There was not a DKMS install option, so I guess I’ll have to rebuild it every time there is a kernel upgrade?

I have an additional problem. The module works, but the way the source was made, there is no way to install it into the kernel. There is no “make install” available in the makefile. Every boot, I have to navigate to the source folder and run:


modprobe cfg80211
insmod rtl8822bu.ko 

I am not familiar enough with working with the kernel to know how to possibly get the module to be installed.

Modules are installed with “make modules_install”, modules_install target is defined by main kernel Makefile.

You can try this Repo:
https://download.opensuse.org/repositories/home:/Sauerland:/hardware/openSUSE_Leap_15.2_Update/
and you will get a new Version after a new kernel is published.

Install rtl8822bu-kmp-default

Thank you. I added your repo and all is well. On your driver description page, it is safe for you to add Linksys WUSB6400M AC1200 dongle as a card for which it will work. Everything works, including the LED.
Due to the git driver requirements, I added a stanza to /etc/NetworkManager/NetworkManager.conf and have not removed it:


[device]
wifi.scan-rand-mac-address=no

I also left cfg80211.conf within /etc/modules-load.d

On your driver description page, it is safe for you to add Linksys WUSB6400M AC1200 dongle as a card for which it will work.

Done.

But the name is not important, the ID is the important thing:

1827.890838] usb 1-3: New USB device found, idVendor=13b1, idProduct=0043, bcdDevice= 2.10

And that command is searching for that ID:

modprobe -c | grep -i "13b1.\+0043"

If it finds a Kernel Module (driver) with the ID inside, it will show the name, if it finds nothing, nothing will be shown…

ich@linux64:~> /sbin/modprobe -c | grep -i "13b1.\+0043"
alias usb:v13B1p0043d*dc*dsc*dp*icFFiscFFipFFin* rtl8822bu
ich@linux64:~> 

I have an additional question. I am trying to install the same on my Lenovo laptop. The solver is forcing me to install kernel-preempt, when only kernel-preempt-devel is installed on my primary computer. Is that unusual? I am not sure about the practice of having multiple kernels. All repos are identical between the two machines.

I found my answer to the last question. I also installed rtl8822bu-preempt by mistake. I removed it and the preempt kernel.
One more problem. On my laptop, dmesg tells me that unsigned module loading is restricted and that the kernel locked it out. It associated to the dongle, but the kernel-default won’t allow it to load.

Show actual message or better full dmesg output.

Per your request:


  196.328000] usb 1-1.4.3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
  196.328005] usb 1-1.4.3: Product: WUSB6400M
  196.328009] usb 1-1.4.3: Manufacturer: Linksys
  196.328013] usb 1-1.4.3: SerialNumber: 123456
  197.203538] Lockdown: systemd-udevd: unsigned module loading is restricted; see man kernel_lockdown.7

This was dmesg output after I inserted the dongle. rtl8822bu driver is installed and modprobe sees that it is correct for my dongle, but the kernel sees it as unsigned and won’t allow it to load, if I am reading it correctly.
It was also requested that I ran a modprobe command to see if the system is identifying the dongle and correct driver. It is"


Lenovo:/home/ronnie # modprobe -c | grep -i "13b1.\+0043"
alias usb:v13B1p0043d*dc*dsc*dp*icFFiscFFipFFin* rtl8822bu

Full dmesg output would have shown also reason for lockdown, but I am sure it is UEFI Secure Boot. SUSE kernel will enforce signed modules if you boot with Secure Boot enabled. There is no way to override it. So the options are

  1. Disable Secure Boot.
  2. Ask maintainer of repository to sign modules during build. They will be signed by repository key and you can enroll this key using mokutil, so kernel will trust it and accept modules signed by this key. It is even possible to submit enrollment request as part of KMP installation like is done for kernel.

I posted exactly what dmesg showed after I plugged the dongle. Nothing was left out.
It’s actually no longer necessary to troubleshoot this. I was forced to do a fresh install of Windows 10, because it refused to activate. Windows didn’t like my partition scheme, so I also deleted my openSUSE partitions and started over. Whatever happened before must have been a fluke. The dongle is apparently working correctly now. I’ve still got to get to KDE or Mate to actually check it out, but dmesg now shows the driver is loaded and registered.