WIFI驱动移植实验:WIFI从路由器动态获取IP地址与联网

一. 简介

前面两篇文章,一篇文章实现了WIFI联网前要做的工作,另一篇文章配置了WIFI配置文件,进行了WIFI热点的连接。文章如下:

WIFI驱动移植实验:WIFI 联网前的工作-CSDN博客

WIFI驱动移植实验:连接WIFI热点-CSDN博客

本文在上面两篇文章中工作实现的基础上进行。文学习 WIFI设备从路由器上动态获取ip地址,最后,通过 ping 百度(www.baidu.com)测试WIFI 功能。

二. WIFI驱动移植实验:WIFI从路由器动态获取IP地址与联网

这里在连接成功了 WIFI热点的基础上进行。即在运行了如下命令:

复制代码
wpa_supplicant -D wext -c /etc/wpa_supplicant.conf -i wlan0 &

串口有打印如下红色框中的连接信息时进行:

1. WIFI设备从路由器动态获取IP地址

设置 wlan0 的 IP 地址,这里使用 udhcpc 命令从路由器申请 IP 地址,输入如下命令:

复制代码
udhcpc -i wlan0  //从路由器动态获取 IP地址

运行后结果如下:


可以看出,这里路由器已经动态分配到了 ip地址。
输入如下命令查看 wlan0是否已经设置ip地址:

复制代码
ifconfig wlan0

结果如下:


这里可以看出,无线网卡没有设置ip地址。这里可以看出,从路由器动态获取 ip地址出现了问题。

登录路由器网页查看设备是否动态获取到了一个 ip地址,登录 "tglogin.cn" 网址,一定要确认是否是自己的路由器。这里我的路由器型号为 :

输入管理员密码登录后,查看 "路由设置" -> "DHCP服务器"。可以看到 如下信息:

经过排查,可以确定 匿名主机这个就是我的开发板设备。可以看到分配到了 IP地址,分配到的 IP地址为 192.168.0.102 ,确实与设备串口打印信息显示的 IP地址一样。接下来就是先解决这个问题吧。

三. 解决 udhcpc动态获取 IP地址问题

经过咨询做开发的同学,百度等等,排查到可能就是 udhcpc工具的功能不全。需要一个脚本文件。解决方法如下(来自一个CSDN技术网友):
嵌入式Linux:解决busybox udhcpc获取IP但没有设置系统DNS的问题_busybox dns-CSDN博客

1. 总结

**动态获取ip的方式:**udhcpc 是给路由器服务端发送广播udhcpc包,路由器接收到后,回复可以分配的一个IP地址,然后,udhcpc工具默认会执行一个脚本文件来设置设置设备的ip地址。

2. 具体解决方法

(1) 首先,从 windows系统下重新拷贝一份 busybox-1.29.0 到 ubuntu系统下。解压压缩包文件。解压后进入加压后的 busybox-1.29.0 文件目录下,将 /examples/udhcp/simple.script 文件拷贝到 开发板文件系统 /usr/share/udhcpc/ 目录下。
首先,开发板上电,进入文件系统下,进入 /usr/目录下创建 share/udhcpc/ 目录:

进入 /usr/share目录下创建 udhcpc目录:

最后,(ubuntu系统下)终端进入 busybox-1.29.0文件根目录下,将 /examples/udhcp/simple.script 拷贝到开发板文件系统 /usr/share/udhcpc/ 目录下:

复制代码
wangtian@wangtian-virtual-machine:~/zhengdian_Linux/linux/busybox-1.29.0$ sudo cp ./examples/udhcp/simple.script /home/wangtian/linux/nfs_File/rootfs/usr/share/udhcpc/ -f

(2) 其次,将 开发板上文件系统 /usr/share/udhcpc/目录下的 simple.script 重命名为 default.script:

重新运行 获取 IP地址的命令

重新运行 从路由器 获取 ip地址的命令: "udhcpc -i wlan0":

运行 "ifconfig wlan0" 命令查看无线网卡是否已分配到 IP地址:

可以看出, wlan0已经分配并设置好了 ip地址。

四. 联网测试

可以直接在开发板上使用 wlan0 来 ping 一下百度网站,输入如下命令:

复制代码
ping -I 192.168.0.102 www.baidu.com

结果如下:

可以看出,WIFI设备已经可以 连接外网,至此,WIFI功能已经调试通过。

相关推荐
Web极客码18 分钟前
如何通过简单步骤保护您的网站安全
服务器·网络·安全
GLAB-Mary21 分钟前
你的 Linux 服务器连不上网?10 分钟入门网络故障排查
linux·服务器·php
Danileaf_Guo32 分钟前
常用VPN性能对比测试(IPsec、L2TP VPN、SSL VPN、L2TP over IPsec等)
网络·网络协议·ssl
奉常席梦雨33 分钟前
聊天室项目之http知识
网络·网络协议·http
开发小能手-roy35 分钟前
如何设置Ubuntu服务器版防火墙
linux·运维·ubuntu
EasyNTS41 分钟前
ONVIF/RTSP/RTMP协议EasyCVR视频汇聚平台RTMP协议配置全攻略 | 直播推流实战教程
大数据·网络·人工智能·音视频
天天年年天天。1 小时前
在 Linux 或 Unix 系统中使用 pthread_create 创建新线程的步骤
linux·数据结构
laimaxgg2 小时前
Docker命令
linux·运维·服务器·ubuntu·docker
中科岩创2 小时前
高支模自动化监测解决方案
大数据·网络·物联网·自动化
IT coke2 小时前
镜像端口及观察端口的配置
运维·网络·智能路由器