GEC6818 移植 rtl8723bu wifi驱动

news2024/12/27 15:55:26

文章目录

    • 1. 配置内核
    • 2、RTL8723BU 模块驱动编译
      • 2.1 下载解压
      • 2.2 配置编译
    • 3. openssl 移植
      • 3.1 下载解压
      • 3.2 配置
      • 3.3 编译安装
    • 4. libnl 移植
      • 4.1 下载解压
      • 4.2 进入源码目录并配置
      • 4.3 编译安装
    • 5. wpa_supplicant 移植
      • 5.1 解压源码
      • 5.2 配置
      • 5.3 `make`编译
    • 6. 启动wifi网卡
      • 6.1 配置WiFi连接信息
        • 6.1.1 修改wpa_supplicant.config文件,添加连接的wifi信息:
        • 6.1.2 创建一个socket通信的目录
        • 6.2.3 多网卡冲突问题解决
      • 6.2 连接wifi
      • 6.3 获取IP地址
      • 6.4 开机自动启动WiFi驱动

1. 配置内核

进入内核目录。

~/6818GEC/kernel$ cp arch/arm/configs/GEC6818_defconfig .config

先配置 6818 的 Linux 内核,然后编译,让其支持 WiFi 相关功能。

[*] Networking support ---> [CONFIG_NET]
	[*] Wireless ---> [CONFIG_WIRELESS]
		<*/M> cfg80211 - wireless configuration API [CONFIG_CFG80211]
		[*] cfg80211 wireless extensions compatibility [CONFIG_CFG80211_WEXT]
		<*/M> Generic IEEE 802.11 Networking Stack (mac80211) [CONFIG_MAC80211]
Device Drivers --->
	[*] Network device support ---> [CONFIG_NETDEVICES]
	[*] Wireless LAN ---> [CONFIG_WLAN]

复制配置文件

​ cp .config arch/arm/configs/GEC6818_defconfig

编译完后烧录使用 fastboot 将内核烧录到开发板

2、RTL8723BU 模块驱动编译

2.1 下载解压

下载地址:https://pan.baidu.com/s/1KOx_HiLzhBunCEz8jDUTOQ 提取码:svun

解压:

$tar Jxf rtl8723BU-WiFi-source.tar.xz
$cd rtl8723BU_WiFi/

2.2 配置编译

修改 Makefile 里面 778 行的指向的 6818 的 Linux 内核源码和交叉编译工具 链的路径。
在这里插入图片描述
然后 make 即可,会在当前目录下看到 rtl8723bu_wifi.ko 的驱动文件.
在这里插入图片描述
把 rtl8723bu_wifi.ko 拷贝到 6818 加载驱动

#insmod rtl8723bu_wifi.ko 

在这里插入图片描述
利用“ifconfig –a”命令查看是否生成了 wlan0 网络设备接口。

WiFi 驱动移植后,还要上层应用去驱动其工作,现在 Linux 和 Android 一般用的是 wpa_supplicant,因为该工具支持前面所说的所有加密方式的连接。 移植 wpa_supplicant 之前,需要先移植依赖库 openssl 和 libnl 的库。

3. openssl 移植

3.1 下载解压

下载地址:https://pan.baidu.com/s/1uIUG2Mic0e8K2eXt_AeFWw 提取码:d84r

解压 tar -zxvf openssl-1.0.2k.tar.gz

进入源码目录 cd openssl-1.0.2k

3.2 配置

配置 ./config no-asm shared no-async --prefix=/home/sun/nfs_rootfs/wifi_driver/wifi_depend/openssl_lib --cross-compile-prefix=arm-linux-

去掉这些Makefile中所有 -m64

修改 Makefile 文件,把其中的-m64 去掉。

3.3 编译安装

$make
$make install

make install 即可在 /home/sun/nfs_rootfs/wifi_driver/wifi_depend/openssl_lib 目录下看到安装好的 openssl 了。

在这里插入图片描述

4. libnl 移植

4.1 下载解压

下载地址:https://pan.baidu.com/s/1jsbCJgxnp9sHzuiGK75ejw 提取码:y0bk

$tar zxvf libnl-3.2.29.tar.gz

4.2 进入源码目录并配置

$cd libnl-3.2.29/
./configure --prefix=/home/sun/nfs_rootfs/wifi_driver/wifi_depend/libnl_lib --host=arm-linux

