查看原文
其他

详细记录丨Realtek RTL8188FU WiFi 连接路由

小Z 编码小二 2022-09-10

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 ,我们下期再见!


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存