道阻且长,行则将至。埋头苦干,不鸣则已,一鸣惊人!加油,骚年!

Hello 大家好,我是小 2 ,上篇文章我总结了 WiFi 命令编译过程

本篇文章分享一下 WiFi 连接路由的过程,希望对您能有帮助!

1 参考资料

1、配置过程,部分参考资料如下:

2、解决问题,部分参考资料如下:

3、还有一些其他前辈的教程,十分感谢!

2 环境介绍

1、Ubuntu18.04 ,不加密环境,版本信息如下:

zhaoc@Ubuntu1804:~$ lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 18.04.5 LTS
Release:	18.04
Codename:	bionic


zhaoc@Ubuntu1804:~$ uname -a
Linux Ubuntu1804 5.4.0-54-generic #60~18.04.1-Ubuntu SMP Fri Nov 6 17:25:16 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

2、Linux 内核版本:4.4.179 ;

3、交叉编译链版本

arm-none-linux-gnueabi-gcc

gcc version 4.8.3 20140320 (prerelease) (Sourcery CodeBench Lite 2014.05-29)

3 连接路由

在我实际调试过程中,最开始是通过命令行配置,到代码成熟后,使用脚本文件连接路由。

因此有三种方法:

  • 手动连接,固定 IP 方式;
  • 手动连接,动态 DHCP 方式;
  • 脚本连接,动态 DHCP 方式;

3.1 固定 IP

命令配置过程,记录如下。

1、开启无线网卡,wlan0

ifconfig wlan0 up

2、使用配置文件自动连接,r8000.conf 配置文件可参考文章 WiFi 命令编译过程 ,或者参考文章末尾资料。

wpa_supplicant -iwlan0 -c ./r8000.conf -B

3、查看 WiFi 连接状态

wpa_cli -iwlan0 status

4、设置固定 IP 地址,子网掩码

ifconfig wlan0 192.168.60.1 netmask 255.255.255.0

5、查看 IP 地址

ifconfig

6、设置默认网关

route add default gw 192.168.60.254

 备注:删除默认网关

route del default

7、查看默认网关

# 命令
route

# 测试结果
[root]#route 
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         192.168.60.254  0.0.0.0         UG    0      0        0 wlan0
192.168.60.0    *               255.255.255.0   U     0      0        0 wlan0

8、设置 DNS

# 编辑配置文件
vi /etc/resolv.conf

# 添加 DNS ,可自行尝试
nameserver 8.8.8.8
nameserver 223.5.5.5
nameserver 223.6.6.6

 命令行修改 DNS 方法

# 修改 DNS ,根据参考资料进行配置;
echo nameserver 223.5.5.5 > /etc/resolv.conf

3.2 动态 DHCP

1、确定能正常检测到无线网卡(可正常看到网卡名)

ifconfig -a

2、停止有线网卡

ifconfig eth0 down

3、重启无线网卡

ifconfig wlan0 down 

ifconfig wlan0 up

4、设置无线网卡使用配置文件连接 WiFi

wpa_supplicant -iwlan0 -c ./r8000.conf -B

5、使用无线网卡扫描 WiFi 测试

iwlist wlan0 scanning

6、配置无线网卡使用 DHCP 功能

udhcpc -i wlan0

7、查看无线网卡 IP 地址,是否获取成功

ifconfig -a

8、测试是否能正常联通外网

ping baidu.com

9、查看当前 WiFi 连接状态

wpa_cli -iwlan0 status

3.3 脚本文件

启动、停止过程,基本与命令行配置类似,只不过是全部封装为脚本,便于操作。

1、开启 WiFi 连接脚本

#/bin/sh
# 日志打印
echo "========================= $0 start ============================"

# 先杀死所有相关进程
killall hostapd udhcpd wpa_supplicant udhcpc

# 关闭无线网卡
ifconfig wlan0 down

# 打开无线网卡
ifconfig wlan0 up

# 延时1秒
sleep 1

# 开启WiFi连接
wpa_supplicant -iwlan0 -c /root/App/wifi.conf -B

# 配置自动获取IP
udhcpc -i wlan0

# 日志打印
echo "======================== $0 stop =============================="

2、关闭 WiFi 连接,仅杀死跟 WiFi 连接路由,有关的命令

#/bin/sh
echo "[root] killall wpa_supplicant udhcpc"
killall wpa_supplicant udhcpc

3、WiFi 基本配置文件:/root/App/wifi.conf

ctrl_interface=/var/run/wpa_supplicant
ap_scan=1
network={
	ssid="WiFi名称"
	psk="WiFi密码"
}

4 资源记录

1、r8000.conf 配置文件

(1)注意事项:

  • 字符严格缩进;
  • 不能多/少字符;
  • 此文件,对格式要求很严,如有问题,请先检查是否此文件有误;
  • 一定要手打,不要复制(赋值的话格式很容易出错)

(2)配置文件内容如下:

[root]#cat r8000.conf 
ctrl_interface=/var/run/wpa_supplicant
ap_scan=1
network={
	ssid="WiFi名称"
	psk="WiFi密码"
}

5 总结

1、刚开始调试时,由于不知道参数是否合适,就是用命令行,一句一句敲出来;直到代码基本确定了,才编写脚本。

2、现在想想,真是有点傻啊,为什么一开始不直接使用脚本?有问题,直接修改脚本里边的配置项,不就行了?

3、WiFi 连接路由,是最常使用的一个功能,期间遇到两个问题

(1)WiFi 连接路由后,网速很慢。经过测试,有几方面的原因:

  • 没有安装 WiFi 天线;
  • WiFi 天线不匹配;

(2)WiFi 连接路由后,不稳定。具体表现:ping 百度,延时忽高忽低。暂未发现具体原因。思考方向:

  • WiFi 模块自身问题(性能差、工艺问题等)
  • WiFi 驱动问题(版本低?不适配?)

好了,本期内容就是这样,感谢您的阅读,我是小 2 ,我们下期再见!

如果文章内容有误,麻烦评论/私信多多指教!如果觉得文章内容还不错,记得一键四连哦(点赞、收藏、留言、关注),如果您能点个关注,那就是对我最大的鼓励,也将是我创作的动力,谢谢您嘞!

Logo

更多推荐