报错:

configure: WARNING: bison not found. Please install before continuing.
configure: error: Required packages are missing. Please install them and rerun ./configure

安装 bison,flex:

sudo apt-get install bison``sudo apt-get install flex

重新./configure:

4.3 编译安装

make出现错误:
在这里插入图片描述
修改 include/linux-private/linux/ipv6.hinclude/linux-private/linux/if_bridge.h#include<linux/in6.h> 都替换为 #include <netinet/in.h>
重新编译安装

$make
$make install

安装完后即可在 /home/sun/nfs_rootfs/wifi_driver/wifi_depend/libnl_lib 目录下看到安装好的 libnl 了。
在这里插入图片描述

5. wpa_supplicant 移植

wpa_supplicant是wifi客户端(client)加密认证工具,和iwconfig不同,wpa_supplicant支持wep、wpa、wpa2等完整的加密认证,而iwconfig只能支持wep。

wpa_supplicant运行于后台,它需要借助控制台工具wpa_cli来进行手动操作,使用wpa_cli来搜索、设置、和连接网络。

5.1 解压源码

下载地址:https://pan.baidu.com/s/1RxlvGwQDdju8CMiW2CqNXg 提取码:hg5j

$tar zxvf wpa_supplicant-2.6.tar.gz
进入源码目录
$cd wpa_supplicant-2.6/wpa_supplicant/

5.2 配置

拷贝默认配置文件

修改 .config 文件如下:

$cp defconfig .config
修改.config,使能 libnl32 的库,去掉#号。
CONFIG_LIBNL32=y

修改 Makefile 在头部添加指定外部库路径如下内容:

CFLAGS += -I/home/sun/nfs_rootfs/wifi_driver/wifi_depend/openssl_lib/include 
-I/home/sun/nfs_rootfs/wifi_driver/wifi_depend/wifi_depend/libnl_lib/include/libnl3
LIBS += -L/home/sun/nfs_rootfs/wifi_driver/wifi_depend/openssl_lib/lib 
-L/home/sun/nfs_rootfs/wifi_driver/wifi_depend/libnl_lib/lib -ldl 
CC = arm-linux-gcc

添加环境变量
编译hostapd的时候是需要指定libnl的pkgconfig路径,否则会提示“libnl-3.0”或者“libnl-3.0.pc”找不到等错误。

export PKG_CONFIG_PATH=/home/sun/nfs_rootfs/wifi_driver/wifi_depend/libnl_lib/lib/pkgconfig/:$PKG_CONFIG_PATH
export PKG_CONFIG_PATH=/home/sun/nfs_rootfs/wifi_driver/wifi_depend/openssl_lib/lib/pkgconfig/:$PKG_CONFIG_PATH

5.3 make编译

生成 wpa_supplicant、wpa_passphrase 和 wpa_cli 三个程序,并利用 NFS 服务拷贝到 6818 上的/usr/bin 目录下。
在这里插入图片描述
最后拷贝 libnl openssl_lib 库到板子上的 /usr/lib 即可。

6. 启动wifi网卡

6.1 配置WiFi连接信息

6.1.1 修改wpa_supplicant.config文件,添加连接的wifi信息:

/etc 目录下创建 wpa_supplicant.conf 文件,内容为

ctrl_interface=DIR=/var/run/wpa_supplicant
update_config=1
network={
    ssid="sevan"
    scan_ssid=1
    key_mgmt=WPA-EAP WPA-PSK IEEE8021X NONE
    pairwise=CCMP TKIP
    group=CCMP TKIP WEP104 WEP40
    psk="sunhui123"
    eap=TTLS PEAP TLS
}

其中 ssid 为要连接 wifi 的名字,psk 为密码。

6.1.2 创建一个socket通信的目录

mkdir -p /var/run/wpa_supplicant

6.2.3 多网卡冲突问题解决

