“How to setup wifi connection”的版本间的差异
来自百问网嵌入式Linux wiki
(→iw) |
|||
(未显示同一用户的9个中间版本) | |||
第4行: | 第4行: | ||
==安装相应软件包== | ==安装相应软件包== | ||
===buildroot下配置=== | ===buildroot下配置=== | ||
+ | :{{Bluetext |注意:此章节内容操作适用buildroot-2019/2020版本,如果使用我们提供的系统,默认已经支持。}} | ||
+ | *iw软件包配置 | ||
+ | :使用<code>make menucnfig </code>命令启用如下选项,此选项为iw命令工具包 | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | Symbol: BR2_PACKAGE_IW [=y] | ||
+ | Type : bool | ||
+ | Prompt: iw | ||
+ | Location: | ||
+ | -> Target packages | ||
+ | -> Networking applications | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | :或者在.config 文件底部加入如下配置项 | ||
+ | BR2_PACKAGE_IW=y | ||
+ | |||
+ | *wpa_supplicant软件包配置 | ||
+ | :使用<code>make menucnfig </code>命令启用如下选项,此选项为wpa_supplicant命令工具包。 | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | Symbol: BR2_PACKAGE_WPA_SUPPLICANT [=y] | ||
+ | Type : bool | ||
+ | Prompt: wpa_supplicant | ||
+ | Location: | ||
+ | -> Target packages | ||
+ | -> Networking applications | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | :或者在.config 文件底部加入如下配置项 | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | BR2_PACKAGE_WPA_SUPPLICANT=y | ||
+ | BR2_PACKAGE_WPA_SUPPLICANT_NL80211=y | ||
+ | BR2_PACKAGE_WPA_SUPPLICANT_AP_SUPPORT=y | ||
+ | BR2_PACKAGE_WPA_SUPPLICANT_WIFI_DISPLAY=y | ||
+ | BR2_PACKAGE_WPA_SUPPLICANT_MESH_NETWORKING=y | ||
+ | BR2_PACKAGE_WPA_SUPPLICANT_AUTOSCAN=y | ||
+ | BR2_PACKAGE_WPA_SUPPLICANT_EAP=y | ||
+ | BR2_PACKAGE_WPA_SUPPLICANT_HOTSPOT=y | ||
+ | BR2_PACKAGE_WPA_SUPPLICANT_DEBUG_SYSLOG=y | ||
+ | BR2_PACKAGE_WPA_SUPPLICANT_WPS=y | ||
+ | BR2_PACKAGE_WPA_SUPPLICANT_WPA3=y | ||
+ | BR2_PACKAGE_WPA_SUPPLICANT_CLI=y | ||
+ | BR2_PACKAGE_WPA_SUPPLICANT_WPA_CLIENT_SO=y | ||
+ | BR2_PACKAGE_WPA_SUPPLICANT_PASSPHRASE=y | ||
+ | BR2_PACKAGE_WPA_SUPPLICANT_DBUS=y | ||
+ | BR2_PACKAGE_WPA_SUPPLICANT_DBUS_INTROSPECTION=y | ||
+ | </syntaxhighlight> | ||
===yocto下配置安装=== | ===yocto下配置安装=== | ||
第116行: | 第161行: | ||
==Wlan 网络附件(没有管理系统联网配置的系统)== | ==Wlan 网络附件(没有管理系统联网配置的系统)== | ||
+ | :{{Bluetext |注意:此章节内容操作适用于所有Linux开发板}} | ||
+ | |||
===配置 WiFi 连接=== | ===配置 WiFi 连接=== | ||
: 配置WiFi连接,使用的是 wpa_supplicant 工具 | : 配置WiFi连接,使用的是 wpa_supplicant 工具 | ||
第170行: | 第217行: | ||
: 使用 DHCP 客户端获取地址(假设无线网络(关联)具有 DHCP 服务器): | : 使用 DHCP 客户端获取地址(假设无线网络(关联)具有 DHCP 服务器): | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
− | Board $> | + | Board $> udhcpc -i wlan0 |
</syntaxhighlight> | </syntaxhighlight> | ||
第184行: | 第231行: | ||
====检查连接性==== | ====检查连接性==== | ||
− | : 最基本的连通性测试是使用"ping”命令。在此示例中,无线路由器(关联到)的IP地址为192.168. | + | : 最基本的连通性测试是使用"ping”命令。在此示例中,无线路由器(关联到)的IP地址为192.168.1.1: |
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
− | Board $> ping 192.168. | + | Board $> ping -I wlan0 192.168.1.1 |
− | PING 192.168. | + | PING 192.168.1.1 (192.168.1.1): 56 data bytes |
− | 64 bytes from 192.168. | + | 64 bytes from 192.168.1.1: seq=0 ttl=64 time=14.905 ms |
− | 64 bytes from 192.168. | + | 64 bytes from 192.168.1.1: seq=1 ttl=64 time=30.387 ms |
− | 64 bytes from 192.168. | + | 64 bytes from 192.168.1.1: seq=2 ttl=64 time=20.462 ms |
</syntaxhighlight> | </syntaxhighlight> | ||
: 注意:输入 <CTRL + C> 可终止 ping 会话。 | : 注意:输入 <CTRL + C> 可终止 ping 会话。 | ||
+ | |||
==启动时自动配置WiFi== | ==启动时自动配置WiFi== | ||
+ | :{{Bluetext |注意:此章节内容操作仅适用于stm32 yocto Linux开发板系统}} | ||
===networkctl=== | ===networkctl=== | ||
: Systemd 为名为 systemd-networkd 的网络提供了一项特定的服务,该服务附带了networkctl 工具,该工具可以显示每个网络接口的状态。 | : Systemd 为名为 systemd-networkd 的网络提供了一项特定的服务,该服务附带了networkctl 工具,该工具可以显示每个网络接口的状态。 | ||
第257行: | 第306行: | ||
[[Category:Networking]] | [[Category:Networking]] | ||
[[Category:Netdev]] | [[Category:Netdev]] | ||
− | [[Category:WLAN]] | + | [[Category:WLAN]][[Category:How_to ]] |
2020年6月24日 (三) 11:59的最新版本
目录
如何设置WiFi连接
- 虽然该示例与 RTL8723BU 芯片有关(该芯片需要WiFi(最低802.11g/n)和Bluetooth 4.0 LE),但是本文中大多数命令还是通用命令,可以应用于任何平台。
安装相应软件包
buildroot下配置
- 注意:此章节内容操作适用buildroot-2019/2020版本,如果使用我们提供的系统,默认已经支持。
- iw软件包配置
- 使用
make menucnfig
命令启用如下选项,此选项为iw命令工具包
Symbol: BR2_PACKAGE_IW [=y]
Type : bool
Prompt: iw
Location:
-> Target packages
-> Networking applications
- 或者在.config 文件底部加入如下配置项
BR2_PACKAGE_IW=y
- wpa_supplicant软件包配置
- 使用
make menucnfig
命令启用如下选项,此选项为wpa_supplicant命令工具包。
Symbol: BR2_PACKAGE_WPA_SUPPLICANT [=y]
Type : bool
Prompt: wpa_supplicant
Location:
-> Target packages
-> Networking applications
- 或者在.config 文件底部加入如下配置项
BR2_PACKAGE_WPA_SUPPLICANT=y
BR2_PACKAGE_WPA_SUPPLICANT_NL80211=y
BR2_PACKAGE_WPA_SUPPLICANT_AP_SUPPORT=y
BR2_PACKAGE_WPA_SUPPLICANT_WIFI_DISPLAY=y
BR2_PACKAGE_WPA_SUPPLICANT_MESH_NETWORKING=y
BR2_PACKAGE_WPA_SUPPLICANT_AUTOSCAN=y
BR2_PACKAGE_WPA_SUPPLICANT_EAP=y
BR2_PACKAGE_WPA_SUPPLICANT_HOTSPOT=y
BR2_PACKAGE_WPA_SUPPLICANT_DEBUG_SYSLOG=y
BR2_PACKAGE_WPA_SUPPLICANT_WPS=y
BR2_PACKAGE_WPA_SUPPLICANT_WPA3=y
BR2_PACKAGE_WPA_SUPPLICANT_CLI=y
BR2_PACKAGE_WPA_SUPPLICANT_WPA_CLIENT_SO=y
BR2_PACKAGE_WPA_SUPPLICANT_PASSPHRASE=y
BR2_PACKAGE_WPA_SUPPLICANT_DBUS=y
BR2_PACKAGE_WPA_SUPPLICANT_DBUS_INTROSPECTION=y
yocto下配置安装
ifconfig
- 注意:此章节内容操作适用于所有Linux开发板
- 验证是否存在 wlan0 接口(如果该命令正常执行说明驱动程序已启动并且 WiFi 固件已加载):
检查 WLAN 接口
Board $> ifconfig -a
lo Link encap:Local Loopback
LOOPBACK MTU:65536 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
wlan0 Link encap:Ethernet HWaddr 60:F1:89:3F:F6:0E
BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:1 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:10 (10.0 B)
初始化WLAN接口
Board $> ifconfig wlan0 up
wlan0 Link encap:Ethernet HWaddr 60:F1:89:3F:F6:0E
inet addr:192.168.43.135 Bcast:192.168.43.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 /* UP indicate that your interface is UP */
RX packets:19 errors:0 dropped:0 overruns:0 frame:0
TX packets:19 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1774 (1.7 KiB) TX bytes:2326 (2.2 KiB)
iw
- 注意:此章节内容操作仅适用于安装过上述软件包的Linux开发板
- 本节是使用以下命令扫描任何无线接入点的过程:
扫描可用的 SSID(AP)
- 仅获取 SSID 名称
Board $> iw dev wlan0 scan |grep SSID
SSID: NETWORK1
SSID: NETWORK2
- 列出完整的 SSID 信息
Board $> iw dev wlan0 scan
BSS 00:23:5e:4a:28:f9(on wlan0)
TSF: 0 usec (0d, 00:00:00)
freq: 2412
beacon interval: 100 TUs
capability: ESS ShortPreamble ShortSlotTime (0x0421)
signal: -72.00 dBm
last seen: 0 ms ago
SSID: NETWORK1
Supported rates: 1.0* 2.0* 5.5* 6.0 9.0 11.0* 12.0 18.0
DS Parameter set: channel 1
TIM: DTIM Count 0 DTIM Period 1 Bitmap Control 0x0 Bitmap[0] 0x2
Country: FR Environment: Indoor/Outdoor
Channels [1 - 13] @ 20 dBm
BSS Load:
* station count: 1
* channel utilisation: 30/255
* available admission capacity: 23437 [*32us]
ERP: <no flags>
Extended supported rates: 24.0 36.0 48.0 54.0
WMM: * Parameter version 1
* u-APSD
* BE: CW 15-1023, AIFSN 3
* BK: CW 15-1023, AIFSN 7
* VI: CW 7-15, AIFSN 2, TXOP 3008 usec
* VO: CW 3-7, AIFSN 2, TXOP 1504 usec
BSS 00:23:5e:96:57:20(on wlan0)
TSF: 0 usec (0d, 00:00:00)
freq: 2412
beacon interval: 100 TUs
capability: ESS Privacy ShortPreamble ShortSlotTime (0x0431)
signal: -66.00 dBm
last seen: 0 ms ago
SSID: NETWORK2
Supported rates: 1.0* 2.0* 5.5* 6.0 9.0 11.0* 12.0 18.0
DS Parameter set: channel 1
Country: FR Environment: Indoor/Outdoor
Channels [1 - 13] @ 20 dBm
BSS Load:
* station count: 8
* channel utilisation: 48/255
* available admission capacity: 23437 [*32us]
ERP: <no flags>
RSN: * Version: 1
* Group cipher: CCMP
* Pairwise ciphers: CCMP
* Authentication suites: IEEE 802.1X 00-40-96:0
* Capabilities: 4-PTKSA-RC 4-GTKSA-RC (0x0028)
Extended supported rates: 24.0 36.0 48.0 54.0
WMM: * Parameter version 1
* u-APSD
* BE: CW 15-1023, AIFSN 3
* BK: CW 15-1023, AIFSN 7
* VI: CW 7-15, AIFSN 2, TXOP 3008 usec
* VO: CW 3-7, AIFSN 2, TXOP 1504 usec
Wlan 网络附件(没有管理系统联网配置的系统)
- 注意:此章节内容操作适用于所有Linux开发板
配置 WiFi 连接
- 配置WiFi连接,使用的是 wpa_supplicant 工具
- 检查当前配置信息
Board $> cat /etc/wpa_supplicant.conf
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=0
update_config=1
network={
key_mgmt=NONE
}
- 设置 WiFi 的名称和密码
Board $> wpa_passphrase <your_ssid_name> <your_ssid_key> >> /etc/wpa_supplicant.conf
- 检查新的配置信息
Board $> cat /etc/wpa_supplicant.conf
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=0
update_config=1
network={
ssid="your_ssid_name"
psk="your_ssid_key"
}
- 注意:如果没有 WPA 密钥,则将 psk=... 替换为 key_mgmt=NONE
连接到 SSID
Board $> wpa_supplicant -B -iwlan0 -c /etc/wpa_supplicant.conf
Successfully initialized wpa_supplicant
链接到 SSID
Board $> iw wlan0 link
SSID: NETWORK1
freq: 2462
RX: 501 bytes (3 packets)
TX: 4056 bytes (22 packets)
signal: -75 dBm
tx bitrate: 12.0 MBit/s
bss flags: short-preamble short-slot-time
dtim period: 1
beacon int: 100
为 WLAN 接口分配IP地址
- 使用 DHCP 客户端获取地址(假设无线网络(关联)具有 DHCP 服务器):
Board $> udhcpc -i wlan0
- 使用 ip 命令来验证 DHCP 分配的 IP 地址:
Board $> ip addr show wlan0
3: wlan0: mtu 1500 qdisc mq state UP qlen 1000
link/ether 74:e5:43:a1:ce:65 brd ff:ff:ff:ff:ff:ff
inet 192.168.43.135/24 brd 192.168.1.255 scope global wlan0
inet6 fe80::76e5:43ff:fea1:ce65/64 scope link
valid_lft forever preferred_lft forever
检查连接性
- 最基本的连通性测试是使用"ping”命令。在此示例中,无线路由器(关联到)的IP地址为192.168.1.1:
Board $> ping -I wlan0 192.168.1.1
PING 192.168.1.1 (192.168.1.1): 56 data bytes
64 bytes from 192.168.1.1: seq=0 ttl=64 time=14.905 ms
64 bytes from 192.168.1.1: seq=1 ttl=64 time=30.387 ms
64 bytes from 192.168.1.1: seq=2 ttl=64 time=20.462 ms
- 注意:输入 <CTRL + C> 可终止 ping 会话。
启动时自动配置WiFi
- 注意:此章节内容操作仅适用于stm32 yocto Linux开发板系统
networkctl
- Systemd 为名为 systemd-networkd 的网络提供了一项特定的服务,该服务附带了networkctl 工具,该工具可以显示每个网络接口的状态。
Board $> networkctl --no-pager
IDX LINK TYPE OPERATIONAL SETUP
1 lo loopback carrier unmanaged
2 eth0 ether routable configured
3 sit0 sit off unmanaged
4 ip6tnl0 tunnel6 off unmanaged
5 wlan0 wlan off unmanaged
6 wlan1 wlan off unmanaged
- 列出 6 个链接。
- 我们可以看到 eth0 接口是通过配置的信息通过网络进行管理的,并且使用了该接口(可路由)。
如何通过网络设置进行无线配置
- 目标是通过 systemd-networkd 配置来配置 wlan 网络接口。
- 所有网络配置都存储在/ lib/systemd/network 或 /etc/systemd/network 中。创建专用于无线接口的文件:
Board $> cat /lib/systemd/network/51-wireless.network
[Match]
Name=wlan0
[Network]
DHCP=ipv4
- 要将此无线接口连接到特定网络的中,我们需要一些信息,例如网络的SSID和密码。
- 要查看当前范围内可用的无线网络列表:
Board $> ifconfig wlan0 up
Board $> iw dev wlan0 scan |grep SSID
SSID: NETWORK1
SSID: NETWORK2
- 将无线网络与无线网卡相连接,此处为 wlan0:
Board $> mkdir -p /etc/wpa_supplicant/
echo "ctrl_interface=/var/run/wpa_supplicant" > /etc/wpa_supplicant/wpa_supplicant-wlan0.conf
echo "eapol_version=1" >> /etc/wpa_supplicant/wpa_supplicant-wlan0.conf
echo "ap_scan=1" >> /etc/wpa_supplicant/wpa_supplicant-wlan0.conf
echo "fast_reauth=1" >> /etc/wpa_supplicant/wpa_supplicant-wlan0.conf
echo "" >> /etc/wpa_supplicant/wpa_supplicant-wlan0.conf
wpa_passphrase SSID_OF_NETWORK PASSWORD_OF_NETWORK >> /etc/wpa_supplicant/wpa_supplicant-wlan0.conf
- 其中 SSID_OF_NETWORK PASSWORD_OF_NETWORK 对应于无线网络的SSID和密码。
- 注意:/etc/wpa_supplicant 上的文件名必须包含无线接口的名称: wpa_supplicant-wlan0.conf
- 启用并启动无线配置:
Board $> systemctl enable wpa_supplicant@wlan0.service
systemctl restart systemd-networkd.service
systemctl restart wpa_supplicant@wlan0.service