开发板自动连接 wifi 配置
#技术笔记#
按照 WiF i模块要求连接合适的天线,选择相应的路由器。
由于现有的开发板上电没有 wifi 网口,所以需要先修改配置,加载 wifi 驱动模块。
若上电通过 ifconfig 命令可查看到WiFi网口,可自动跳过加载驱动模块。
1.加载WiFi驱动模块
修改配置参数文件,自定义和配置 wifi 模块的参数和行为,这个配置文件通常包含了一些设备的特定参数,用于初始化和配置驱动程序:
vi /lib/firmware/nxp/wifi_mod_para.conf
SDIW612={
cfg80211_wext=0xf //指定使用的内核 API 类型,在这里是 cfg80211,对应的值为 0xf
wfd_name=p2p //指定 WiFi Direct(P2P)的名称
max_vir_bss=1 //指定最大的虚拟基础设施数目
cal_data_cfg=none //指定校准数据的配置方式,这里设置为 none 表示没有校准数据配置
drv_mode=7 //指定驱动模式,在这里设置为 7,具体的含义需要参考厂商的文档来确定
fw_name=nxp/sduart_nw61x_v1.bin.se //指定固件的名称,用于驱动该 WiFi 模块
}
使用modprode命令加载驱动,modprobe 命令用于动态加载 Linux 内核模块,它会在指定的模块路径中查找并加载对应的模块。
modprobe moal mod_para=nxp/wifi_mod_para.conf
modprobe moal:这部分是调用 Linux 内核的 modprobe 命令加载 moal 模块。mod_para=nxp/wifi_mod_para.conf:这部分是通过命令参数传递给 moal 模块的配置参数。它告诉 moal 模块要使用的配置文件路径是 nxp/wifi_mod_para.conf。
使用 ifconfig -a 就可以看到已加载的网络接口。
2.wifi 连接配置
为了方便后续实现开机自启动连接 wifi ,将连接 wifi 使用的命令写进 wifi.sh 脚本中。脚本如下:
#!/bin/sh
#这里的<wifi interface>即为你所使用的无线网络接口,打开WiFi接口
ifconfig <wifi interface> up
#生成一个包含网络名称和密码的 WPA-PSK 配置文件
wpa_passphrase <your wifi ssid> <password> > wpa_supplicant.conf
#杀死之前的 wpa_supplicant 进程
killall wpa_supplicant
systemctl start wpa_supplicant
#通过 wpa_supplicant 工具启动 WiFi 连接
wpa_supplicant -B -i <wifi interface> -c/etc/wpa_supplicant.conf
#杀死之前的 DHCP 进程
killall udhcpc
#启动 DHCP 自动分配 ip 地址
udhcpc -b -i <wifi interface>
#如果系统中没有udhcpc命令,可以尝试手动配置static ip
#ifconfig <wifi interface> <ip> //注意配置的IP应与连接的路由器处于同一网段
赋予脚本可执行权限:
sudo chmod +x /root/wifi.sh //此处的 /root/wifi.sh 应替换成你实际编写的 wifi.sh 脚本位置
3.自动连接配置
修改 /etc/rc.local 自启动文件,将加载驱动命令和可执行 wifi.sh 脚本添加到 rc.local 文件中,保存重新启动即可看到 wifi 已经自动连接。
修改文件命令如下:
sudo vi /etc/rc.local
在 exit 0 行之前添加以下命令:
modprobe moal mod_para=nxp/wifi_mod_para.conf
/root/wifi.sh &
将开发板掉电重启,使用 ping 命令 ping 路由器 ip ,可以发现 wifi 已经自动连接。