匿名
未登录
登录
百问网嵌入式Linux wiki
搜索
查看“How to setup wifi connection”的源代码
来自百问网嵌入式Linux wiki
名字空间
页面
讨论
更多
更多
页面选项
Read
查看源代码
历史
←
如何设置WiFi连接
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看与复制此页面的源代码。
{{DISPLAYTITLE:如何设置WiFi连接}} =如何设置WiFi连接= :虽然该示例与 RTL8723BU 芯片有关(该芯片需要WiFi(最低802.11g/n)和Bluetooth 4.0 LE),但是本文中大多数命令还是通用命令,可以应用于任何平台。 ==安装相应软件包== ===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下配置安装=== ==ifconfig == :{{Bluetext |注意:此章节内容操作适用于所有Linux开发板}} :验证是否存在 wlan0 接口(如果该命令正常执行说明驱动程序已启动并且 WiFi 固件已加载): ===检查 WLAN 接口=== <syntaxhighlight lang="bash"> 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) </syntaxhighlight> <syntaxhighlight lang="bash"> 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) </syntaxhighlight> ===初始化WLAN接口=== <syntaxhighlight lang="bash"> 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) </syntaxhighlight> ==iw== :{{Bluetext |注意:此章节内容操作仅适用于安装过上述软件包的Linux开发板}} : 本节是使用以下命令扫描任何无线接入点的过程: ===扫描可用的 SSID(AP)=== : 仅获取 SSID 名称 <syntaxhighlight lang="bash"> Board $> iw dev wlan0 scan |grep SSID SSID: NETWORK1 SSID: NETWORK2 </syntaxhighlight> : 列出完整的 SSID 信息 <syntaxhighlight lang="bash"> 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 </syntaxhighlight> ==Wlan 网络附件(没有管理系统联网配置的系统)== :{{Bluetext |注意:此章节内容操作适用于所有Linux开发板}} ===配置 WiFi 连接=== : 配置WiFi连接,使用的是 wpa_supplicant 工具 : 检查当前配置信息 <syntaxhighlight lang="bash"> Board $> cat /etc/wpa_supplicant.conf ctrl_interface=/var/run/wpa_supplicant ctrl_interface_group=0 update_config=1 network={ key_mgmt=NONE } </syntaxhighlight> : 设置 WiFi 的名称和密码 <syntaxhighlight lang="bash"> Board $> wpa_passphrase <your_ssid_name> <your_ssid_key> >> /etc/wpa_supplicant.conf </syntaxhighlight> : 检查新的配置信息 <syntaxhighlight lang="bash"> 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" } </syntaxhighlight> : 注意:如果没有 WPA 密钥,则将 psk=... 替换为 key_mgmt=NONE ====连接到 SSID==== <syntaxhighlight lang="bash"> Board $> wpa_supplicant -B -iwlan0 -c /etc/wpa_supplicant.conf Successfully initialized wpa_supplicant </syntaxhighlight> ====链接到 SSID==== <syntaxhighlight lang="bash"> 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 </syntaxhighlight> ====为 WLAN 接口分配IP地址==== : 使用 DHCP 客户端获取地址(假设无线网络(关联)具有 DHCP 服务器): <syntaxhighlight lang="bash"> Board $> udhcpc -i wlan0 </syntaxhighlight> : 使用 ip 命令来验证 DHCP 分配的 IP 地址: <syntaxhighlight lang="bash"> 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 </syntaxhighlight> ====检查连接性==== : 最基本的连通性测试是使用"ping”命令。在此示例中,无线路由器(关联到)的IP地址为192.168.1.1: <syntaxhighlight lang="bash"> 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 </syntaxhighlight> : 注意:输入 <CTRL + C> 可终止 ping 会话。 ==启动时自动配置WiFi== :{{Bluetext |注意:此章节内容操作仅适用于stm32 yocto Linux开发板系统}} ===networkctl=== : Systemd 为名为 systemd-networkd 的网络提供了一项特定的服务,该服务附带了networkctl 工具,该工具可以显示每个网络接口的状态。 <syntaxhighlight lang="bash"> 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 </syntaxhighlight> : 列出 6 个链接。 : 我们可以看到 eth0 接口是通过配置的信息通过网络进行管理的,并且使用了该接口(可路由)。 ===如何通过网络设置进行无线配置=== : 目标是通过 systemd-networkd 配置来配置 wlan 网络接口。 : 所有网络配置都存储在/ lib/systemd/network 或 /etc/systemd/network 中。创建专用于无线接口的文件: <syntaxhighlight lang="bash"> Board $> cat /lib/systemd/network/51-wireless.network [Match] Name=wlan0 [Network] DHCP=ipv4 </syntaxhighlight> : 要将此无线接口连接到特定网络的中,我们需要一些信息,例如网络的SSID和密码。 : 要查看当前范围内可用的无线网络列表: <syntaxhighlight lang="bash"> Board $> ifconfig wlan0 up Board $> iw dev wlan0 scan |grep SSID SSID: NETWORK1 SSID: NETWORK2 </syntaxhighlight> : 将无线网络与无线网卡相连接,此处为 wlan0: <syntaxhighlight lang="bash"> 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 </syntaxhighlight> : 其中 SSID_OF_NETWORK PASSWORD_OF_NETWORK 对应于无线网络的SSID和密码。 : 注意:/etc/wpa_supplicant 上的文件名必须包含无线接口的名称: wpa_supplicant-wlan0.conf : 启用并启动无线配置: <syntaxhighlight lang="bash"> Board $> systemctl enable wpa_supplicant@wlan0.service systemctl restart systemd-networkd.service systemctl restart wpa_supplicant@wlan0.service </syntaxhighlight> [[Category:Linux_Operating_System]] [[Category:Networking]] [[Category:Netdev]] [[Category:WLAN]][[Category:How_to ]]
该页面使用的模板:
模板:Bluetext
(
查看源代码
)
返回至
如何设置WiFi连接
。
导航
导航
WIKI首页
官方店铺
资料下载
交流社区
所有页面
所有产品
MPU-Linux开发板
MCU-单片机开发板
Linux开发系列视频
单片机开发系列视频
所有模块配件
Wiki工具
Wiki工具
特殊页面
页面工具
页面工具
用户页面工具
更多
链入页面
相关更改
页面信息
页面日志