Last active
January 19, 2026 07:55
-
-
Save heri16/935d9e3595f27a5247bc1b3046979ef9 to your computer and use it in GitHub Desktop.
Openwrt Linux drivers for Realtek Wi-Fi 6/6E and Wi-Fi 7 adapters and cards
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| docker run --rm -v "$(pwd)"/bin/:/builder/bin -it ghcr.io/openwrt/sdk:ipq40xx-generic-24.10.5 | |
| # inside the Docker container | |
| [ ! -d ./scripts ] && ./setup.sh | |
| # See: https://openwrt.org/docs/guide-developer/toolchain/using_the_sdk#load_package_lists | |
| ./scripts/feeds update base | |
| ./scripts/feeds update packages | |
| #./scripts/feeds update -a | |
| #./scripts/feeds uninstall -a | |
| #./scripts/feeds install kmod-mac80211 | |
| #./scripts/feeds install -a | |
| #curl https://downloads.openwrt.org/releases/24.10.5/targets/ipq40xx/generic/config.buildinfo -o .config | |
| #make menuconfig | |
| # Add Makefile for out-of-tree kernel modules | |
| # Attribution: https://github.com/openwrt/openwrt/blob/main/package/kernel/mac80211/Makefile | |
| install -D -m 0644 /dev/stdin ./package/kernel/rtw89/Makefile <<'EOF' | |
| include $(TOPDIR)/rules.mk | |
| include $(INCLUDE_DIR)/kernel.mk | |
| PKG_NAME:=rtw89 | |
| PKG_VERSION:=20260106 | |
| PKG_RELEASE:=1 | |
| PKG_SOURCE_PROTO:=git | |
| PKG_SOURCE_URL:=https://github.com/morrownr/rtw89.git | |
| PKG_SOURCE_VERSION:=2544ebfad763599407f0f23622db7356ef3dbcb4 | |
| #PKG_MIRROR_HASH:=skip | |
| #PKG_LICENSE_FILES:=LICENSE | |
| PKG_MAINTAINER:=Heri Sim <nbd@nbd.name> | |
| PKG_DRIVERS = \ | |
| PKG_CONFIG_DEPENDS:= \ | |
| CONFIG_PACKAGE_kmod-mac80211 \ | |
| CONFIG_PACKAGE_CFG80211_TESTMODE \ | |
| CONFIG_PACKAGE_MAC80211_DEBUGFS \ | |
| CONFIG_PACKAGE_MAC80211_MESH \ | |
| CONFIG_PACKAGE_MAC80211_TRACING \ | |
| CONFIG_PACKAGE_IWLWIFI_DEBUG \ | |
| CONFIG_PACKAGE_IWLWIFI_DEBUGFS \ | |
| CONFIG_PACKAGE_RTLWIFI_DEBUG \ | |
| RTW89_MAKE_OPTS= -C $(PKG_BUILD_DIR) \ | |
| PATH="$(TARGET_PATH)" \ | |
| ARCH="$(LINUX_KARCH)" \ | |
| CROSS_COMPILE="$(TARGET_CROSS)" \ | |
| TARGET="$(HAL_TARGET)" \ | |
| TOOLPREFIX="$(KERNEL_CROSS)" \ | |
| TOOLPATH="$(KERNEL_CROSS)" \ | |
| KERNELPATH="$(LINUX_DIR)" \ | |
| KERNELDIR="$(LINUX_DIR)" \ | |
| LDOPTS=" " \ | |
| DOMULTI=1 | |
| include $(INCLUDE_DIR)/package.mk | |
| WMENU:=Wireless Drivers | |
| define KernelPackage/mac80211/Default | |
| SUBMENU:=$(WMENU) | |
| URL:=https://github.com/morrownr/rtw89 | |
| endef | |
| config-y:= \ | |
| WLAN | |
| include realtek.mk | |
| ifneq ($(CONFIG_PACKAGE_kmod-cfg80211),) | |
| define Build/Compile/kmod | |
| rm -rf $(PKG_BUILD_DIR)/modules | |
| +$(MAKE) $(PKG_JOBS) $(MAKE_OPTS) modules | |
| endef | |
| endif | |
| define Build/Compile | |
| $(SH_FUNC) var2file "$(call shvar,mac80211_config)" $(PKG_BUILD_DIR)/.config | |
| $(MAKE) $(MAKE_OPTS) allnoconfig | |
| $(call Build/Compile/kmod) | |
| endef | |
| $(eval $(foreach drv,$(PKG_DRIVERS),$(call KernelPackage,$(drv)))) | |
| #$(eval $(call KernelPackage,cfg80211)) | |
| #$(eval $(call KernelPackage,mac80211)) | |
| EOF | |
| # Add Makefile for out-of-tree device firmware | |
| # Attribution: https://github.com/openwrt/openwrt/blob/main/package/firmware/linux-firmware/Makefile | |
| install -D -m 0644 /dev/stdin ./package/firmware/rtw89-firmware/Makefile <<'EOF' | |
| include $(TOPDIR)/rules.mk | |
| PKG_NAME:=rtw89-firmware | |
| PKG_VERSION:=20260106 | |
| PKG_RELEASE:=1 | |
| PKG_SOURCE_PROTO:=git | |
| PKG_SOURCE_URL:=https://github.com/morrownr/rtw89.git | |
| PKG_SOURCE_VERSION:=2544ebfad763599407f0f23622db7356ef3dbcb4 | |
| #PKG_MIRROR_HASH:=skip | |
| PKG_LICENSE_FILES:=firmware/LICENCE.* | |
| PKG_MAINTAINER:=Heri Sim <nbd@nbd.name> | |
| SCAN_DEPS = *.mk | |
| include $(INCLUDE_DIR)/package.mk | |
| RSTRIP:=: | |
| STRIP:=: | |
| define Package/firmware-default | |
| SECTION:=firmware | |
| CATEGORY:=Firmware | |
| URL:=https://github.com/morrownr/rtw89.git | |
| TITLE:=$(1) | |
| DEPENDS:=$(2) | |
| LICENSE_FILES:=$(3) | |
| LICENSE:=$(4) | |
| endef | |
| define Build/Compile | |
| endef | |
| include $(wildcard ./*.mk) | |
| #$(eval $(call BuildPackage,linux-firmware)) | |
| EOF | |
| # Drivers | |
| # Attribution: https://github.com/openwrt/openwrt/blob/main/package/kernel/mac80211/realtek.mk | |
| install -D -m 0644 /dev/stdin ./package/kernel/rtw89/realtek.mk <<'EOF' | |
| PKG_DRIVERS += \ | |
| rtw89-git rtw89-pci-git rtw89-usb-git rtw89-8851be-git rtw89-8851bu-git rtw89-8852ae-git rtw89-8852au-git \ | |
| rtw89-8852b-common-git rtw89-8852be-git rtw89-8852bu-git rtw89-8852bte-git rtw89-8852ce-git rtw89-8852cu-git \ | |
| rtw89-8922ae-git rtw89-8922au-git | |
| config-$(call config_package,rtw89-git) += RTW89 RTW89_CORE_GIT | |
| config-$(call config_package,rtw89-pci-git) += RTW89_PCI_GIT | |
| config-$(call config_package,rtw89-8851be-git) += RTW89_8851B RTW89_8851BE_GIT | |
| config-$(call config_package,rtw89-8851bu-git) += RTW89_8851B RTW89_8851BU_GIT | |
| config-$(call config_package,rtw89-8852ae-git) += RTW89_8852A RTW89_8852AE_GIT | |
| config-$(call config_package,rtw89-8852au-git) += RTW89_8852A RTW89_8852AU_GIT | |
| config-$(call config_package,rtw89-8852b-common-git) += RTW89_8852B_COMMON_GIT | |
| config-$(call config_package,rtw89-8852be-git) += RTW89_8852B RTW89_8852BE_GIT | |
| config-$(call config_package,rtw89-8852bu-git) += RTW89_8852B RTW89_8852BU_GIT | |
| config-$(call config_package,rtw89-8852bte-git) += RTW89_8852BT RTW89_8852BTE_GIT | |
| config-$(call config_package,rtw89-8852ce-git) += RTW89_8852C RTW89_8852CE_GIT | |
| config-$(call config_package,rtw89-8852cu-git) += RTW89_8852C RTW89_8852CU_GIT | |
| config-$(call config_package,rtw89-8922ae-git) += RTW89_8922A RTW89_8922AE_GIT | |
| config-$(call config_package,rtw89-8922au-git) += RTW89_8922A RTW89_8922AU_GIT | |
| config-$(CONFIG_PACKAGE_RTW89_GIT_DEBUG) += RTW89_GIT_DEBUG | |
| config-$(CONFIG_PACKAGE_RTW89_GIT_DEBUGFS) += RTW89_GIT_DEBUGFS | |
| config-$(CONFIG_PACKAGE_RTW89_GIT_DEBUGMSG) += RTW89_GIT_DEBUGMS | |
| define KernelPackage/rtw89-git/config | |
| config PACKAGE_RTW89_GIT_DEBUG | |
| bool "Realtek wireless debugging (rtw89-git)" | |
| depends on PACKAGE_kmod-rtw89-git | |
| help | |
| Enable debugging output for rtw89 devices. | |
| config PACKAGE_RTW89_GIT_DEBUGFS | |
| bool "Enable rtw89-git debugfs support" | |
| select KERNEL_DEBUG_FS | |
| depends on PACKAGE_kmod-rtw89-git | |
| help | |
| Select this to see extensive information about | |
| the internal state of rtw89 in debugfs. | |
| config PACKAGE_RTW89_GIT_DEBUGMSG | |
| bool "Realtek rtw89-git debug message support" | |
| depends on PACKAGE_kmod-rtw89-git | |
| help | |
| Enable debug message support. | |
| endef | |
| define KernelPackage/rtw89-git | |
| $(call KernelPackage/mac80211/Default) | |
| TITLE:=Realtek RTW89 core | |
| DEPENDS+= +@DRIVER_11AC_SUPPORT +@DRIVER_11AX_SUPPORT +kmod-mac80211 | |
| FILES:=$(PKG_BUILD_DIR)/rtw89_core_git.ko | |
| AUTOLOAD:=$(call AutoProbe,rtw89_core_git) | |
| HIDDEN:=1 | |
| endef | |
| define KernelPackage/rtw89-pci-git | |
| $(call KernelPackage/mac80211/Default) | |
| TITLE:=Realtek RTW89 PCI chips support (git) | |
| DEPENDS+= @PCI_SUPPORT +kmod-rtw89-git | |
| FILES:=$(PKG_BUILD_DIR)/rtw89_pci_git.ko | |
| AUTOLOAD:=$(call AutoProbe,rtw89_pci_git) | |
| HIDDEN:=1 | |
| endef | |
| define KernelPackage/rtw89-usb-git | |
| $(call KernelPackage/mac80211/Default) | |
| TITLE:=Realtek RTW89 USB chips support (git) | |
| DEPENDS+= @PCI_SUPPORT +kmod-rtw89-git | |
| FILES:=$(PKG_BUILD_DIR)/rtw89_usb_git.ko | |
| AUTOLOAD:=$(call AutoProbe,rtw89_usb_git) | |
| HIDDEN:=1 | |
| endef | |
| define KernelPackage/rtw89-8851be-git | |
| $(call KernelPackage/mac80211/Default) | |
| TITLE:=Realtek RTL8851BE support (git) | |
| DEPENDS+= +kmod-rtw89-pci-git +rtl8851b-firmware | |
| FILES:= \ | |
| $(PKG_BUILD_DIR)/rtw89_8851b_git.ko \ | |
| $(PKG_BUILD_DIR)/rtw89_8851be_git.ko | |
| AUTOLOAD:=$(call AutoProbe,rtw89_8851be_git) | |
| endef | |
| define KernelPackage/rtw89-8851bu-git | |
| $(call KernelPackage/mac80211/Default) | |
| TITLE:=Realtek RTL8851BU support (git) | |
| DEPENDS+= +kmod-rtw89-usb-git +rtl8851b-firmware | |
| FILES:= \ | |
| $(PKG_BUILD_DIR)/rtw89_8851b_git.ko \ | |
| $(PKG_BUILD_DIR)/rtw89_8851bu_git.ko | |
| AUTOLOAD:=$(call AutoProbe,rtw89_8851bu_git) | |
| endef | |
| define KernelPackage/rtw89-8852ae-git | |
| $(call KernelPackage/mac80211/Default) | |
| TITLE:=Realtek RTL8852AE support (git) | |
| DEPENDS+= +kmod-rtw89-pci-git +rtl8852a-firmware | |
| FILES:= \ | |
| $(PKG_BUILD_DIR)/rtw89_8852a_git.ko \ | |
| $(PKG_BUILD_DIR)/rtw89_8852ae_git.ko | |
| AUTOLOAD:=$(call AutoProbe,rtw89_8852ae_git) | |
| endef | |
| define KernelPackage/rtw89-8852au-git | |
| $(call KernelPackage/mac80211/Default) | |
| TITLE:=Realtek RTL8852AU support (git) | |
| DEPENDS+= +kmod-rtw89-usb-git +rtl8852a-firmware | |
| FILES:= \ | |
| $(PKG_BUILD_DIR)/rtw89_8852a_git.ko \ | |
| $(PKG_BUILD_DIR)/rtw89_8852au_git.ko | |
| AUTOLOAD:=$(call AutoProbe,rtw89_8852au_git) | |
| endef | |
| define KernelPackage/rtw89-8852b-common-git | |
| $(call KernelPackage/mac80211/Default) | |
| TITLE:=Realtek RTL8852B family support (git) | |
| FILES:= \ | |
| $(PKG_BUILD_DIR)/rtw89_8852b_common_git.ko | |
| AUTOLOAD:=$(call AutoProbe,rtw89_8852b_common_git) | |
| HIDDEN:=1 | |
| endef | |
| define KernelPackage/rtw89-8852be-git | |
| $(call KernelPackage/mac80211/Default) | |
| TITLE:=Realtek RTL8852BE support (git) | |
| DEPENDS+= +kmod-rtw89-8852b-common-git +kmod-rtw89-pci-git +rtl8852b-firmware | |
| FILES:= \ | |
| $(PKG_BUILD_DIR)/rtw89_8852b_git.ko \ | |
| $(PKG_BUILD_DIR)/rtw89_8852be_git.ko | |
| AUTOLOAD:=$(call AutoProbe,rtw89_8852be_git) | |
| endef | |
| define KernelPackage/rtw89-8852bu-git | |
| $(call KernelPackage/mac80211/Default) | |
| TITLE:=Realtek RTL8852BU support (git) | |
| DEPENDS+= +kmod-rtw89-8852b-common-git +kmod-rtw89-usb-git +rtl8852b-firmware | |
| FILES:= \ | |
| $(PKG_BUILD_DIR)/rtw89_8852b_git.ko \ | |
| $(PKG_BUILD_DIR)/rtw89_8852bu_git.ko | |
| AUTOLOAD:=$(call AutoProbe,rtw89_8852bu_git) | |
| endef | |
| define KernelPackage/rtw89-8852bte-git | |
| $(call KernelPackage/mac80211/Default) | |
| TITLE:=Realtek RTL8852BTE support (git) | |
| DEPENDS+= +kmod-rtw89-8852b-common-git +kmod-rtw89-pci-git +rtl8852bt-firmware | |
| FILES:= \ | |
| $(PKG_BUILD_DIR)/rtw89_8852bt_git.ko \ | |
| $(PKG_BUILD_DIR)/rtw89_8852bte_git.ko | |
| AUTOLOAD:=$(call AutoProbe,rtw89_8852bte_git) | |
| endef | |
| define KernelPackage/rtw89-8852ce-git | |
| $(call KernelPackage/mac80211/Default) | |
| TITLE:=Realtek RTL8852CE support (git) | |
| DEPENDS+= +kmod-rtw89-pci-git +rtl8852c-firmware | |
| FILES:= \ | |
| $(PKG_BUILD_DIR)/rtw89_8852c_git.ko \ | |
| $(PKG_BUILD_DIR)/rtw89_8852ce_git.ko | |
| AUTOLOAD:=$(call AutoProbe,rtw89_8852ce_git) | |
| endef | |
| define KernelPackage/rtw89-8852cu-git | |
| $(call KernelPackage/mac80211/Default) | |
| TITLE:=Realtek RTL8852CU support (git) | |
| DEPENDS+= +kmod-rtw89-usb-git +rtl8852c-firmware | |
| FILES:= \ | |
| $(PKG_BUILD_DIR)/rtw89_8852c_git.ko \ | |
| $(PKG_BUILD_DIR)/rtw89_8852cu_git.ko | |
| AUTOLOAD:=$(call AutoProbe,rtw89_8852cu_git) | |
| endef | |
| define KernelPackage/rtw89-8922ae-git | |
| $(call KernelPackage/mac80211/Default) | |
| TITLE:=Realtek RTL8922AE support (git) | |
| DEPENDS+= +kmod-rtw89-pci-git +rtl8922a-firmware +@DRIVER_11BE_SUPPORT | |
| FILES:= \ | |
| $(PKG_BUILD_DIR)/rtw89_8922a_git.ko \ | |
| $(PKG_BUILD_DIR)/rtw89_8922ae_git.ko | |
| AUTOLOAD:=$(call AutoProbe,rtw89_8922ae_git) | |
| endef | |
| define KernelPackage/rtw89-8922au-git | |
| $(call KernelPackage/mac80211/Default) | |
| TITLE:=Realtek RTL8922AU support (git) | |
| DEPENDS+= +kmod-rtw89-usb-git +rtl8922a-firmware +@DRIVER_11BE_SUPPORT | |
| FILES:= \ | |
| $(PKG_BUILD_DIR)/rtw89_8922a_git.ko \ | |
| $(PKG_BUILD_DIR)/rtw89_8922au_git.ko | |
| AUTOLOAD:=$(call AutoProbe,rtw89_8922au_git) | |
| endef | |
| EOF | |
| # Firmwares | |
| # Attribution: https://github.com/openwrt/openwrt/blob/main/package/firmware/linux-firmware/realtek.mk | |
| install -D -m 0644 /dev/stdin ./package/firmware/rtw89-firmware/realtek.mk <<'EOF' | |
| Package/rtl8851b-firmware = $(call Package/firmware-default,RealTek RTL8851B firmware) | |
| define Package/rtl8851b-firmware/install | |
| $(INSTALL_DIR) $(1)/lib/firmware/rtw89 | |
| $(INSTALL_DATA) $(PKG_BUILD_DIR)/firmware/rtw8851b_fw.bin $(1)/lib/firmware/rtw89 | |
| endef | |
| $(eval $(call BuildPackage,rtl8851b-firmware)) | |
| Package/rtl8852a-firmware = $(call Package/firmware-default,RealTek RTL8852A firmware) | |
| define Package/rtl8852a-firmware/install | |
| $(INSTALL_DIR) $(1)/lib/firmware/rtw89 | |
| $(INSTALL_DATA) $(PKG_BUILD_DIR)/firmware/rtw8852a_fw.bin $(1)/lib/firmware/rtw89 | |
| endef | |
| $(eval $(call BuildPackage,rtl8852a-firmware)) | |
| Package/rtl8852b-firmware = $(call Package/firmware-default,RealTek RTL8852B firmware) | |
| define Package/rtl8852b-firmware/install | |
| $(INSTALL_DIR) $(1)/lib/firmware/rtw89 | |
| $(INSTALL_DATA) $(PKG_BUILD_DIR)/firmware/rtw8852b_fw-1.bin $(1)/lib/firmware/rtw89 | |
| endef | |
| $(eval $(call BuildPackage,rtl8852b-firmware)) | |
| Package/rtl8852bt-firmware = $(call Package/firmware-default,RealTek RTL8852BT firmware) | |
| define Package/rtl8852bt-firmware/install | |
| $(INSTALL_DIR) $(1)/lib/firmware/rtw89 | |
| $(INSTALL_DATA) $(PKG_BUILD_DIR)/firmware/rtw8852bt_fw.bin $(1)/lib/firmware/rtw89 | |
| endef | |
| $(eval $(call BuildPackage,rtl8852bt-firmware)) | |
| Package/rtl8852c-firmware = $(call Package/firmware-default,RealTek RTL8852C firmware) | |
| define Package/rtl8852c-firmware/install | |
| $(INSTALL_DIR) $(1)/lib/firmware/rtw89 | |
| $(INSTALL_DATA) $(PKG_BUILD_DIR)/firmware/rtw8852c_fw-2.bin $(1)/lib/firmware/rtw89 | |
| endef | |
| $(eval $(call BuildPackage,rtl8852c-firmware)) | |
| Package/rtl8922a-firmware = $(call Package/firmware-default,RealTek RTL8922A firmware) | |
| define Package/rtl8922a-firmware/install | |
| $(INSTALL_DIR) $(1)/lib/firmware/rtw89 | |
| $(INSTALL_DATA) $(PKG_BUILD_DIR)/firmware/rtw8922a_fw-4.bin $(1)/lib/firmware/rtw89 | |
| endef | |
| $(eval $(call BuildPackage,rtl8922a-firmware)) | |
| EOF | |
| # See: https://openwrt.org/docs/guide-developer/toolchain/single.package#kernel_modules | |
| curl https://downloads.openwrt.org/releases/24.10.5/targets/ipq40xx/generic/config.buildinfo -o .config | |
| #make tools/install | |
| #make toolchain/install | |
| make menuconfig | |
| ./scripts/feeds install kmod-mac80211 | |
| make target/linux/compile -j$(nproc) V=s || true | |
| make package/kernel/linux/compile -j$(nproc) V=s | |
| make package/firmware/rtw89-firmware/compile -j$(nproc) V=s | |
| # Clean if recompile | |
| make target/linux/clean || true | |
| make package/kernel/linux/clean | |
| make package/firmware/rtw89-firmware/clean |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment