20251222 - 韦东山Linux开发板I.MX6ULL连接无线WiFi

bash 复制代码
# 以下命令都是在开发板执行, 不是在Ubuntu执行

# 1. 禁止系统自动启动wpa_supplicant, 
#    否则后面执行"iw wlan0 link"时会提示"command failed: No such file or directory"   
mv  /etc/init.d/S45network-manager   /root
reboot

# 2. 启动WIFI网卡
ifconfig wlan0 up

# 3. 查找SSID
iw dev wlan0 scan | grep SSID

# 4. 设置WIFI SSID和密码
# ssid_name     改为你的WIFI SSID
# your_password 改为你的WIFI密码
wpa_passphrase ssid_name your_password >> /etc/wpa_supplicant.conf

# 5. 连接WIFI
wpa_supplicant -B -iwlan0 -c /etc/wpa_supplicant.conf
等待出现: wlan0: link becomes ready

# 6. 查看连接状态
iw wlan0 link

# 7. 动态获取IP
udhcpc -i wlan0

# 8. 测试
ping news.qq.com

# 成功后,以后再次启动系统后,只需要执行第5、第7条命令即可连接WIFI

执行上述脚本的前提是开发板已经连接好WiFi天线了。不一定需要连接路由器,也可以连手机热点等等。

这段脚本的核心逻辑是:先"杀掉"系统自带的自动管理进程,手动接管 WIFI 控制权,然后连接网络并获取 IP。

下面为您进行详细的原理分析 ,最后给出清晰的操作步骤


第一部分:深度原理分析(每一步是干嘛的?)

这套命令其实是在手动完成手机连接 WIFI 时后台默默做的所有事情。

1. 清理环境(避免冲突)
复制代码
mv /etc/init.d/S45network-manager /root
reboot
  • 原理 :开发板出厂的系统里,通常有一个开机自启脚本(S45network-manager),它会自动尝试管理网络。这就好比有两个司机(自动程序和你自己)同时抢方向盘,会导致 device or resource busy 或者 command failed 错误。
  • 动作 :把这个启动脚本移走(移到 /root 相当于备份),让它开机找不到,从而禁用自动启动。重启后,网络控制权就全交给你了。
2. 激活硬件
bash 复制代码
ifconfig wlan0 up
  • 原理 :给无线网卡(wlan0)通电并激活驱动。刚开机时网卡通常是"休眠"状态(DOWN),这一步把它变成 UP 状态。
3. 扫描信号(可选)
Bash 复制代码
iw dev wlan0 scan | grep SSID
  • 原理 :让网卡去听空中有哪些 WIFI 信号。grep SSID 是为了过滤掉杂乱的信息,只看 WIFI 名字。
4. 生成配置文件(核心步骤)
Bash 复制代码
wpa_passphrase ssid_name your_password >> /etc/wpa_supplicant.conf
  • 原理:WIFI 连接不能直接把明文密码发给路由器,需要加密。
  • 工具wpa_passphrase 是一个计算器,它把你的 WIFI 名字和密码算成一段加密配置。
  • 动作>> 符号把算出来的配置追加 写入到 /etc/wpa_supplicant.conf 文件里。这个文件就是你的"WIFI 钥匙串"。
5. 发起连接(Layer 2 链路层)
Bash 复制代码
wpa_supplicant -B -iwlan0 -c /etc/wpa_supplicant.conf
  • 原理wpa_supplicant 是 Linux 下最核心的 WIFI 认证程序(守护进程)。
    • -B:在后台运行(Background),不占用当前终端。
    • -i:指定网卡接口(interface)。
    • -c:指定刚才生成的配置文件(config)。
  • 结果 :只要提示 link becomes ready,说明密码正确,你的板子和路由器已经"握手"成功了。
6. 获取 IP 地址(Layer 3 网络层)
Bash 复制代码
udhcpc -i wlan0
  • 原理:连接成功后,板子还没有"门牌号"(IP 地址)。
  • 工具udhcpc 是嵌入式常用的小型 DHCP 客户端。它会向路由器大喊:"给我分配个 IP!"。
  • 结果:路由器回复一个 IP(例如 192.168.1.100),此时才能真正上网。

第二部分:详细操作步骤指南

请按照以下顺序在您的开发板串口终端中执行。

第一步:一次性配置(只有第一次需要做)

1. 禁用自动管理并重启

Bash 复制代码
mv /etc/init.d/S45network-manager /root
reboot

(注意:执行完 reboot 后,开发板会重启,您需要重新连接串口终端)

第二步:准备连接

2. 启动网卡

Bash 复制代码
ifconfig wlan0 up

3. (可选) 确认你要连的 WIFI 是否存在

Bash 复制代码
iw dev wlan0 scan | grep SSID
第三步:生成 WIFI 密码文件
  1. 写入账号密码

⚠️ 注意: 请将下面的 你的WIFI名 和 你的WIFI密码 替换成真实的(保留双引号以防名字中有空格)。

Bash 复制代码
# 这一行命令会覆盖旧的配置,重新生成一个新的
wpa_passphrase "你的WIFI名" "你的WIFI密码" > /etc/wpa_supplicant.conf

如果是追加第二个WIFI,可以用 >>,如果是第一次设置,建议用 > 覆盖。

第四步:正式连接

5. 启动连接进程

Bash 复制代码
wpa_supplicant -B -iwlan0 -c /etc/wpa_supplicant.conf

观察终端输出,等待几秒,直到看到 wlan0: link becomes ready 之类的提示。

6. 检查连接状态

Bash 复制代码
iw wlan0 link

如果显示 Not connected,说明密码错了或者信号不好;如果显示具体的 SSID 和频率,说明连接成功。

7. 自动获取 IP

Bash 复制代码
udhcpc -i wlan0

成功的话,你会看到类似 Lease of 192.168.x.x obtained 的提示。

第五步:测试

8. Ping 测试

Bash 复制代码
ping news.qq.com

如果有时间回复(time=xx ms),恭喜你,开发板已经连入互联网!


第三部分:以后重启了怎么办?

因为我们在第一步里禁用了自启动,所以下次断电重启后,WIFI 不会自动连。

您只需要执行下面 3 条命令 即可恢复网络(因为密码文件 /etc/wpa_supplicant.conf 已经保存好了):

Bash 复制代码
ifconfig wlan0 up
wpa_supplicant -B -iwlan0 -c /etc/wpa_supplicant.conf
udhcpc -i wlan0
相关推荐
Truffle7电子2 小时前
STM32CubeIDE/Programmer/Touch GFX 应用
stm32·单片机·嵌入式硬件
richxu202510013 小时前
嵌入式学习之路->stm32篇->(14)通用定时器(上)
stm32·单片机·嵌入式硬件·学习
Deitymoon5 小时前
STM32——外部中断按键控制led
stm32·单片机·嵌入式硬件
czwxkn5 小时前
7STM32(stdl)flash内部闪存
stm32·单片机·嵌入式硬件
咕噜咕噜啦啦5 小时前
STlink下载程序
stm32·单片机
Deitymoon7 小时前
STM32——串口中断接收
stm32·单片机·嵌入式硬件
Deitymoon9 小时前
STM32——串口通信发送数据
stm32·单片机·嵌入式硬件
czwxkn10 小时前
8STM32(stdl)低功耗模式
stm32·单片机·嵌入式硬件
czwxkn10 小时前
9STM32(stdl)看门狗
stm32·单片机·嵌入式硬件
LCG元11 小时前
STM32实战:基于STM32F103的SPI通信驱动W25Qxx Flash存储
stm32·单片机·嵌入式硬件