admin管理员组

文章数量:1661158

1:前置条件

1:确认 linux设备和WIFI模块之间通讯正常;
2:确认 Linux设备支持 iw, wpa_supplicant, udhcpc 等指令, 可以先搜索一下这三个指令的用法,也可以 “iw --help” 来查看帮助信息

2: 操作流程

2.1 查询无线网卡激活状态

应该会显示 UP,LOWER_UP 信息;
或者直接 ifconfig 看看有没有 wlan0 设备

root@imx8qxpc0mek:~# ip link show wlan0
6: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
    link/ether dc:0d:30:a2:47:17 brd ff:ff:ff:ff:ff:ff

2.2 WIFI扫描

扫描当前网络条件下,可以接收到哪些WIFI信号,就是手机连接的WIFI名称

root@imx8qxpc0mek:~# iw wlan0 scan | grep SSID
        SSID: TP-LINK_9202
        SSID: DL-S2110
        SSID: ChinaNet-HLZX
        SSID: dujunqiu

2.3 WIFI账号密码修改

这里修改的是系统配置的账号密码,也可以通过 “add_network” 手动输入;
wpa_supplicant.conf 是掉电保存的,只修改一次比较方便;
如果系统默认没有 ssid和psk的画,那么就手动增加一下

root@imx8qxpc0mek:~# vi /etc/wpa_supplicant.conf
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=0
update_config=1

network={
        ssid="dujunqiu"
        psk="123456"
}

注意这里是大部分的WIFI访问方式(WPA加密),可通过手机连接WIFI之后,查看WIFI详情->安全性,确认加密方式;如果加密方式不一样,请参考下面

# 不加密
iw dev wlan0 connect "SSID"
# WEP加密
iw dev wlan0 connect "SSID" key 0:"WEP密钥"

2.4 连接WIFI

-B 后台运行, wpa_supplicant.conf 就是我们刚刚修改的文件

root@imx8qxpc0mek:~# wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant.conf
Successfully initialized wpa_supplicant
rfkill: Cannot open RFKILL control device

2.5 查看WIFI连接状态

如果没有连接成功的画,会提示 “not connected”;
这里可以用自己的手机热点作为WIFI的发射端,方便查看是否有设备连接上

root@imx8qxpc0mek:~# iw wlan0 link
Connected to 66:6e:97:95:4b:39 (on wlan0)
        SSID: dujunqiu
        freq: 5180
        signal: -74 dBm
        tx bitrate: 200.0 MBit/s

这个时候虽然连接上了,但是还无法上网;可以看到wlan0没有自动获取到IP信息,也没有 route路由信息

root@imx8qxpc0mek:~# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.10.0    0.0.0.0         255.255.255.0   U     0      0        0 wlan0
192.168.100.0   0.0.0.0         255.255.255.0   U     0      0        0 usb0
192.168.253.0   0.0.0.0         255.255.255.0   U     0      0        0 eth0

2.6 设置自动获取IP地址

WIFI连接之后,还要设置一下 DHCP, 不然自带的 ip(ifconfig查看)可能和WIFI的IP不匹配,还是无法上网;

root@imx8qxpc0mek:~# udhcpc -b -i wlan0 -t 1 -T 5 -A 1 -R -H test_111
udhcpc: option -h NAME is deprecated, use -x hostname:NAME
udhcpc: started, v1.27.2
udhcpc: sending discover
udhcpc: sending select for 172.16.5.112
udhcpc: lease of 172.16.5.112 obtained, lease time 86400
/etc/udhcpc.d/50default: Adding DNS 172.16.1.1

再次查看一下路由信息,已经可以获取到 网关的信息;
ifconfig wlan0 查看IP也自动分配了

root@imx8qxpc0mek:~# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         172.16.1.1      0.0.0.0         UG    10     0        0 wlan0
172.16.0.0      0.0.0.0         255.255.240.0   U     0      0        0 wlan0
192.168.100.0   0.0.0.0         255.255.255.0   U     0      0        0 usb0
192.168.253.0   0.0.0.0         255.255.255.0   U     0      0        0 eth0

root@imx8qxpc0mek:~# ifconfig wlan0
wlan0     Link encap:Ethernet  HWaddr dc:0d:30:a2:47:17
          inet addr:172.16.5.112  Bcast:172.16.15.255  Mask:255.255.240.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:24473 errors:0 dropped:5 overruns:0 frame:0
          TX packets:172 errors:0 dropped:66 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:3236863 (3.0 MiB)  TX bytes:29964 (29.2 KiB)

3:测试网络状态

经过以上操作,网络已经设置成功,可以 ping 百度了

root@imx8qxpc0mek:~# ping baidu
PING baidu (110.242.68.66) 56(84) bytes of data.
64 bytes from 110.242.68.66 (110.242.68.66): icmp_seq=1 ttl=49 time=108 ms
64 bytes from 110.242.68.66 (110.242.68.66): icmp_seq=2 ttl=49 time=32.7 ms
64 bytes from 110.242.68.66 (110.242.68.66): icmp_seq=3 ttl=49 time=26.4 ms

本文标签: 路由器客户端模块操作Linux