Some trouble getting external WIFI device to install for kernel 6.12

While installing the most recent stable update, the external WIFI device failed for kernel 6.12. It worked for 6.6. The failure reads:

==> dkms install --no-depmod rtl8814au/5.8.5.1.r206.gb1866ce -k 6.6.148-1-MANJARO
Deprecated feature: CLEAN (/usr/src/rtl8814au-5.8.5.1.r206.gb1866ce/dkms.conf)
==> dkms install --no-depmod rtl8814au/5.8.5.1.r206.gb1866ce -k 6.12.101-1-MANJARO
Deprecated feature: CLEAN (/var/lib/dkms/rtl8814au/5.8.5.1.r206.gb1866ce/source/dkms.conf)

Error! Bad return status for module build on kernel: 6.12.101-1-MANJARO (x86_64)
Consult /var/lib/dkms/rtl8814au/5.8.5.1.r206.gb1866ce/build/make.log for more information.
==> WARNING: `dkms install --no-depmod rtl8814au/5.8.5.1.r206.gb1866ce -k 6.12.101-1-MANJARO' exited 10

The part of /var/lib/dkms/rtl8814au/5.8.5.1.r206.gb1866ce/build/make.log that appears to have errored is:

/var/lib/dkms/rtl8814au/5.8.5.1.r206.gb1866ce/build/os_dep/linux/ioctl_cfg80211.c:10016:32: error: initialization of ‘int (*)(struct wiphy *, struct net_device *, struct cfg80211_chan_def *)’ from incompatible pointer type ‘int (*)(struct wiphy *, struct cfg80211_chan_def *)’ [-Wincompatible-pointer-types]
10016 |         .set_monitor_channel = cfg80211_rtw_set_monitor_channel,
      |                                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/var/lib/dkms/rtl8814au/5.8.5.1.r206.gb1866ce/build/os_dep/linux/ioctl_cfg80211.c:10016:32: note: (near initialization for ‘rtw_cfg80211_ops.set_monitor_channel’)
/var/lib/dkms/rtl8814au/5.8.5.1.r206.gb1866ce/build/os_dep/linux/ioctl_cfg80211.c:6073:12: note: ‘cfg80211_rtw_set_monitor_channel’ declared here
 6073 | static int cfg80211_rtw_set_monitor_channel(struct wiphy *wiphy
      |            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  CC [M]  /var/lib/dkms/rtl8814au/5.8.5.1.r206.gb1866ce/build/hal/hal_com.o
make[3]: *** [scripts/Makefile.build:229: /var/lib/dkms/rtl8814au/5.8.5.1.r206.gb1866ce/build/os_dep/linux/ioctl_cfg80211.o] Error 1
make[3]: *** Waiting for unfinished jobs....
make[2]: *** [/usr/lib/modules/6.12.101-1-MANJARO/build/Makefile:1967: /var/lib/dkms/rtl8814au/5.8.5.1.r206.gb1866ce/build] Error 2
make[1]: *** [Makefile:224: __sub-make] Error 2
make[1]: Leaving directory '/usr/lib/modules/6.12.101-1-MANJARO/build'
make: *** [Makefile:2408: modules] Error 2

# exit code: 2
# elapsed time: 00:00:13

I see the part about an incompatible pointer type. Do you know if there something I can do to fix it or is this a bigger issue?

Also, would you please remind me where/how/what to install for a kernel header to have this install the WIFI for kernel 6.18? I recall doing it a couple years ago but not where I learned how? Sorry, stupid of me. It appears to have worked for 6.18.

==> dkms install --no-depmod rtl8814au/5.8.5.1.r206.gb1866ce -k 6.18.42-1-MANJARO
Deprecated feature: CLEAN (/var/lib/dkms/rtl8814au/5.8.5.1.r206.gb1866ce/source/dkms.conf)
==> depmod 6.18.42-1-MANJARO
Refreshing PackageKit...
A restart is required for the changes to take effect.
Transaction successfully finished.

Thank you.

6.18 is the latest lts kernel

Always ensure you have the relevant linuxXY-headers package synced.

NOTE: Having multiple kernels increase the size of any update. Multiple kernels may introduce difficult to solve conflicts - as you have seen with your wifi adapter.

If in doubt - always use the latest LTS - currently 6.18.

NOTE2:

It is highly recommended to consolidate your system before running any updates.

[INFO] Stable branch - BIG update BEST practice

Regarding this question that was closed yesterday because it:

Seemd to be user error: he either forgot the headers or had typo in the dkms command.
Xlosing as obsolete, user resolved the problem homself.

I may have been unclear where I added the strike through section. I didn’t type anything in installing the dkms part; for that was all done in the update in TTY. I was only stating that I was stupid to have forgotten where to install the kernel headers and then did so for 6.18 and that worked for 6.18. I already had the headers installed for 6.6 and 6.12 which both handled WIFI prior to the update. Now the WIFI works for kernels 6.6 and 6.18 but not 6.12.

I tried re-installing the headers for 6.12 and get the same error I posted yesterday concerning the incompatible pointer, which is in the make.log referenced below.

==> dkms install --no-depmod rtl8814au/5.8.5.1.r206.gb1866ce -k 6.12.101-1-MANJARO
Deprecated feature: CLEAN (/var/lib/dkms/rtl8814au/5.8.5.1.r206.gb1866ce/source/dkms.conf)

Error! Bad return status for module build on kernel: 6.12.101-1-MANJARO (x86_64)
Consult /var/lib/dkms/rtl8814au/5.8.5.1.r206.gb1866ce/build/make.log for more information.
==> WARNING: `dkms install --no-depmod rtl8814au/5.8.5.1.r206.gb1866ce -k 6.12.101-1-MANJARO' exited 10

