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
相关推荐
许商3 小时前
【stm32】cmake脚本(二)
stm32·单片机·嵌入式硬件
Zeku4 小时前
20251222 - 常用命令“source etcprofile”的详细解析
stm32·freertos·linux驱动开发·linux应用开发
TEC_INO5 小时前
STM32_4:ESP8266-WIFI模块
stm32·单片机·嵌入式硬件
Moshow郑锴6 小时前
什么是 ACPI Bridge Device
stm32·单片机·嵌入式硬件
Zeku6 小时前
20251222 - 轻量级通信协议 JsonRPC
linux驱动开发·linux应用开发
雨雨雨雨雨别下啦6 小时前
嵌入式stm32复习资料
stm32·单片机·嵌入式硬件
x县豆瓣酱7 小时前
STM32F1基于cursor搭建开发环境
stm32·单片机·嵌入式硬件
小李做物联网8 小时前
【单片机毕业设计】76.1基于单片机stm32智能浇灌系统毕业设计
stm32·单片机·嵌入式硬件·物联网
c10638915148 小时前
stm32系列之编码器功能
stm32·单片机·嵌入式硬件