详细记录丨Realtek RTL8188FU WiFi 连接路由
Hello 大家好,我是小 2 ,上篇文章我总结了 WiFi 命令编译过程
本篇文章分享一下 WiFi 连接路由的过程,希望对您能有帮助!
1 参考资料
1、配置过程,部分参考资料如下:
通讯之——ARM Linux下以太网的访问外网方法(https://blog.csdn.net/qq_27977257/article/details/53130151) 开发板linux连接wifi的方法(一)(https://blog.csdn.net/qq_29630271/article/details/72751076) linux下ifconfig, DNS以及route配置(http://www.cnitblog.com/201/archive/2009/08/20/60887.html) Linux环境下使用WIFI模块:使用DHCP工具动态获得IP地址(https://blog.csdn.net/yunlong654/article/details/88680543) linux 添加删除– 默认网关 的方法(route add详解)(https://www.xuebuyuan.com/1256289.html) 无线网卡(RTL8188EU)驱动编译、使用DHCP配置无线网络(1(https://blog.csdn.net/jifengzhiling/article/details/80983006) 用wpa_supplicant wpa_cli连不同加密方式的ap(https://blog.csdn.net/weixin_37193849/article/details/53911579)
2、解决问题,部分参考资料如下:
开发板可以ping通百度IP,但是不能ping百度域名 提示ping: bad address 'www.baidu.com'(https://blog.csdn.net/mick_ye/article/details/50844539)
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 ,我们下期再见!