注意:
双网卡的单板的两个网卡IP不能设置为同一网段。原因参考:(https://www.zhihu.com/question/41331151)。

也就是先把有线网卡IP设置为其它网段,比如:

ifconfig eth0 192.168.2.220

或者ifconfig etho down 关闭有线网卡

然后启动WIFI网卡,并设置IP(路由器IP为192.168.1.1):

ifconfig wlan0 up
ifconfig wlan0 192.168.1.220 //也可动态获取

6.2 连接wifi

运行 wpa_supplicant -Dnl80211 -iwlan0 -c/etc/wpa_supplicant.conf -dd& 命令连接 wifi

若提示以下,说明连接成功,如果不成功可以继续使用上面命令继续连接:

[root@GEC6818 /IOT]#wpa_supplicant v2.6
random: Trying to read entropy from /dev/random
Successfully initialized wpa_supplicant
Initializing interface 'wlan0' conf '/etc/wpa_supplicant.conf' driver 'nl80211' ctrl_interface 'N/A' bridge 'N/A'
Configuration file '/etc/wpa_supplicant.conf' -> '/etc/wpa_supplicant.conf'
Reading configuration file '/etc/wpa_supplicant.conf'
ctrl_interface='DIR=/var/run/wpa_supplicant'
update_config=1
Line: 3 - start of a new network block
ssid - hexdump_ascii(len=14):
     33 36 30 57 69 46 69 2d 31 38 36 32 45 39         360WiFi-1862E9  
scan_ssid=1 (0x1)
...
wlan0: WPA: Key negotiation completed with c4:36:55:18:62:e9 [PTK=CCMP GTK=CCMP]
wlan0: Cancelling authentication timeout
wlan0: State: GROUP_HANDSHAKE -> COMPLETED
wlan0: Radio work 'connect'@0xce658 done in 1.059341 seconds
wlan0: radio_work_free('connect'@0xce658: num_active_works --> 0
wlan0: CTRL-EVENT-CONNECTED - Connection to c4:36:55:18:62:e9 completed [id=0 id_str=]
nl80211: Set wlan0 operstate 0->1 (UP)
netlink: Operstate: ifindex=5 linkmode=-1 (no change), operstate=6 (IF_OPER_UP)
EAPOL: External notification - portValid=1
EAPOL: External notification - EAP success=1
EAPOL: SUPP_PAE entering state AUTHENTICATING
EAPOL: SUPP_BE entering state SUCCESS
EAP: EAP entering state DISABLED
EAPOL: SUPP_PAE entering state AUTHENTICATED
EAPOL: Supplicant port status: Authorized
nl80211: Set supplicant port authorized for c4:36:55:18:62:e9
EAPOL: SUPP_BE entering state IDLE
EAPOL authentication completed - result=SUCCESS

6.3 获取IP地址

利用 udhcpc 命令为其获取,设置 IP、网关和 DNS 等信息。

[root@GEC6818 /IOT]#udhcpc -i wlan0
udhcpc: started, v1.25.1
Setting IP address 0.0.0.0 on wlan0
udhcpc: sending discover
udhcpc: sending select for 192.168.0.6
udhcpc: lease of 192.168.0.6 obtained, lease time 172800
Setting IP address 192.168.0.6 on wlan0
Deleting routers
route: SIOCDELRT: No such process
Adding router 192.168.0.1
Recreating /etc/resolv.conf
 Adding DNS server 192.168.0.1

[root@GEC6818 /IOT]#ping baidu.com
PING baidu.com (39.156.66.10): 56 data bytes
64 bytes from 39.156.66.10: seq=0 ttl=50 time=45.646 ms
64 bytes from 39.156.66.10: seq=1 ttl=50 time=44.717 ms
64 bytes from 39.156.66.10: seq=2 ttl=50 time=44.384 ms

查看开发板网卡ip信息

[root@GEC6818 /IOT]#ip route
default via 192.168.1.1 dev wlan0 
192.168.1.0/24 dev eth0  src 192.168.1.200 
192.168.1.0/24 dev wlan0  src 192.168.1.102 

6.4 开机自动启动WiFi驱动

可将以上命令放入一个sh命令中:
示例如下:

vi wifi_connect.sh  #创建一个sh命令

内容如下:
#!/bin/sh
insmod driver_ko/rtl8723bu_wifi.ko 

ifconfig eth0 down   # 双网卡的单板的两个网卡IP不能设置为同一网段,关闭有线网卡,或者修改网络段

ifconfig wlan0 up
wpa_supplicant -Dnl80211 -iwlan0 -c/etc/wpa_supplicant.conf -dd&

sleep 3s

udhcpc -i wlan0
echo "wifi_init_finish!"

开机时直接使用 sh wifi_connect.sh 对wifi进行配置且连接。

开发板挂载: mount -t nfs -o nolock 192.168.1.103:/home/sun/nfs_rootfs /mnt

参考链接:
https://cxyzjd.com/article/qq_46604211/116067062
https://blog.csdn.net/thisway_diy/article/details/81327077

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/192861.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python调用Go语言编译的动态链接库(CGO)【待续】

CGO C 语言作为一个通用语言&#xff0c;很多库会选择提供一个 C 兼容的 API&#xff0c;然后用其他不同的编程语言实现。Go 语言通过自带的一个叫 CGO 的工具来支持 C 语言函数调用&#xff0c;同时我们可以用 Go 语言导出 C 动态库接口给其它语言使用。 hello world程序 p…

【定时同步系列11】各种开环定时同步算法与MCRB性能对比的MATLAB仿真

重要声明:为防止爬虫和盗版贩卖,文章中的核心代码和数据集可凭【CSDN订阅截图或公z号付费截图】私信免费领取,一律不认其他渠道付费截图! 引言 开环定时同步包括内插控制、定时误差估计等环节,其中内插控制在之前的博客里有详细的描述,请翻阅之前的博客! 【定时同步系…

Python编程技巧分享:6 个必知必会高效 Python

编写更好的Python 代码需要遵循Python 社区制定的最佳实践和指南。遵守这些标准可以使您的代码更具可读性、可维护性和效率。 本文将展示一些技巧&#xff0c;帮助您编写更好的 Python 代码 遵循 PEP 8 风格指南 PEP 8 是 Python 代码的官方风格指南。它提供了一组用于格式化…

Maven parent多项目打包找不到reversion变量问题

项目结构&#xff1a;packagetest&#xff1a;顶级父级c1&#xff1a;子项目&#xff08;web项目&#xff09;c2&#xff1a;子项目(jar包)c1依赖c2的jar包。在父级maven中deploy成功&#xff0c;package也成功&#xff0c;私服上有都有包了。但是在c1上package的时候&#xff…

二十、操纵管道

本章将讨论如何在应用程序中使用多种方式操作管道。本章的部分内容都是很底层的&#xff0c;所以在开始阅读之前&#xff0c;请确保你需要一些编程知识&#xff0c;并对GStreamer有很好的理解。 这里将讨论的主题包括如何从应用程序向管道中插入数据&#xff0c;如何从管道中读…

电商项目之Mailgun邮件退信率升高

文章目录1 项目背景2 前言3 采取的措施4 排查的思路5 原因6 技术实现方案1 项目背景 运维人员进行日常巡检发现Mailgun邮件代发渠道的退信率不寻常&#xff0c;在某个时间段会飙高。这会有2个影响&#xff1a; &#xff08;1&#xff09;针对运维的角度&#xff0c;Mailgun官方…

3.SpringBoot配置

一、IOC的好处在对象依赖关系复杂的对象中&#xff0c;只需要考虑“我自己”依赖什么&#xff0c;减少程序员思考负担方便的进行依赖概念&#xff08;接口、抽象类&#xff09;的实现类对象的替换。二、什么是SpringBoot?1.SprigBoot是Spring的一个子工程&#xff0c;目标就是…

JS逆向技巧汇总---给普通爬虫学习者的吐血建议

爬虫实战的JS逆向&#xff0c;就像是做侦探。很多时候&#xff0c;我们要尝试不同方式和手段寻找线索&#xff0c;不能放过蛛丝马迹&#xff0c;通过仔细观察和比较&#xff0c;然后顺藤摸瓜&#xff0c;找到加密入口。再调试JS代码的时候&#xff0c;需要保持清晰的目标和方向…

专科逆袭入职腾讯,真是小母牛坐飞机,牛逼上天了..

在踏入腾讯&#xff0c;办理入职手续的那一天&#xff0c;作为一个男子汉&#xff0c;确实是落泪了。特地分享一波我的真实经历&#xff0c;共勉。 先说一下自己的个人情况&#xff0c;18 届应届生&#xff0c;通过校招进入到了国内某二线城市传统互联网公司&#xff0c;然后一…

优化算法:曲径步长通优处,优化半天白优化

本文来自公众号“AI大道理” 训练一个神经网络&#xff0c;我们想要得到误差最小&#xff0c;就是要我们的损失函数最小。 如何得到最小值呢&#xff1f; 这就是优化算法。 梯度下降法是众多优化中的一种。 1、损失函数 2、GD&#xff08;梯度下降法&#xff09; 3、BGD&a…

Java集合基础

文章目录集合基础一、集合介绍1. 什么是集合&#xff1f;2. 集合类型3. ArrayList 长度可变原理4. 集合和数组的使用选择二、ArrayList 集合快速入门集合创建语句泛型(<>)三、集合常用成员方法1. 增加元素2. 删除元素3. 修改元素4. 查找数据四、集合遍历1. 集合存储字符串…

国联易安:2023年网络安全“五大技术”预测

我国对网络安全非常重视&#xff0c;明确指出“安全是发展的前提&#xff0c;发展是安全的保障&#xff0c;安全和发展要同步推进”。作为国内专注于保密与非密领域的分级保护、等级保护、业务连续性安全和大数据安全产品解决方案与相关技术研究开发的领军企业&#xff0c;国联…

数学建模与数据分析 || 3. 面向数据的特征提取方法: 探索性数据分析

面向数据的特征提取方法: 探索性数据分析 文章目录面向数据的特征提取方法: 探索性数据分析1. 原始数据的准备1.1 导入 python 模块1.2 导入数据集并进行宏观认识1.3 数据集描述2. 数据的预处理2.1 缺失数据的甄别2.2 类别规模的评估3. 数据特征的处理3.1 第一个因变量- 分析范…

【Linux】Linux调试器-gdb使用

作者&#xff1a;小卢 专栏&#xff1a;《Linux》 喜欢的话&#xff1a;世间因为少年的挺身而出&#xff0c;而更加瑰丽。 ——《人民日报》 目录 1.背景 2.gdb的使用 2.1如何生成可以调试debug版本的文件&#xff1a; 2.2如何查看调试信息&…

wcf服务启动禁用Wcf测试客户端(WcfTestClient)

以下页面在WCF工程运行时&#xff0c;会自动启动wcf测试客户端。如果想禁止&#xff0c;可以通过这个方法。 如果希望F5时始终启动IE&#xff0c;可以在.csproj.user文件里增加EnableWcfTestClientForSVC属性配置以禁用WCF测试客户端&#xff1a; <Project> <ProjectE…

Excel等文件中出现新型恶意软件Dropper,通过钓鱼邮件传播

Dropper 是将 Payload 部署到失陷主机的恶意软件&#xff0c;被很多攻击者使用。2022 年第二季度研究人员发现了一些活跃的 Dropper&#xff0c;例如 Microsoft Excel 文件以及 Windows 快捷方式文件和 ISO 文件。通过与社会工程相结合的攻击方式&#xff0c;诱使受害者触发失陷…

打脸质疑者!Mobileye市值冲高,公司CEO说出心声

三个多月前&#xff0c; Mobileye以21美元发行价第二次在美股IPO上市。截止上周五&#xff0c;该公司股价升至32.98美元&#xff0c;市值达到264.47亿美元。相比于美股其他自动驾驶公司股价跌跌不休&#xff0c;显然&#xff0c;资本市场更看重企业的盈利能力和可预见的营收规模…

CVE-2023-24055漏洞复现

KeePass download | SourceForge.net 下载链接 直接咔咔安装 默认路径&#xff1a; 先汉化一下 汉化文件放进去 切换到 KeePass&#xff0c;单击 View → Change Language&#xff0c;然后选择您的语言。重新启动 KeePass 汉化成功。建立新数据库&#xff1a; 文件默认命名为…

HTTP协议详细解读

文章目录1. HTTP概念2. HTTP 特点3. HTTP 协议的工作过程4. 认识URL5. HTTP 请求数据格式6. HTTP 响应数据格式7. 总结&#x1f4c2;橙子精品文章学习推荐1. HTTP概念 HTTP&#xff1a;HyperText Transfer Protocol&#xff0c;超文本传输协议。HTTP 协议规定了浏览器和服务器…

Vue中的 v-show 和 v-if 的区别

一、v-show与v-if的共同点 我们都知道在 vue 中 v-show 与 v-if 的作用效果是相同的(不含v-else)&#xff0c;都能控制元素在页面是否显示 在用法上也是相同的 <Model v-show"isShow" /> <Model v-if"isShow" /> 当表达式为true的时候&…