文章目录

  • 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=1key_mgmt=WPA-EAP WPA-PSK IEEE8021X NONEpairwise=CCMP TKIPgroup=CCMP TKIP WEP104 WEP40psk="88888888"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.confAdding 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 3sudhcpc -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

GEC6818 移植 rtl8723bu wifi驱动相关推荐

  1. 三星S5PV210移植RTL8723BU WiFi驱动

    硬件环境:Samsung s5pv210 软件环境:Linux kernel 2.6.35.7 1.编译生成生成.ko文件 驱动安装包下载地址请点击rtl8723bu wifi驱动 下载完成的驱动包先 ...

  2. 移植MT7601 WIFI驱动(sta模式)到s5pv210开发板

    1. 前期准备工作和移植环境搭建 1.1 移植环境的搭建 Ubuntu14.04(当然也可以用其他Ubuntu版本),作为源码编译环境,而且已经安装了交叉编译工具链: 用官方提供的内核源码,编译得到内 ...

  3. 全志D1-H芯片 如何移植 rtl8821cu wifi 驱动到 Linux-5.4内核?

    问题背景 移植 Linux-4.9 或之前的内核版本下的 wifi 驱动到 Linux-5.4 内核版本时会出现编译和运行错误, 该 FAQ 主要用于帮助开发人员解决驱动移植出现的问题. 问题分析 移 ...

  4. RK平台移植rtl8852bs wifi驱动

    RK平台 android 12的内核里面没有rtl8852bs wifi驱动,找模组原厂要了驱动,看了一下是其他平台的...要放RK平台是编译不过的,要做一下相应的修改,有点坑! 首先,修改kerne ...

  5. 【实践驱动开发3-006】TI WL1835MODCOM8 在android的移植 - SDIO wifi驱动的注册步骤

     说明之前:文档建立在实际的项目中: 硬件环境是三星x210,软件是android4.0 ubuntu13.04 EDITING AREA Linux的platform 机制简介 从 Linux ...

  6. 十二、Hi3556移植RTL8189 WIFI驱动

    Hi3556V200从代理拿到的SDK包中,是不包含RTL8189模块的驱动的.我们从某WIFI模块厂家要到了RTL8189的芯片驱动,于是开始着手移植驱动到平台上面. 一.Linux驱动添加RTL8 ...

  7. 酷比魔方i7手写板,Ubuntu 18.04,RTL8723BU wifi驱动安装

    近日尝试把闲置的酷比魔方i7手写板的系统改成Ubuntu 18.04.装的过程中就无法连wifi.选择不联网安装后.能看到wifi适配器,在离路由器很近的地方才能收到wifi.但总是连接不上.非常偶尔 ...

  8. 酷比魔方i7手写版linux网卡驱动,酷比魔方i7手写板,Ubuntu 18.04,RTL8723BU wifi驱动安装...

    近日尝试把闲置的酷比魔方i7手写板的系统改成Ubuntu 18.04.装的过程中就无法连wifi.选择不联网安装后.能看到wifi适配器,在离路由器很近的地方才能收到wifi.但总是连接不上.非常偶尔 ...

  9. Android wifi驱动的移植 realtek 8188

    Android wifi驱动的移植 一般我们拿到的android源代码中wifi应用层部分是好的, 主要是wifi芯片的驱动要移植并添加进去. wifi驱动的移植, 以realtek的8188etv为 ...

最新文章

  1. 《jQuery、jQuery UI及jQuery Mobile技巧与示例》——3.3 技巧:生成类名
  2. 不同外置模拟器用Android Studio连接指令
  3. gwas snp 和_GWAS分析中:为何有些SNP效应值大却不显著?
  4. android WebView的简单使用
  5. url参数中有+、空格、=、%、、#等特殊符号的问题解决
  6. android ble status,Android BLE peripheral disconnects with status code BLE_HCI_INSTANT_PASSED(0x28)
  7. 微机计算机原理姚向华课后答案,微型计算机操作系统
  8. 计算机的安全设置在哪儿,电脑防火墙在哪里设置
  9. MyBatis 解析运行原理
  10. 查看 Proxy 的 $ProxyX.class文件
  11. Hive的伴奏_Position Music顶级背景音乐合集243CD
  12. Zigbee 学习计划——第3天——熟悉CC2530的基本例程(续)
  13. 网络之华为USG6000防火墙日志清理
  14. 基于HTML5移动app开发教程一
  15. go install报错no install location for directory outside GOPATH
  16. 关于三菱RJ71EIP91模块的配置
  17. Ubuntu安装.md阅读工具-Typora
  18. opencv + contrib windows下源码编译
  19. 用网页打开本地exe程序
  20. MATLAB-三维插值运算

热门文章

  1. git--基本知识点--1--工作区/暂存区/版本库
  2. Tomcat启动时报错:A child container failed during start解决方案-clean
  3. idea一直indexing.........
  4. 51nod 1556 计算(默慈金数)
  5. 4510. 寻宝!大冒险!
  6. 用c++写一个简单的钓鱼(集卡)程序
  7. 因为在此系统上禁止运行脚本。有关详细信息,请参阅
  8. ES自定义评分机制:function_score查询详解
  9. 联通假4G欺骗消费者!
  10. 简单的机械臂设计(Splay树)