19. wifi

本章配套视频介绍:

../../../_images/video.png

《15-无线网卡连接WiFi和蓝牙》

https://www.bilibili.com/video/BV1Y24y1A7xH/

LubanCat-RK356x系列板卡只有以下型号板载wifi芯片

  • LubanCat-Zero-W

  • LubanCat-1N

板载了RTL8821cu,驱动方式为usb

如果想使用无线功能,也可以使用外接usb无线网卡来支持, 板卡上预支持了多款无线网卡,可以查看下面的我支持列表

19.1. LubanCat无线网卡支持列表

可以前往 《模块支持列表》 查看

如果需要适配其他型号的网卡,需要设置调整内核驱动或者移植网卡驱动

19.2. 静态配置

可以查看下列章节 《网络连接及配置》

19.3. pcie网卡连接图

具体的连接方法可以前往 《MINI PCI-E接口》 查看

  • LubanCat-1

未找到图片08|
  • LubanCat-2

未找到图片08|
  • LubanCat-2N

未找到图片08|

19.4. 桌面系统配置wifi

可以前往 《桌面端WiFi连接》 查看

19.5. 命令行连接wifi路由器

命令行配置wifi的方法有很多,下面介绍几种常用的wifi工具

  • nmtui 图形化的NetworkManager网络配置

  • nmcli(NetworkManager Command Line) 系统官方使用的工具 – 桌面的wifi控制由该工具提供, 特点:简单好用

  • wpa_cli(开源社区的网络工具)比较多人使用的wifi工具 特点:资料多,配置后简单快捷

19.5.1. nmtui

可以前往 《命令行图形化连接》 查看

19.5.2. nmcli

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
# 列出可用的wifi接入点, list可以省略
sudo nmcli dev wifi list

# 连接热点PPP, 连接成功后,就会自动生成配置文件,以后要再连接,可以使用nmcli connectio up mySSID命令了
sudo nmcli dev wifi connect PPP password '00000000' ifname wlan0

#如果连接成功后,下次想再连接,就可以使用
sudo nmcli dev wifi connect PPP

#更多nmcli的命令可以使用来查看
nmcli help
nmcli OBJECT help

nmcli命令组成

nmcli [OPTIONS] OBJECT { COMMAND | help }

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
OPTIONS
  -o[verview]                                    overview mode (hide default values)
  -t[erse]                                       terse output
  -p[retty]                                      pretty output
  -m[ode] tabular|multiline                      output mode
  -c[olors] auto|yes|no                          whether to use colors in output
  -f[ields] <field1,field2,...>|all|common       specify fields to output
  -g[et-values] <field1,field2,...>|all|common   shortcut for -m tabular -t -f
  -e[scape] yes|no                               escape columns separators in values
  -a[sk]                                         ask for missing parameters
  -s[how-secrets]                                allow displaying passwords
  -w[ait] <seconds>                              set timeout waiting for finishing operations
  -v[ersion]                                     show program version
  -h[elp]                                        print this help


#OBJECT可以用缩写表示

OBJECT
  g[eneral]       NetworkManager's general status and operations
  n[etworking]    overall networking control
  r[adio]         NetworkManager radio switches
  c[onnection]    NetworkManager's connections
  d[evice]        devices managed by NetworkManager
  a[gent]         NetworkManager secret agent or polkit agent
  m[onitor]       monitor NetworkManager changes


Command 可以通过 nmcli OBJECT help 来获得

下列列举部分常用的命令

nmcli常用命令

命令

作用

nmcli n

显示 NetworkManager 是否接管网络设置

nmcli n on

设定 NetworkManager 接管网络

nmcli n off

取消 NetworkManager 接管网络

nmcli c status

查看连接简略信息

nmcli c show

查看连接详细信息

nmcli c up/down ifname

启动/关闭指定连接(ifname 网卡)

nmcli c show(s) ifname

查看ifname网卡的连接详细信息

nmcli c delete(de) ens33

删除指定连接

nmcli d status

查看设备简略信息

nmcli d show

查看设备详细信息

nmcli d sh ens33

显示某一特定设备的详细信息

nmcli d connect(c) ens33

连接设备

nmcli d disconnect(c) ens33

断开设备

