You are not logged in.
Just completed my first Arch install, on an HP EliteDesk 800 G5 mini with a USB wifi/bluetooth adapter.. When running on installation media, the RTL8723BU usb wifi/bluetooth adapter was recognized and easily configured using iwctl, so I didn't expect post-install problems. Once I completed the install and got to a working KDE desktop, the wifi and bluetooth adapters are not recognized at all; 'ip addr show' displays only loopback and ethernet interfaces, yet lsusb shows the adapter.
It seems logical that I don't have the correct driver installed. Since wifi worked fine on the install media, it seems that I missed something during the manual installation process. Haven't found a suitable binary package using pacman. Still trying to wrap my head around pacman and AUR, but found a dkms driver specific to my adapter model using yay and built/installed it:
[mark@archlinux ~]$ yay -Ss rtl8723bu
aur/rtl8723bu-dkms-git r286.447ea62-1 (+5 0.43) [45d13h] (Installed)
Driver for RTL8723BU DKMS version
It needs to be loaded into the kernel but I haven't discovered how to make that work, and so far I can't find the driver file.
No doubt I'm missing something simple, but a nudge in the right direction would be most welcome. I'm new to this forum so I'm unsure what expectations are for posting system information, but happy to supply anything needed.
Offline
If the adapter works from the installation media nothing from AUR should be needed. If you boot into the installation media then follow Wireless#Check_the_driver_status to find the kernel module that is being used. Once you have found the kernel module you can check if the needed firmware was installed.
Offline
If the adapter works from the installation media nothing from AUR should be needed. If you boot into the installation media then follow Wireless#Check_the_driver_status to find the kernel module that is being used. Once you have found the kernel module you can check if the needed firmware was installed.
Thanks, I'll try that.
Offline
Thanks for your help, loqs. After booting from the install media and running 'usb-devices' I found that the install media (kernel 7.0.10-arch1-1) is using two drivers for the device - btusb for Bluetooth and rtl8xxxu for wifi. The wifi driver worked fine and package downloads were fairly quick during installation. Back in my full install (kernel 7.0.12-arch1-1), I found that Bluetooth wasn't working, either, but that was easily fixed by enabling the bluetooth service. The usb-devices command showed btusb loaded at boot, but no driver loaded for wifi.
I was able to load the module using modprobe but could not get it to load on boot, even after adding a config file to /etc/modules-load.d/. Eventually I found that rtl8xxxu is blacklisted in my full install, implying that a different driver is preferred. That makes sense now that I've noticed how slow my wifi connection is on the generic driver. I found a driver on github specific to the rtl8723bu and attempted to install it using dkms, but I'm unfamiliar with it. Following the instructions on github everything seemed to go well until the last step:
[mark@archlinux rtl8723bu]$ sources dkms.conf
[mark@archlinux rtl8723bu]$ sudo cp -r core hal include os_dep platform dkms.conf Makefile rtl8723b_fw.bin /usr/src/$PACKAGE_NAME-$PACKAGE_VERSION
[mark@archlinux rtl8723bu]$ sudo dkms add $PACKAGE_NAME/$PACKAGE_VERSION
Creating symlink /var/lib/dkms/rtl8723bu/4.3.6.11_12942.20141204_BTCOEX20140507-4E40/source -> /usr/src/rtl8723bu-4.3.6.11_12942.20141204_BTCOEX20140507-4E40
[mark@archlinux rtl8723bu]$ sudo dkms autoinstall $PACKAGE_NAME/$PACKAGE_VERSION
Sign command: /usr/lib/modules/7.0.12-arch1-1/build/scripts/sign-file
Signing key: /var/lib/dkms/mok.key
Public certificate (MOK): /var/lib/dkms/mok.pub
Autoinstall of module rtl8723bu/r286.447ea62 for kernel 7.0.12-arch1-1 (x86_64)
Building module(s)....(bad exit status: 2)
Failed command:
make -j8 KERNELRELEASE=7.0.12-arch1-1 -C /usr/lib/modules/7.0.12-arch1-1/build M=/var/lib/dkms/rtl8723bu/r286.447ea62/build
Error! Bad return status for module build on kernel: 7.0.12-arch1-1 (x86_64)
Consult /var/lib/dkms/rtl8723bu/r286.447ea62/build/make.log for more information.
Autoinstall on 7.0.12-arch1-1 failed for module(s) rtl8723bu(10).
Error! One or more modules failed to install during autoinstall.
Refer to previous errors for more information.Checked the dkms make.log file as suggested, but while I see error messages I don't know what to do about them. Clearly I'll have to dig into dkms to understand the process better, but if you see anything that jumps out at you I'd love to hear about it. I'm using a wired connection for now, which isn't ideal but it works so there is no real urgency.
[mark@archlinux rtl8723bu]$ cat /var/lib/dkms/rtl8723bu/r286.447ea62/build/make.log
DKMS (dkms-3.4.1) make.log for rtl8723bu/r286.447ea62 for kernel 7.0.12-arch1-1 (x86_64)
Mon Jun 22 17:54:53 UTC 2026
Building module(s)
# command: make -j8 KERNELRELEASE=7.0.12-arch1-1 -C /usr/lib/modules/7.0.12-arch1-1/build M=/var/lib/dkms/rtl8723bu/r286.447ea62/build
make: Entering directory '/usr/lib/modules/7.0.12-arch1-1/build'
make[1]: Entering directory '/var/lib/dkms/rtl8723bu/r286.447ea62/build'
CC [M] core/rtw_cmd.o
CC [M] core/rtw_security.o
CC [M] core/rtw_debug.o
CC [M] core/rtw_io.o
CC [M] core/rtw_ioctl_query.o
CC [M] core/rtw_ioctl_set.o
CC [M] core/rtw_ieee80211.o
CC [M] core/rtw_mlme.o
core/rtw_mlme.c:106:6: warning: no previous prototype for ‘rtw_mfree_mlme_priv_lock’ [-Wmissing-prototypes]
106 | void rtw_mfree_mlme_priv_lock (struct mlme_priv *pmlmepriv)
| ^~~~~~~~~~~~~~~~~~~~~~~~
core/rtw_mlme.c:472:9: warning: no previous prototype for ‘rtw_enqueue_network’ [-Wmissing-prototypes]
472 | int rtw_enqueue_network(_queue *queue, struct wlan_network *pnetwork)
| ^~~~~~~~~~~~~~~~~~~
core/rtw_mlme.c:492:23: warning: no previous prototype for ‘rtw_alloc_network’ [-Wmissing-prototypes]
492 | struct wlan_network *rtw_alloc_network(struct mlme_priv *pmlmepriv )//(_queue *free_queue)
| ^~~~~~~~~~~~~~~~~
core/rtw_mlme.c:501:6: warning: no previous prototype for ‘rtw_free_network’ [-Wmissing-prototypes]
501 | void rtw_free_network(struct mlme_priv *pmlmepriv, struct wlan_network *pnetwork, u8 is_freeall)//(struct wlan_network *pnetwork, _queue *free_queue)
| ^~~~~~~~~~~~~~~~
core/rtw_mlme.c:509:6: warning: no previous prototype for ‘rtw_free_network_nolock’ [-Wmissing-prototypes]
509 | void rtw_free_network_nolock(_adapter * padapter, struct wlan_network *pnetwork )
| ^~~~~~~~~~~~~~~~~~~~~~~
core/rtw_mlme.c:930:6: warning: no previous prototype for ‘rtw_add_network’ [-Wmissing-prototypes]
930 | void rtw_add_network(_adapter *adapter, WLAN_BSSID_EX *pnetwork)
| ^~~~~~~~~~~~~~~
core/rtw_mlme.c:959:5: warning: no previous prototype for ‘rtw_is_desired_network’ [-Wmissing-prototypes]
959 | int rtw_is_desired_network(_adapter *adapter, struct wlan_network *pnetwork)
| ^~~~~~~~~~~~~~~~~~~~~~
CC [M] core/rtw_mlme_ext.o
CC [M] core/rtw_wlan_util.o
CC [M] core/rtw_vht.o
CC [M] core/rtw_pwrctrl.o
CC [M] core/rtw_rf.o
CC [M] core/rtw_recv.o
CC [M] core/rtw_sta_mgt.o
CC [M] core/rtw_ap.o
core/rtw_wlan_util.c:255:15: warning: no previous prototype for ‘ratetbl_val_2wifirate’ [-Wmissing-prototypes]
255 | unsigned char ratetbl_val_2wifirate(unsigned char rate)
| ^~~~~~~~~~~~~~~~~~~~~
core/rtw_wlan_util.c:312:5: warning: no previous prototype for ‘is_basicrate’ [-Wmissing-prototypes]
312 | int is_basicrate(_adapter *padapter, unsigned char rate)
| ^~~~~~~~~~~~
core/rtw_wlan_util.c:331:14: warning: no previous prototype for ‘ratetbl2rateset’ [-Wmissing-prototypes]
331 | unsigned int ratetbl2rateset(_adapter *padapter, unsigned char *rateset)
| ^~~~~~~~~~~~~~~
core/rtw_wlan_util.c:2328:5: warning: no previous prototype for ‘wifirate2_ratetbl_inx’ [-Wmissing-prototypes]
2328 | int wifirate2_ratetbl_inx(unsigned char rate)
| ^~~~~~~~~~~~~~~~~~~~~
core/rtw_wlan_util.c:2460:15: warning: no previous prototype for ‘get_highest_mcs_rate’ [-Wmissing-prototypes]
2460 | unsigned char get_highest_mcs_rate(struct HT_caps_element *pHT_caps)
| ^~~~~~~~~~~~~~~~~~~~
core/rtw_wlan_util.c:2482:6: warning: no previous prototype for ‘enable_rate_adaptive’ [-Wmissing-prototypes]
2482 | void enable_rate_adaptive(_adapter *padapter, struct sta_info *psta)
| ^~~~~~~~~~~~~~~~~~~~
CC [M] core/rtw_xmit.o
core/rtw_pwrctrl.c:423:6: warning: no previous prototype for ‘pwr_state_check_handler’ [-Wmissing-prototypes]
423 | void pwr_state_check_handler(struct timer_list *t)
| ^~~~~~~~~~~~~~~~~~~~~~~
core/rtw_recv.c:126:6: warning: no previous prototype for ‘rtw_mfree_recv_priv_lock’ [-Wmissing-prototypes]
126 | void rtw_mfree_recv_priv_lock(struct recv_priv *precvpriv)
| ^~~~~~~~~~~~~~~~~~~~~~~~
core/rtw_recv.c:419:6: warning: no previous prototype for ‘recvframe_chkmic’ [-Wmissing-prototypes]
419 | sint recvframe_chkmic(_adapter *adapter, union recv_frame *precvframe){
| ^~~~~~~~~~~~~~~~
core/rtw_recv.c:565:19: warning: no previous prototype for ‘decryptor’ [-Wmissing-prototypes]
565 | union recv_frame *decryptor(_adapter *padapter,union recv_frame *precv_frame)
| ^~~~~~~~~
core/rtw_recv.c:690:19: warning: no previous prototype for ‘portctrl’ [-Wmissing-prototypes]
690 | union recv_frame *portctrl(_adapter *adapter,union recv_frame * precv_frame)
| ^~~~~~~~
core/rtw_recv.c:759:6: warning: no previous prototype for ‘recv_decache’ [-Wmissing-prototypes]
759 | sint recv_decache(union recv_frame *precv_frame, u8 bretry,
| ^~~~~~~~~~~~
core/rtw_recv.c:794:6: warning: no previous prototype for ‘process_pwrbit_data’ [-Wmissing-prototypes]
794 | void process_pwrbit_data(_adapter *padapter, union recv_frame *precv_frame)
| ^~~~~~~~~~~~~~~~~~~
core/rtw_recv.c:839:6: warning: no previous prototype for ‘process_wmmps_data’ [-Wmissing-prototypes]
839 | void process_wmmps_data(_adapter *padapter, union recv_frame *precv_frame)
| ^~~~~~~~~~~~~~~~~~
core/rtw_recv.c:1008:6: warning: no previous prototype for ‘count_rx_stats’ [-Wmissing-prototypes]
1008 | void count_rx_stats(_adapter *padapter, union recv_frame *prframe,
| ^~~~~~~~~~~~~~
core/rtw_recv.c:1519:6: warning: no previous prototype for ‘validate_recv_ctrl_frame’ [-Wmissing-prototypes]
1519 | sint validate_recv_ctrl_frame(_adapter *padapter, union recv_frame *precv_frame)
| ^~~~~~~~~~~~~~~~~~~~~~~~
core/rtw_recv.c:1678:6: warning: no previous prototype for ‘validate_recv_mgnt_frame’ [-Wmissing-prototypes]
1678 | sint validate_recv_mgnt_frame(PADAPTER padapter, union recv_frame *precv_frame)
| ^~~~~~~~~~~~~~~~~~~~~~~~
core/rtw_recv.c:1767:6: warning: no previous prototype for ‘validate_recv_data_frame’ [-Wmissing-prototypes]
1767 | sint validate_recv_data_frame(_adapter *adapter, union recv_frame *precv_frame)
| ^~~~~~~~~~~~~~~~~~~~~~~~
core/rtw_recv.c:2058:6: warning: no previous prototype for ‘validate_recv_frame’ [-Wmissing-prototypes]
2058 | sint validate_recv_frame(_adapter *adapter, union recv_frame *precv_frame)
| ^~~~~~~~~~~~~~~~~~~
core/rtw_recv.c:2272:6: warning: no previous prototype for ‘wlanhdr_to_ethhdr’ [-Wmissing-prototypes]
2272 | sint wlanhdr_to_ethhdr ( union recv_frame *precvframe)
| ^~~~~~~~~~~~~~~~~
core/rtw_recv.c:2549:19: warning: no previous prototype for ‘recvframe_defrag’ [-Wmissing-prototypes]
2549 | union recv_frame *recvframe_defrag(_adapter *adapter,_queue *defrag_q)
| ^~~~~~~~~~~~~~~~
core/rtw_recv.c:2846:5: warning: no previous prototype for ‘check_indicate_seq’ [-Wmissing-prototypes]
2846 | int check_indicate_seq(struct recv_reorder_ctrl *preorder_ctrl, u16 seq_num)
| ^~~~~~~~~~~~~~~~~~
core/rtw_recv.c:2919:5: warning: no previous prototype for ‘enqueue_reorder_recvframe’ [-Wmissing-prototypes]
2919 | int enqueue_reorder_recvframe(struct recv_reorder_ctrl *preorder_ctrl,
| ^~~~~~~~~~~~~~~~~~~~~~~~~
core/rtw_recv.c:2981:6: warning: no previous prototype for ‘recv_indicatepkts_pkt_loss_cnt’ [-Wmissing-prototypes]
2981 | void recv_indicatepkts_pkt_loss_cnt(struct debug_priv *pdbgpriv, u64 prev_seq,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
core/rtw_recv.c:2995:5: warning: no previous prototype for ‘recv_indicatepkts_in_order’ [-Wmissing-prototypes]
2995 | int recv_indicatepkts_in_order(_adapter *padapter,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
core/rtw_recv.c:3128:5: warning: no previous prototype for ‘recv_indicatepkt_reorder’ [-Wmissing-prototypes]
3128 | int recv_indicatepkt_reorder(_adapter *padapter, union recv_frame *prframe)
| ^~~~~~~~~~~~~~~~~~~~~~~~
core/rtw_recv.c:3294:5: warning: no previous prototype for ‘process_recv_indicatepkts’ [-Wmissing-prototypes]
3294 | int process_recv_indicatepkts(_adapter *padapter, union recv_frame *prframe)
| ^~~~~~~~~~~~~~~~~~~~~~~~~
core/rtw_recv.c:3543:5: warning: no previous prototype for ‘recv_func’ [-Wmissing-prototypes]
3543 | int recv_func(_adapter *padapter, union recv_frame *rframe)
| ^~~~~~~~~
CC [M] core/rtw_p2p.o
CC [M] core/rtw_tdls.o
CC [M] core/rtw_br_ext.o
CC [M] core/rtw_iol.o
CC [M] core/rtw_sreset.o
CC [M] core/rtw_btcoex.o
CC [M] core/rtw_beamforming.o
CC [M] core/rtw_odm.o
CC [M] core/rtw_efuse.o
CC [M] os_dep/osdep_service.o
CC [M] os_dep/os_intfs.o
CC [M] os_dep/usb_intf.o
CC [M] os_dep/usb_ops_linux.o
CC [M] os_dep/ioctl_linux.o
CC [M] os_dep/xmit_linux.o
CC [M] os_dep/mlme_linux.o
CC [M] os_dep/recv_linux.o
os_dep/usb_intf.c:687:5: warning: no previous prototype for ‘rtw_resume_process’ [-Wmissing-prototypes]
687 | int rtw_resume_process(_adapter *padapter)
| ^~~~~~~~~~~~~~~~~~
CC [M] os_dep/ioctl_cfg80211.o
CC [M] os_dep/wifi_regd.o
CC [M] os_dep/rtw_android.o
CC [M] os_dep/rtw_proc.o
CC [M] hal/hal_intf.o
CC [M] hal/hal_com.o
os_dep/ioctl_cfg80211.c:5912:29: error: initialization of ‘int (*)(struct wiphy *, int, u32)’ {aka ‘int (*)(struct wiphy *, int, unsigned int)’} from incompatible pointer type ‘int (*)(struct wiphy *, u32)’ {aka ‘int (*)(struct wiphy *, unsigned int)’} [-Wincompatible-pointer-types]
5912 | .set_wiphy_params = cfg80211_rtw_set_wiphy_params,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
os_dep/ioctl_cfg80211.c:5912:29: note: (near initialization for ‘rtw_cfg80211_ops.set_wiphy_params’)
os_dep/ioctl_cfg80211.c:2372:12: note: ‘cfg80211_rtw_set_wiphy_params’ declared here
2372 | static int cfg80211_rtw_set_wiphy_params(struct wiphy *wiphy, u32 changed)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
os_dep/ioctl_cfg80211.c:5917:25: error: initialization of ‘int (*)(struct wiphy *, struct wireless_dev *, int, enum nl80211_tx_power_setting, int)’ from incompatible pointer type ‘int (*)(struct wiphy *, struct wireless_dev *, enum nl80211_tx_power_setting, int)’ [-Wincompatible-pointer-types]
5917 | .set_tx_power = cfg80211_rtw_set_txpower,
| ^~~~~~~~~~~~~~~~~~~~~~~~
os_dep/ioctl_cfg80211.c:5917:25: note: (near initialization for ‘rtw_cfg80211_ops.set_tx_power’)
os_dep/ioctl_cfg80211.c:3145:12: note: ‘cfg80211_rtw_set_txpower’ declared here
3145 | static int cfg80211_rtw_set_txpower(struct wiphy *wiphy,
| ^~~~~~~~~~~~~~~~~~~~~~~~
os_dep/ioctl_cfg80211.c:5918:25: error: initialization of ‘int (*)(struct wiphy *, struct wireless_dev *, int, unsigned int, int *)’ from incompatible pointer type ‘int (*)(struct wiphy *, struct wireless_dev *, unsigned int, int *)’ [-Wincompatible-pointer-types]
5918 | .get_tx_power = cfg80211_rtw_get_txpower,
| ^~~~~~~~~~~~~~~~~~~~~~~~
os_dep/ioctl_cfg80211.c:5918:25: note: (near initialization for ‘rtw_cfg80211_ops.get_tx_power’)
os_dep/ioctl_cfg80211.c:3159:12: note: ‘cfg80211_rtw_get_txpower’ declared here
3159 | static int cfg80211_rtw_get_txpower(struct wiphy *wiphy,
| ^~~~~~~~~~~~~~~~~~~~~~~~
make[3]: *** [/usr/lib/modules/7.0.12-arch1-1/build/scripts/Makefile.build:289: os_dep/ioctl_cfg80211.o] Error 1
make[3]: *** Waiting for unfinished jobs....
make[2]: *** [/usr/lib/modules/7.0.12-arch1-1/build/Makefile:2110: .] Error 2
make[1]: *** [/usr/lib/modules/7.0.12-arch1-1/build/Makefile:248: __sub-make] Error 2
make[1]: Leaving directory '/var/lib/dkms/rtl8723bu/r286.447ea62/build'
make: *** [Makefile:248: __sub-make] Error 2
make: Leaving directory '/usr/lib/modules/7.0.12-arch1-1/build'
# exit code: 2
# elapsed time: 00:00:06
----------------------------------------------------------------Offline
When you installed the system which linux-firmware packages if any did you select?
Offline
You started this thread w/ rtl8723bu - why do you expect any changes?
Eventually I found that rtl8xxxu is blacklisted in my full install, implying that a different driver is preferred.
Who blacklisted that?
I've noticed how slow my wifi connection is on the generic driver
package downloads were fairly quick during installation
Please post your complete system journal for the boot:
sudo journalctl -b | curl -s -H "Accept: application/json, */*" --upload-file - 'https://paste.c-net.org/'Offline
Who blacklisted that?
The PKGBUILD seems to do it as part of the install.
install -Dm644 blacklist-${_pkgname}.conf "${pkgdir}"/etc/modprobe.d/blacklist-${_pkgname}.confThis is an implementation of the recommendation in the upstream README.
Regards,
Offline
When you installed the system which linux-firmware packages if any did you select?
I did the Arch install manually, so I didn't select anything. I installed base packages using:
pacstrap -i /mnt baseIn retrospect, I wish I had captured the packages it installed; I'll do that next time. I installed several other packages during the build, e.g., grub, efibootmgr, KDE plasma packages, networkmanager, and a few others. While troubleshooting the wifi issue afterward, I did install linux-firmware as part of the attempt to build a new driver.
The kernel on the install media is 7.0.10, and the generic driver was clearly not blacklisted.
To be honest, I'm a bit surprised that I didn't have more issues, given that I've never touched Arch before...
Last edited by mbaker (2026-06-22 23:19:41)
Offline
install -Dm644 blacklist-${_pkgname}.conf "${pkgdir}"/etc/modprobe.d/blacklist-${_pkgname}.confThis is an implementation of the recommendation in the upstream README.
However the PKGBUILD should not be installing it in /etc/modprobe.d instead /usr/lib/modprobe.d should be used. The PKGBUILD additionally should not be performing any DKMS operations in the install file. DKMS hooks provide such operations already. The packages dependencies are wrong as well. See also DKMS_package_guidelines.
If you installed the DKMS package before linux-firmware that would block the driver provide by the kernel from functioning that was missing firmware so when you later installed linux-firmware the issue remained.
Offline
You started this thread w/ rtl8723bu - why do you expect any changes?
I didn't, actually, given that wifi worked fine running from the install media.
Who blacklisted that?
Hard to say, other than it wasn't me. It seems likely that the dkms package I tried early on did it, but on the other hand, that doesn't explain why the generic driver didn't work in the first place. Once I found the module name I could load it using modprobe and the adapter worked immediately, so it was clearly there all along.
At this point my system is functional and I have a wired ethernet connection, so the urgency is gone. I still intend to try and install a better driver, but I can take the time to understand how dkms works.
Offline
If you installed the DKMS package before linux-firmware that would block the driver provide by the kernel from functioning that was missing firmware so when you later installed linux-firmware the issue remained.
The linux-firmware install came first.
Offline
The linux-firmware install came first.
Did you reload the kernel module or reboot after installing linux-firmware before installing the DKMS package? The log for such a boot or the current boot would be useful to diagnose what is happening in more detail.
Offline
Did you reload the kernel module or reboot after installing linux-firmware before installing the DKMS package? The log for such a boot or the current boot would be useful to diagnose what is happening in more detail.
The dkms package build failed, so there was no kernel module to reload. I don't believe I rebooted after installing linux-firmware (which may have already been installed in any case). I was trying alot of different things and honestly don't remember the sequence; I wish I had been more systematic but I had limited time to work on it.
I really appreciate everyone's help, but I don't want to take up any more of your time; I need to learn git and dkms anyway, and this will be a good exercise toward that end.
Offline
If you feel like you want to sort this out so it doesn't come back later to bite you, remove the rtl8xxxu blacklist, reboot and
Please post your complete system journal for the boot:
sudo journalctl -b | curl -s -H "Accept: application/json, */*" --upload-file - 'https://paste.c-net.org/'
Offline
Moderator Note
moving to AUR Issues, Discussion & PKGBUILD Requests
Disliking systemd intensely, but not satisfied with alternatives so focusing on taming systemd.
clean chroot building not flexible enough ?
Try clean chroot manager by graysky
Online