Out-of-tree Linux driver for the Realtek RTL8733BU USB WiFi+BT combo chip
(USB id 0bda:b733), ported to build and run on Linux 7.1.
There is no mainline driver for this chip (mainline rtw89 tops out at
8851/8922; rtl8xxxu does not cover 8733B; nothing binds 0bda:b733). This repo
carries a port of the wirenboard out-of-tree driver to Linux 7.1.
Realtek Semiconductor Corp (original vendor driver, GPL-2.0)
│
▼
wirenboard/rtl8733bu (branch v5.15.12-264_for6.18; upstream-tested to 5.10.x / 6.8.x)
│
▼
this repo, branch linux-7.1-port (rk-forge / Awesome-Embedded-Learning-Studio port to 7.1)
The linux-7.1-port branch is v5.15.12-264_for6.18 plus the port commits
below. The full wirenboard history is preserved in the branch ancestry
(attribution). Realtek's per-file copyright + GPL-2.0 headers are preserved in
every source file. (wirenboard's README noted 5.10.x / 6.8.x fixes + WirenBoard
config tuning; this fork's focus is the 6.8 → 7.1 API port.)
build: replace multi-chip Makefile with static Kbuild— the upstream 2803-line multi-chip Makefile (whose out-of-treeM=path segfaults make on some hosts) is replaced by a static Kbuild:obj-$(CONFIG_RTL8733BU) += 8733bu.o- the fully-expanded 187-entry
8733bu-ylist +ccflags-y(path macros\"-escaped;CONFIG_BR_EXTstripped — hits a removed 7.x API). Stable in-treeobj-$()build path.
- the fully-expanded 187-entry
kconfig: depends on USB && CFG80211— fixes the upstreamdepends on MMCcopy-paste typo (it's a USB device) + adds SPDX + help text.cfg80211: wdev-ops wrappers for 6.14+ MLO drift— Linux ~6.14 changed 9cfg80211_opscallbacks fromnet_device *towireless_dev *. Rather than rewrite 9 multi-line#if-gated signatures, 9 thin_wdevforwarders (using the driver's existingwdev_to_ndev()) are added before the ops struct; the struct points at them. Plus 2 caller edits. This is the main body of the API port.
In-tree, as a module:
- Place this tree at
drivers/net/wireless/realtek/rtl8733bu/inside a Linux 7.1 source tree. - Wire it into the realtek subsystem (2 lines — the consumer repo typically
carries this as a patch):
drivers/net/wireless/realtek/Kconfig:source "drivers/net/wireless/realtek/rtl8733bu/Kconfig"drivers/net/wireless/realtek/Makefile:obj-$(CONFIG_RTL8733BU) += rtl8733bu/
- Kernel config:
CONFIG_CFG80211=y(built-in, so the module's deps are present),CONFIG_WLAN_VENDOR_REALTEK=y,CONFIG_RTL8733BU=m.# CONFIG_WLAN is not setmust NOT be set (it gatesWLAN_VENDOR_REALTEK). make modules→drivers/net/wireless/realtek/rtl8733bu/8733bu.ko.
The module must load after the rootfs is mounted (insmod post-switch_root)
because the boot flow mounts the UBIFS rootfs (where firmware lives) only then.
Firmware loads from a built-in C array at runtime; rtl8733bu_fw /
rtl8733bu_config in /lib/firmware/ are an unused fallback.
rk-forge consumes this repo via scripts/fetch-rtl8733bu-driver.sh (clones
linux-7.1-port into the kernel tree + applies the 2-line realtek wiring as a
quilt patch).
Verified on a Rockchip RK3506B board (the aes board in
rk-forge) — onboard
RTL8733BU (USB 0bda:b733, behind a CH334R hub):
insmod 8733bu.ko→ probe (CHIP TYPE: RTL8733B, VID/PID0x0BDA:0xB733)- firmware download from array (v1.40)
wlan0+wlan1created (concurrent mode)iw dev wlan0 scansees APs;wpa_supplicant+udhcpcconnect
Full port detail + pitfalls: rk-forge document/pitfalls/07 + document/notes/29/30.
GPL-2.0-only (LICENSE). The code carries Realtek's per-file
GPL-2.0 headers (MODULE_LICENSE("GPL")); this repo's top-level LICENSE file
documents that grant (the wirenboard repo lacked a repo-level LICENSE file).
Realtek Semiconductor Corp. retains copyright on the original driver; this
fork's port commits are derivative and likewise GPL-2.0-only.