1
2
3
4
5
6
7
#先列出连接的配置,eth0现在连接的是Wired connection 1

root@lubancat:~# nmcli c s
NAME                UUID                                  TYPE      DEVICE
Wired connection 1  35ecb023-3194-3edb-bf90-4198f82329a8  ethernet  eth0
Wired connection 2  45f86cca-f8df-376e-8aad-37e10d2a65ce  ethernet  --
aEBF_Guest          fb1d506e-6dc7-4c5b-a4ce-339f3349d26d  wifi      wlan0

然后对Wired connection 1进行修改

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
#静态ip设置
sudo nmcli c modify 'aEBF_Guest' [ + | - ]选项 选项值  # 或

sudo nmcli c m 'aEBF_Guest' ipv4.address 192.168.103.172/24     # 修改 IP 地址和子网掩码
sudo nmcli c m 'aEBF_Guest' ipv4.method manual                  # 修改为静态配置,默认是 auto
sudo nmcli c m 'aEBF_Guest' ipv4.gateway 192.168.103.254        # 修改默认网关
sudo nmcli c m 'aEBF_Guest' ipv4.dns 8.8.8.8                        # 修改 DNS
sudo nmcli c m 'aEBF_Guest' +ipv4.dns 114.114.114.114           # 添加一个 DNS
sudo nmcli c m 'aEBF_Guest' ipv6.method disabled                            # 将 IPv6 禁用
sudo nmcli c m 'aEBF_Guest' connection.autoconnect yes              # 开机启动

注意,必须先修改 ipv4.address,然后才能修改 ipv4.method!
用空引号""代替选项的值,可将选项设回默认值(以 ipv4.method 为例):

详细的文档连接

19.5.3. wpa_cli

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#使能wifi
wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf

#进入专用控制台,默认选择wlan0
wpa_cli

#添加网络,获取网络id号
add_network

#假设id号为2
#设置需要连接的wifi名称
set_network 2 ssid "PPP"

#设置wifi的安全性:wpa
set_network 2 key_mgmt WPA-PSK

#设置需要连接的密码
set_network 2 psk "88888888"

#使能wifi
enable_network 2

#保存wifi信息
save_config

#列出所有在列表里的wifi以及序号
list_networks

#根据序号选择你要连接的wifi
select_network 2

#查看连接的WiFi
status

#退出
quit

#自动获取IP
dhclient wlan0
wpa_cli其他用法

语句

功能

举例

quit

退出模式

quit

scan

扫描wifi

scan

scan_results

查看扫描结果

scan_results

new_password

更换新密码

new_password 1 “密码”

disale_network

禁止WiFi

disale_network 2

list_networks

列出所有在列表里的wifi以及序号

list_networks

select_network

根据序号选择你要连接的wifi

select_network 2

remove_network

移除你不想要的wifi

remove_network 2

disconnect

停止wifi的连接

disconnect

reconnect

重新连接wifi

reconnect

help

查看更多的选项

help

当然也可以直接修改配置文件 /etc/wpa_supplicant/wpa_supplicant.conf

可以按照格式添加,然后在使用wpa_cli工具进行配置

1
2
3
4
5
6
7
8
ctrl_interface=/var/run/wpa_supplicant
update_config=1

network={
                ssid="PPP"
                psk="88888888"
                key_mgmt=WPA-PSK
}

19.5.4. 开启无线热点

19.5.4.1. nmcli

(NetworkManager Command Line)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
热点-72Mbps WIFI4
#使用该方法只能创建出WIFI4的热点,理论速率可达72Mbps,实测速率在50Mbps,换算大约6MB/s

#5g
sudo nmcli device wifi hotspot ifname wlan0 con-name AP-5G ssid LubanCat-AP-5G band a channel 36 password 88888888

#2.4g
sudo nmcli device wifi hotspot ifname wlan0 con-name AP-2.4G ssid LubanCat-AP-2.4G band bg channel 6 password 88888888

#band 无线协议 bg-2.4G a-5G
#channel 信道 可百度科普修改使用,可以下载 “网速管家”wifi分析中查看
#无线名字 - ssid
#密码 - password
#con-name 连接名,如果首次创建成功后可以直接使用

sudo nmcli device wifi hotspot

