NanoPi NEO Air使用十五:移植RTL8723BU驱动

本文详细介绍了如何在NanoPi NEO Air上移植并配置RTL8723BU Wi-Fi驱动。首先从GitHub下载驱动源码,然后修改内核目录的Makefile和Kconfig文件,使驱动生效。接着进行内核配置,支持USB和Wi-Fi设备,编译内核及驱动模块。遇到rtl8xxxu冲突时,将它加入黑名单。最后,解决驱动导致的两个问题,包括关闭省电模式和并发模式,确保Wi-Fi稳定连接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

NanoPi NEO Air使用一:介绍
NanoPi NEO Air使用二:固件烧录
NanoPi NEO Air使用三:OverlayFS、CPU温度和频率、wifi、蓝牙、npi-config
NanoPi NEO Air使用四:操作GPIO
NanoPi NEO Air使用五:安装Xfce和xrdp,实现远程访问
NanoPi NEO Air使用六:使用摄像头
NanoPi NEO Air使用七:获取并编译U-boot和Linux的源码
NanoPi NEO Air使用八:编写个简单的驱动和应用程序
NanoPi NEO Air使用九:使用Linux内核自带的LED驱动
NanoPi NEO Air使用十:自己编写驱动来控制LED
NanoPi NEO Air使用十一:编写SPI驱动点亮TFT屏幕,ST7789V



NanoPi NEO Air默认只支持如下USB驱动:

序号型号
1RTL8188CUS/8188EU 802.11n WLAN Adapter
2RT2070 Wireless Adapter
3RT2870/RT3070 Wireless Adapter
4RTL8192CU Wireless Adapter
5小米WiFi mt7601
65G USB WiFi RTL8821CU
75G USB WiFi RTL8812AU

如果要使用RTL8723BU就需要自己移植驱动了。

获取驱动

首先去github上下载RTL8723BU的驱动,链接
在这里插入图片描述
从redame.md文档得知4.3.16分支比主分支更好,因此也可以选择4.3.16分支来使用。
下载下来后,把驱动放到\drivers\net\wireless\目录,并解压
在这里插入图片描述

使驱动生效

拷贝后我们就要让内核加载这个驱动,或者我们把它编译成模块。
因此我们就需要修改\drivers\net\wireless\这个目录下的Makefile和Kconfig文件

在Kconfig文件中添加以下部分
source "drivers/net/wireless/rtl8723BU/Kconfig"
在这里插入图片描述

这样我们就可以在make menuconfig中配置这个驱动

在Makefile文件中添加以下部分
obj-$(CONFIG_RTL8723BU) += rtl8723BU/
在这里插入图片描述

修改驱动的makefile

只是修改\drivers\net\wireless\目录下的Makefile和Kconfig文件已经能正常测试了,但是wifi的信号很差,在网上了查找了半天资料才知道还需要修改驱动目录中的makefile。

首先在Platform Related下面添加CONFIG_PLATFORM_ARM_H3 = y,并把其他的y改为n
在这里插入图片描述
然后在下面配置编译规则:

ifeq ($(CONFIG_PLATFORM_ARM_H3), y)
EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
EXTRA_CFLAGS += -DCONFIG_CONCURRENT_MODE
EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT
#ifeq ($(CONFIG_USB_HCI), y)
#EXTRA_CFLAGS += -DCONFIG_USE_USB_BUFFER_ALLOC_TX -DCONFIG_FIX_NR_BULKIN_BUFFER
#endif
ARCH := arm
CROSS_COMPILE := arm-linux-
KVER := 4.14.111
KSRC := /home/ql/linux/H3ql/linux
MODULE_NAME := 8723bu
endif

在这里插入图片描述
解释:

ifeq ($(CONFIG_PLATFORM_ARM_H3), y) //将要编译的平台,与上面的平台要一致
EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN //不需要更改
EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT //不需要更改
#SUBARCH := $(shell uname -m | sed -e s/i.86/i386/) //不用,注释
ARCH := arm //架构(体系结构)
CROSS_COMPILE :=/usr/local/arm/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/fsl-linaro-toolchai
n/bin/arm-fsl-linux-gnueabi- //交叉编译器,建议使用绝对路径
KVER := 4.14.111 //ARM Linux 的内核版本
KSRC := /home/ql/linux/H3ql/linux   //EVB-P6UL 的内核源码路径
endif

make menuconfig设置

接下来就make menuconfig,但是我们不仅要加载这个驱动,还需要配置内核使其支持wifi和usb,因为RTL8723是通过USB接在开发板上面的。

1.支持USB设备
在这里插入图片描述
2.支持WIFI设备
在这里插入图片描述

3.支持无线网络IEEE 802.11
在这里插入图片描述

最后是我们的RTL8723
在这里插入图片描述

我们选择将其编译为模块

编译内核、使用

编译内核

make XXXconfig ARCH=arm CROSS_COMPILE=arm-linux-
make zImage ARCH=arm CROSS_COMPILE=arm-linux-
make modules ARCH=arm CROSS_COMPILE=arm-linux-       //生成8723bu.ko

把8723bu.ko拷贝到开发板中执行insmod 8723bu.ko加载
之后可以使用iwlist scan来扫描wifi热点

查看网络设备列表
nmcli dev

注意,如果列出的设备状态是 unmanaged 的,说明网络设备不受NetworkManager管理,你需要清空 /etc/network/interfaces下的网络设置,然后重启.

  • 开启WiFi
    nmcli r wifi on

  • 扫描附近的 WiFi 热点(按q退出列表状态)
    nmcli dev wifi

  • 连接到指定的 WiFi 热点
    nmcli dev wifi connect "SSID" password "PASSWORD" ifname wlan0

请将 SSID和 PASSWORD 替换成实际的 WiFi名称和密码。
连接成功后,下次开机,WiFi 也会自动连接。
在这里插入图片描述
此时可以看到wlan0网口已经有ip了,ping百度也通了,说明网络连接已经正常了。
在这里插入图片描述

rtl8xxxu冲突问题

在网上看到这篇文章说RTL8723BU的驱动程序无法与标准驱动程序rtl8xxxu一起工作,因此需要将其列入黑名单。
在系统运行起来后,执行lsmod能看到有个rtl8xxxu,把他加入黑名单禁用就行了:

运行以下命令
sudo nano /etc/modprobe.d/blacklist-rtl8xxxu.conf
添加一行
blacklist rtl8xxxu

RTL8723BU驱动两个大坑

按照上面方法移植驱动后,能否用起来了,但是还有两个坑:
1、insmod驱动后,会出来两个wlan
看网上的说法“有两个wlan不是bug,realtek网卡驱动默认就是这样,有一个可以作为ap,关掉一个宏就只剩下一个了。”

2、网络连接不稳定,有时候突然就断了。

在网上各种找资料后发现还需要修改下驱动下的Makefile文件:
首先把省电模式关闭:(解决连接不稳定的问题)
在这里插入图片描述
然后并发模式关闭:(解决出来两个wlan的问题)
EXTRA_CFLAGS += -DCONFIG_CONCURRENT_MODE注释掉
在这里插入图片描述
在这里插入图片描述

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qlexcel

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值