问题一:
Could not connect to wpa_supplicant - re-trying
答:
1、wpa_supplicant 需要首先启动 (不需要关注是否能够连上设备)
举例:wpa_supplicant -Dnl8021 -iwlan0 -c /etc/wpa_supplicant.conf
2、确认 /var/run/wpa_supplicant/wlan0 权限是不是 root:root
3、这时候就可以进行测试了
问题二:
WPA: 4-Way Handshake failed - pre-shared key may be incorrect
可以通过以下几点逐一排查
1、密码是否正确
2、确认芯片底层是否支持对应协议,(一些老芯片仅能支持 WPA/WPA2 但不支持 WPA2-PSK 等协议)
3、对接路由器的协议以及信号类型,(老芯片不支持 5G 信号仅能支持 2.4G 信号)
4、最后根据 wpa_supplicant 自带的 example 尝试调整各个参数(下载后直接看)
注意: 交叉编译内容应该与交叉编译器时间相近
下载以下内容:
expat-2.4.8
dbus-1.14.0
libnl-3.7.0
openssl-1.1.1
wpa_supplicant
## expat-2.4.8
echo "xorg_cv_malloc0_returns_null=yes" > arm-linux.cache
./configure --cache-file=arm-linux.cache --prefix=/home/worker/workspace/wifilib \
--host=arm-linux-gnueabihf
## dbus-1.14.0
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/worker/workspace/wifilib
export PKG_CONFIG_PATH=/home/worker/workspace/wifilib/lib/pkgconfig
./configure --prefix=/home/worker/workspace/wifilib --host=arm-linux-gnueabihf --without-x \
CFLAGS=-I/home/worker/workspace/wifilib/include LDFLAGS=-L/home/worker/workspace/wifilib/lib
① 运行脚本
配置完成之后输出,要点请检查和确认
② 执行 make & make install
## libnl-3.7.0
./configure --prefix=/home/worker/workspace/wifilib --host=arm-linux-gnueabihf
## openssl-1.1.1q
注意——32位 arm 芯片
setarch i386 ./config --prefix=/home/worker/workspace/wifilib --cross-compile-prefix=arm-linux-gnueabihf- \
注意——64位 arm 芯片
./config --prefix=/home/worker/workspace/wifilib --cross-compile-prefix=arm-linux-gnueabihf- \
① 运行脚本
② 移除 64bit / 32bit 出现的 -m64/-m32
③ make & make install
## wpa_supplicant
① 解压后,进入 -> wpa_supplicant-2.10 -> wpa_supplicant
② 运行(我是 linux 平台) {cp defconfig .config}
③ 修改 Makefile
CFLAGS += -I/home/worker/workspace/wifilib/include
LIBS += -L/home/worker/workspace/wifilib/lib
CC=arm-linux-gnueabihf-gcc
④ 调整以下 wifilib 库中文件
1)把 wifilib/lib/dbus-1.0/include/dbus 下的文件复制到 wifilib/include/dbus-1.0 里
⑤ wpa_supplicant-2.10 -> wpa_supplicant 启动终端 然后运行以下指令
-
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/worker/workspace/wifilib
-
export PKG_CONFIG_PATH=/home/worker/workspace/wifilib/lib/pkgconfig
-
make -j32
当前目录底下就会生成 wpa_cli & wpa_supplicant & wpa_passphrase 三个文件