#查看热点信息以及密码
sudo nmcli device wifi show-password
#如果需要连接外网,即设备可以通过wifi连接到互联网上,就需要设置转发(假设网口能够连接互联网)
echo 1 > /proc/sys/net/ipv4/ip_forward
#如果eth1联网的话,可以把eth0换成eth1
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

19.5.4.2. hostapd

使用该方法可能稳定性会比较差,有时可能会断连的情况 下面是两个频率的wifi热点理论速率 - 2.4G - 72Mbps - 5G - 150Mps(802.11.n)单天线最大-150Mps

实测速率

  • 2.4G - 50Mbps 大约6MB/s

  • 5G - 120Mbps 大约15MB/s

19.5.4.2.1. 安装依赖
1
2
#下载工具hostapd 和 dhcpd
sudo apt install hostapd isc-dhcp-server
19.5.4.2.2. 创建配置文件

修改 /etc/hostapd/hostapd.conf 文件

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
sudo vi /etc/hostapd/hostapd.conf
#简化版(5G)

interface=wlan0
ctrl_interface=/var/run/hostapd
ssid=LuBanCat-5G
channel=36
wpa=2
wpa_passphrase=password

driver=nl80211
beacon_int=100
hw_mode=a
ieee80211n=1
wme_enabled=1
ht_capab=[SHORT-GI-20][SHORT-GI-40][HT40+]
wpa_key_mgmt=WPA-PSK
wpa_pairwise=CCMP
max_num_sta=8
wpa_group_rekey=86400


#简化版(2.4G)

interface=wlan0
ctrl_interface=/var/run/hostapd
ssid=LuBanCat-2.4G
channel=6
wpa=2
wpa_passphrase=password

driver=nl80211
beacon_int=100
hw_mode=g
ieee80211n=1
wme_enabled=1
ht_capab=[SHORT-GI-20][SHORT-GI-40][HT40+]
wpa_key_mgmt=WPA-PSK
wpa_pairwise=CCMP
max_num_sta=8
wpa_group_rekey=86400

修改 /etc/dhcp/dhcpd.conf

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
#在末尾加入以下内容:

subnet 192.168.0.0 netmask 255.255.255.0
{
range 192.168.0.2 192.168.0.10;
option routers 192.168.0.1;
option domain-name-servers 192.168.0.1,114.114.114.114,8.8.8.8;
}

其中114.114.114.114是全国通用DNS地址,8.8.8.8则是全球通用DNS地址
19.5.4.2.3. 设置脚本

用于关闭sta模式,打开ap模式以及关闭ap模式,打开sta模式

  • 关闭sta模式,打开ap模式

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
#创建脚本
vi ap-start.sh
#给予权限
sudo chmod +x ap-start.sh

#!/bin/bash
bash -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
# 开启防火墙NAT转发(如果本机使用eth1上网,则把eth0改为eth1)
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
# 关闭NetworkManager对无线网卡的控制
nmcli d disconnect wlan0
# 设置并启动无线网卡
ifconfig wlan0 192.168.0.1 netmask 255.255.255.0
# 解锁无线设备,可以用rfkill list查看解锁结果.
rfkill unblock wlan
# 睡眠6秒,待rfkill解锁生效
sleep 6s
# 启动dhcpd和hostapd,如果hostapd无法启动请查看日志hostapd.log,查看这两个进程ps -ef|egrep "dhcpd|hostapd"
nohup hostapd /etc/hostapd/hostapd.conf >/home/cat/hostapd.log 2>&1 &
dhcpd wlan0 -pf /var/run/dhcpd.pid
ps -ef|head -n1 && ps -ef|egrep "dhcpd|hostapd"
  • 关闭ap模式,打开sta模式

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
#创建脚本
vi ap-stop.sh
#给予权限
sudo chmod +x ap-stop.sh

#!/bin/bash
killall hostapd dhcpd
bash -c "echo 0 > /proc/sys/net/ipv4/ip_forward"
nmcli d connect wlan0
nmcli d disconnect wlan0
nmcli d connect wlan0

当我们打开ap模式时,需要有3个进程,不然会开启失败

未找到图片08|

如果失败可以使用

1
2
cat /home/cat/hostapd.log
#查看失败的原因

可以根据失败原因到百度上找出问题