Maybe it is user error but I don’t know what that error is or how to locate it. I updated the unstable branch this afternoon on my laptop (this questions concerns my desktop on stable) and had no issue with the WIFI on 6.12 or any of the three kernels. Both machines have the three kernels. Both machines had the same three kernels installed before the update and had no compatability issues.

No big deal since can use one of the other kernels; more interested in knowing if something is off with my system and what it could be to cause an incompatible pointer error on 6.12 only.

Thank you.

What’s your output of:

pacman -Qs '^linux\[0-9\]'

@Gary1

I note that both threads have now been merged.

Please ask to re-open a thread you have created rather than creating a new topic. The usual procedure is to send a PM to a Moderation staff member that may be online, or to @moderators (use this option sparingly as it bombards everyone; doubtless I’ll receive a few frowns).

Regards.

Thank you for responding. It returns nothing.

Try this command instead:

pacman -Qs linux\[0-9\]

It should reveal all kernel versions and kernel header packages that are installed on your system. To test the command before posting here, I ran it after installing linux72-headers on my system:

❯ pacman -Qs linux\[0-9\]
local/linux618 6.18.43-1
    The Linux 6.18 kernel and modules
local/linux71 7.1.7-1
    The Linux 7.1 kernel and modules
local/linux72 7.2.0rc6-1
    The Linux 7.2 kernel and modules
local/linux72-headers 7.2.0rc6-1
    Headers and scripts for building modules for the Linux 7.2 kernel

Thank you. The result is:

❯ pacman -Qs linux\[0-9\]
local/linux612 6.12.101-1
    The Linux 6.12 kernel and modules
local/linux612-headers 6.12.101-1
    Headers and scripts for building modules for the Linux 6.12 kernel
local/linux618 6.18.42-1
    The Linux 6.18 kernel and modules
local/linux618-headers 6.18.42-1
    Headers and scripts for building modules for the Linux 6.18 kernel
local/linux66 6.6.148-1
    The Linux66 kernel and modules
local/linux66-headers 6.6.148-1
    Header files and scripts for building modules for Linux66 kernel

That’s weird, it works with the quotes on my system :person_shrugging:

Well its not the result of missing or mismatched headers.

Which repo are you using for the rtl8814au driver? Could it be unmaintained?

See: https://forums.linuxmint.com/viewtopic.php?t=463605

There is an interesting comment on the AUR (en) - rtl8814au-dkms-git page which may be relevant:

The past couple of years we have seen more and more RTL devices included in the upstream kernel.

When I commented earlier in this topic - I was thinking about researching if the driver had become part of the linux kernel and I found indications (alfa-network web) that it was not - and I forgot about it.

Just today I found this - an extract from the Linux Kernel Driver Database - which suggest that it is no longer necessary to use dkms support for certain devices.

Retrieve your device’s id using lsusb and look it up in the driver database - if it is there - the kernel supports it.

CONFIG_RTW88_8814AU (6.15–6.19, 7.0–7.1, 7.2-rc+HEAD)

But - there is always a but - Realtek is a chipset vendor - selling the chipset to various vendors of consumer USB devices. These vendors may implement the chipset in different ways depending on their target market.

This often results in devices which implementation has been tweaked for use with Microsoft Windows - and such devices may or may not work with the Linux kernel.

So - if you want to be sure it works on Linux powered system - always verify the device before buying.

From my collection of working devices

Bus 003 Device 006: ID 0bda:0811 Realtek Semiconductor Corp. Realtek 8812AU/8821AU 802.11ac WLAN Adapter [USB Wireless Dual-Band Adapter 2.4/5Ghz]

So my suggestion is to switch your system to use Linux 6.18 - and your driver issue should be yesterdays issue.

If the usb device is the internet connection - you will have to accept dkms failure when syncing Linux 6.18 - do not add header package - you will want the dkms for the wifi driver to fail on Linux 6.18.

When synced reboot and use grub to ensure you are booting the 6.18 kernel.

Then test your network connection using the USB stick. When it is working remove the dkms package for the wifi driver.

Thank you. With this round of stable updates I tried as you directed. Kernel 6.18 has WIFI with the device without headers installed. Kernel 6.6 has WIFI only with headers installed. Kernel 6.12 does not have WIFI with or without headers installed.

I was keeping two kernels and 6.18 appears to have been added without me requesting it. So,will keep 6.6 and 6.18 because would like to be able to boot 6.6 and connect to internet if 6.18 doesn’t function for some reason.

And my device is in the list at the link you provided. ID 0846:9054 NetGear, Inc. Nighthawk A7000 802.11ac Wireless Adapter AC1900 [Realtek 8814AU]

Some where in this chain of messages, I very stupidly commented that my laptop had no issue with kernel 6.12 and WIFI. No kidding; because it doesn’t use the same WIFI device.

Thanks.