Linux环境下使用WIFI模块:使用wpa_supplicant工具配置和连接WIFI

使用wpa_supplicant工具配置和连接WIFI

实验版本及下载地址

openssl:openssl-1.1.1b
链接: [https://www.openssl.org/source/]

wpa_supplicant:wpa_supplicant-2.7
链接: [http://w1.fi/wpa_supplicant/]

安装依赖库openssl

  1. 配置编译选项
./config shared no-asm --prefix=$PWD/tmp

./config表示根据后面的编译选项生成一Makefile文件,“shared”表示生成共享库;“no-asm”表示去掉汇编部分;“–prefix=”后面跟着生成的项目所存放的路径。
其他配置选项可以输入./Configure --help查看
在这里插入图片描述

  1. 修改Makefile

减号表示原来的代码,加号表示修改后的代码

- CROSS_COMPILE=

+ CROSS_COMPILE=arm-linux-



- CNF_CFLAGS=-pthread -m64
- CNF_CXXFLAGS=-std=c++11 -pthread -m64

+ CNF_CFLAGS=-pthread 
+ CNF_CXXFLAGS=-std=c++11 -pthread 
  1. 编译安装

执行make编译和make install安装指令
最后在当前目录的tmp目录下会生成项目文件
在这里插入图片描述

  1. 复制库文件到跟文件系统lib目录下
 cp *so* -rf -d ~/work/nfs/wifi/lib/

要根据自己的具体情况复制库文件到对应的目录下

编译安装wpa_supplicant

  1. 创建一个.config文件

解压后,cd wpa_supplicant-2.0/wpa_supplicant/进入wpa_supplicant根文件
复制默认配置为.configcp defconfig .config

  1. 修改.config文件

减号表示原来的代码,加号表示修改后的代码

# Additional directories for cross-compilation on Linux host for mingw target
- #CFLAGS += -I/opt/mingw/mingw32/include/ddk
- #LIBS += -L/opt/mingw/mingw32/lib
- #CC=mingw32-gcc

# Additional directories for cross-compilation on Linux host for mingw target
+ CFLAGS += -I/home/zyl/work/project/wifi/openssl-1.1.1b/tmp/include
+ LIBS += -L/home/zyl/work/project/wifi/openssl-1.1.1b/tmp/lib
+ CC=arm-linux-gcc

CFLAGS后面填上一步安装好的openssl的include目录
LIBS后面填上一步安装好的openssl的lib目录
CC表示编译工具

3.编译安装
编译make
安装make DESTDIR=$PWD/tmp install
在后面加上DESTDIR=$PWD/tmp编译项表示安装到当前文件夹下的tmp目录

然后我们可以在子目录下看到wpa_cliwpa_passphrasewpa_supplicant三个文件
Linux环境下使用WIFI模块:使用wpa_supplicant工具配置和连接WIFI_第1张图片
wpa_supplicant是核心程序,它和wpa_cli的关系就是服务和客户端的关系

wpa_cli用来搜索、设置、和连接网络。

wpa_passphrase网络配置可以使用wpa_passphrase工具自动生成并添加到配置文件中。

把这三个文件复制到开发板的根文件/bin目录下就可以使用了

使用wpa_supplicant工具连接WIFI

  1. 创建配置文件

wpa_supplicant连接WIFI的时候会从配置文件中读取账号和密码,以及加密方式等, 所以我们再运行wpa_supplicant工具的时候要提前写好配置文件。
配置文件名称自定,但是要以 .conf 为后缀,并保存在 /etc/ 目录下,这边给出一个配置文件的例子。

ctrl_interface=/var/run/wpa_supplicant  # 一个目录,用于wpa_supplicant和wpa_cli的socket通信
network={
        ssid="dswei"		#WIFI名称
        proto=WPA  # proto: list of accepted protocols, 可取WPA,RSN
                   # 如果没有设置,默认为: WPA RSN
        key_mgmt=WPA-PSK # 认证方式
                         # 如果没有设置,默认为: WPA-PSK WPA-EAP
        pairwise=TKIP    # 如果没有设置,默认为: CCMP TKIP
        group=TKIP       # 如果没有设置,默认为: CCMP TKIP WEP104 WEP40 
        psk="a123654"	 # WIFI密码
}

在一般使用中我们只要设置ssidpsk,其他全部使用默认的,就可以连接上WIFI。

  1. 创建一个socket通信的目录
mkdir -p /var/run/wpa_supplicant
  1. 测试和连接WIFI
wpa_supplicant -B -c/etc/plaintext.conf -iwlan0

-B为后台运行,-c为配置文件目录,plaintext.conf为配置文件的名称,根据实际情况填写。其他配置选项可以看wpa_supplicant-2.7/wpa_supplicant/README,然后我们就可以看到开发板和手机连接上了。
Linux环境下使用WIFI模块:使用wpa_supplicant工具配置和连接WIFI_第2张图片
Linux环境下使用WIFI模块:使用wpa_supplicant工具配置和连接WIFI_第3张图片
wpa_cli -iwlan0 status可以查看网络连接状态

你可能感兴趣的:(WIFI模块)