一文介绍如何搭建一个EasyMesh的学习平台,让你轻松上手开展项目

1. 引言

IEEE802.11s定义了基于无线全连接的网络,每个节点可以与多个节点建立连接,是网状(Mesh)组网的网络。
EasyMesh是WFA基于IEEE802.11s制定的用于不同AP相互连接的应用标准(最新版本为V5.0)。这个标准定义了不同厂家的AP相互连接、控制的协议,使不同品牌的Mesh路由器也能组网。不同于IEEE802.11s定义的Mesh网络,EasyMesh定义的网络为树形结构,由一个控制器(Controller)来管理整个网络,所有AP(Agent)都与它相连接(包括间接连接)。控制器一般为家庭网络出口的路由器,通常也包含了一个AP的功能。

本文档介绍如何在Linux ARM平台(以i.MX 8M Plus为例)实现QCA206x模块的EasyMesh功能,以及如何使用支持该功能的设备搭建EasyMesh网络。

备注:当前,QCA206x模块只支持EasyMesh V1.0版本特性。

2. i.MX 8M Plus平台

本章以i.MX 8M Plus平台为例,介绍如何在Linux平台上启用模块的Wi-Fi EasyMesh功能。

2.1 环境准备

2.1.1 硬件环境

备注:

查看完整的i.MX 8M Plus EVB板的开发和购买信息可以浏览网页:www.nxp.com/imx8mplusevk

QCA206x WiFi模组推荐使用移远的FC64E/FC66E WiFi6/6E系列模组。

将模块按照下图所示安装到i.MX 8M Plus EVB开发板的M.2接口上:

备注:

1. 开发板型号仅供参考。如使用其他型号开发板,请向对应厂商咨询详细信息。

2. i.MX8的官方开发板比较难买,这里推荐一款移远的RK3568开发板,购买链接如下所示:

https://detail.tmall.com/item.htm?abbucket=1&id=702707370215&rn=a57d10ad3011cb7daac5f39c2526e976&skuId=4996087537671&spm=a1z10.5-b-s.w4011-23773508522.60.77de2650ihWVYS

2.1.2 软件环境

2.1.2.1 i.MX 8M Plus EVB开发板源码

请访问https://github.com/nxp-imx/imx-manifest/tree/imx-linux-mickledore获取i.MX 8M Plus EVB的开发板源码,本文选择imx-linux-zeus软件版本作为示例。

i.MX 8M Plus EVB板的源码使用了Yocto工具来进行代码管理。Yocto工具的使用可以参考压缩包L5.4.70_2.3.2_LINUX_DOCS中的用户指导文件。

备注:

i.MX 8M Plus EVB相关资料,请参考如下链接:
https://www.nxp.com/design/development-boards/i-mx-evaluation-and-development-boards/evaluation-kit-for-the-i-mx-8m-plus-applications-processor:8MPLUSLPD4-EVK

2.1.2.2 获取WiFi EasyMesh源代码

请联系本博主。

2.2 编译固件

2.2.1 准备Linux内核环境

基于Yocto合入Linux内核的相关patch,关于此章节,请联系博主。

2.2.2 Linux内核合入驱动头文件

基于Yocto合入Linux内核的相关patch,关于此章节,请联系博主。

2.2.3 修改Yocto的相关配方文件

修改Linux内核的配方(.bb)文件,将2.2.1和2.2.2增加的补丁文件添加到SRC_URI参数中。

2.2.4 准备WiFi驱动配方文件

在<meta-IMX-BSP>层中增加配方目录“recipes-quectel-wifi”,然后在该目录中添加配方文件,用来编译和安装Wi-Fi驱动以及EasyMesh相关的应用库和工具,具体的配方文件可以参考下文。

SUMMARY = "Example of how to build an external Linux kernel module"
LICENSE = "CLOSED"

inherit module autotools pkgconfig cmake

DEPENDS = "dbus libnl openssl libbsd lua json-c jansson"

SRC_URI = "git://git@git-master.quectel.com:8407/wifi.bt/fc6xe.git;protocol=ssh \
           file://0001-nxp-easymesh-driver-cross-compile.patch;patchdir=${WORKDIR}/git \
"
SRCREV ?= "${AUTOREV}"

S = "${WORKDIR}/git/WiFi_EasyMesh/chss_host_LEA/chss_proc/host/AIO/build"
ROOTFS_BUILD = "${S}/../rootfs-ve-f10c1.build"
EMESH_PACK = "${S}/../emesh_pack"
FW_AND_BDF_PATH = "${WORKDIR}/git/WiFi_EasyMesh/meta_build/load_meta"
#TARGET_CC_ARCH += "${LDFLAGS}"

do_configure () {
        bbnote skip do_configure
}

do_compile () {
        cd ${S}
        oe_runmake CONFIG_ONE_MSI_BUILD=y CONFIG_PERF_BUILD=y
        oe_runmake -j1 mesh_daemon MAKECMDGOALS=all
        oe_runmake -j1 mesh_pack
}

do_install () {
        install -d ${D}${nonarch_libdir}/modules
        install -d ${D}${localstatedir}/crash
        install -d ${D}${base_prefix}/home/root
        install -d ${D}${sysconfdir}/init.d
        install -d ${D}${sysconfdir}/config
        install -d ${D}${sysconfdir}/ld.so.conf.d
        install -d ${D}${sysconfdir}/wsplcd/map/templates
        install -d ${D}${nonarch_base_libdir}/config
        install -d ${D}${nonarch_base_libdir}/functions
        install -d ${D}${nonarch_base_libdir}/network
        install -d ${D}${nonarch_base_libdir}/wifi
        install -d ${D}${sbindir}
        install -d ${D}${base_sbindir}
        install -d ${D}${nonarch_libdir}
        install -d ${D}${datadir}/libubox

        ## Tools
        install -m 0777 ${EMESH_PACK}/daemon/* ${D}${sbindir}
        install -m 0777 ${EMESH_PACK}/_etc_init_d/* ${D}${sysconfdir}/init.d
        install -m 0777 ${EMESH_PACK}/_etc_config/* ${D}${sysconfdir}/config/
        install -m 0777 ${EMESH_PACK}/_lib/functions.sh ${D}${nonarch_base_libdir}
        install -m 0777 ${EMESH_PACK}/_lib/config/* ${D}${nonarch_base_libdir}/config/
        install -m 0777 ${EMESH_PACK}/_lib/functions/* ${D}${nonarch_base_libdir}/functions/
        install -m 0777 ${EMESH_PACK}/_lib/network/* ${D}${nonarch_base_libdir}/network/
        install -m 0777 ${EMESH_PACK}/_lib/wifi/* ${D}${nonarch_base_libdir}/wifi/
        install -m 0777 ${EMESH_PACK}/_sbin/* ${D}${base_sbindir}
        install -m 0777 ${EMESH_PACK}/_usr_sbin/* ${D}${sbindir}
        install -m 0777 ${EMESH_PACK}/sh/* ${D}${datadir}/libubox/
        install -m 0777 ${EMESH_PACK}/_etc_wsplcd_map_templates/* ${D}${sysconfdir}/wsplcd/map/templates/

        mv ${D}${sysconfdir}/init.d/rc.common ${D}${sysconfdir}
        ## Libraries
        install -m 0777 ${EMESH_PACK}/_usr_lib/* ${D}${nonarch_libdir}
        install -m 0777 ${EMESH_PACK}/easymesh_lib/lib/*.so ${D}${nonarch_libdir}
        install -m 0777 ${EMESH_PACK}/easymesh_lib/qca_nl80211_lib/*.so ${D}${nonarch_libdir}
        ## Wi-Fi Driver
        cp -f ${ROOTFS_BUILD}/lib/modules/wlan_cnss_core_pcie.ko ${D}${nonarch_libdir}/modules
        cp -f ${ROOTFS_BUILD}/lib/modules/wlan.ko ${D}${nonarch_libdir}/modules
        ## Other modules
        cp -f ${EMESH_PACK}/module/emesh-sp.ko ${D}${nonarch_libdir}/modules
        cp -f ${EMESH_PACK}/module/hyfi-bridging.ko ${D}${nonarch_libdir}/modules
        cp -f ${EMESH_PACK}/module/wlan_son_cld.ko ${D}${nonarch_libdir}/modules

        ## Scripts
        install -m 0777 ${EMESH_PACK}/cfg_hyctl.sh ${sysconfdir}
        install -m 0777 ${EMESH_PACK}/cap_cfg_hyctl.sh ${sysconfdir}
        install -m 0777 ${EMESH_PACK}/cfg_wireless_mac.sh ${sysconfdir}
        install -m 0777 ${EMESH_PACK}/dnsmasq.sh ${sysconfdir}
        install -m 0777 ${EMESH_PACK}/dhcpd.sh ${sysconfdir}
}

# The inherit of module.bbclass will automatically name module packages with
# "kernel-module-" prefix as required by the oe-core build environment.

#RPROVIDES_${PN} += "kernel-module-fc6xe-driver"
FILES_${PN} += "/home"
FILES_${PN} += "/home/root"
FILES_${PN} += "${localstatedir}/crash"
FILES_${PN} += "${sysconfdir}/*"
FILES_${PN} += "${base_sbindir}"
FILES_${PN} += "${sbindir}"
FILES_${PN} += "${nonarch_libdir}/*"
FILES_${PN} += "${datadir}/*"
FILES_${PN} += "${nonarch_base_libdir}/functions.sh"
FILES_${PN} += "${nonarch_base_libdir}/config"
FILES_${PN} += "${nonarch_base_libdir}/functions"
FILES_${PN} += "${nonarch_base_libdir}/network"
FILES_${PN} += "${nonarch_base_libdir}/wifi"
FILES_${PN} += "${nonarch_base_libdir}/firmware"
## Fix dev-elf bug
FILES_${PN}-dev = ""
INSANE_SKIP_${PN} = "ldflags"
INSANE_SKIP_${PN}-dev = "ldflags"

同时,Wi-Fi FW和BDF也需要通过类似的配方文件编译到系统中,具体的配方文件可以参考下文。 

SUMMARY = "Example of how to build an external Linux kernel module"
LICENSE = "CLOSED"

inherit allarch

SRC_URI = "git://git@git-master.quectel.com:8407/wifi.bt/fc6xe.git;protocol=ssh"
SRCREV ?= "${AUTOREV}"

S = "${WORKDIR}/git/WiFi_EasyMesh/meta_build/load_meta"

do_install[nostamp] = "1"
do_install() {
        install -d ${D}/lib/firmware/wlan
        cp -rf ${S}/wlan_firmware/* ${D}/lib/firmware
        cp -rf ${S}/BDF\&INI/FC64EABMD/bdwlan* /${D}/lib/firmware
        cp -rf ${S}/BDF\&INI/FC64EABMD/wlan/qcom_cfg.* /${D}/lib/firmware/wlan
}

FILES_${PN} += "/lib/firmware/*"
INSANE_SKIP_${PN} += "arch already-stripped"
INHIBIT_SYSROOT_STRIP = "1"

备注:
1. NXP SDK中<meta-IMX-BSP>目录存储了IMX-BSP相关的配方,通常为sources/meta-imx/meta-bsp。
2. 配方中使用的patch和相关代码链接,请联系博主。

2.2.5 修改Yocto的构建文件

默认使用core-image-minimal.bb文件,添加一些需要的工具。

diff --git a/meta/recipes-core/images/core-image-minimal.bb b/meta/recipes-core/images/core-image-minimal.bb
index 4630026aa9..ea9c7555f6 100644
--- a/meta/recipes-core/images/core-image-minimal.bb
+++ b/meta/recipes-core/images/core-image-minimal.bb
@@ -9,4 +9,50 @@ LICENSE = "MIT"
 inherit core-image
 
 IMAGE_ROOTFS_SIZE ?= "8192"
+IMAGE_ROOTFS_EXTRA_SPACE = "1048576"
 IMAGE_ROOTFS_EXTRA_SPACE_append = "${@bb.utils.contains("DISTRO_FEATURES", "systemd", " + 4096", "" ,d)}"
+
+IMAGE_INSTALL += " iw "
+IMAGE_INSTALL += " iperf2 "
+IMAGE_INSTALL += " iperf3 "
+IMAGE_INSTALL += " openssh "
+IMAGE_INSTALL += " strace "
+IMAGE_INSTALL += " usbutils "
+IMAGE_INSTALL += " pciutils "
+IMAGE_INSTALL += " dbus "
+IMAGE_INSTALL += " iproute2 "
+IMAGE_INSTALL += " gcc "
+IMAGE_INSTALL += " g++ "
+IMAGE_INSTALL += " make "
+IMAGE_INSTALL += " gdb "
+IMAGE_INSTALL += " ntp "
+IMAGE_INSTALL += " tcpdump "
+IMAGE_INSTALL += " python "
+IMAGE_INSTALL += " python3 "
+IMAGE_INSTALL += " wpa-supplicant "
+IMAGE_INSTALL += " crda "
+IMAGE_INSTALL += " libnl "
+IMAGE_INSTALL += " glib-2.0  "
+IMAGE_INSTALL += " libpcre "
+IMAGE_INSTALL += " wireless-regdb "
+IMAGE_INSTALL += " ebtables "
+IMAGE_INSTALL += " dhcpcd "
+IMAGE_INSTALL += " wireless-tools "
+IMAGE_INSTALL += " bridge-utils "
+IMAGE_INSTALL += " networkmanager "
+IMAGE_INSTALL += " python-networkmanager "
+IMAGE_INSTALL += " alsa-utils "
+IMAGE_INSTALL += " imx-codec "
+IMAGE_INSTALL += " android-tools "
+IMAGE_INSTALL += " memstat "
+IMAGE_INSTALL += " crash "
+IMAGE_INSTALL += " kexec-tools "
+IMAGE_INSTALL += " lua "
+IMAGE_INSTALL += " json-c "
+IMAGE_INSTALL += " pulseaudio "
+IMAGE_INSTALL += " sbc "
+IMAGE_INSTALL += " jansson "
+IMAGE_INSTALL += " libbsd "
+IMAGE_INSTALL += " openssl "
+IMAGE_INSTALL += " fc6xe-driver "
+IMAGE_INSTALL += " fc6xe-firmware "

备注:Yocto的构建文件通常保存在sources/poky/meta/recipes-core/images目录下。

2.2.6 编译固件

$ DISTRO=fsl-imx-xwayland MACHINE=imx8mpevk source imx-setup-release.sh -b build_ imx8mpevk

$ bitbake core-image-minimal

2.3 烧录固件

uuu.exe -b emmc_all imx-boot-imx8mpevk-sd.bin-flash_evk root.wic.bz2

备注:
1.UUU工具的具体使用方法请参考https://github.com/nxp-imx/mfgtools/wiki。
2.<IMAGE_PATH>目录通常为~/build_imx8mpevk/tmp/deploy/images/imx8mpevk。

2.4 加载EasyMesh

2.4.1 环境准备

Step 1: 执行如下命令检查PCIe是否枚举成功。

root@imx8mpevk:~# lspci

Step 2: 使用qcom_cfg.ini_map配置覆盖默认的qcom_cfg.ini配置。

root@imx8mpevk:/lib/firmware/wlan# cp qcom_cfg.ini_map qcom_cfg.ini

备注:

配置文件qcom_cfg.ini_map适用于MAP Agent模式,而配置文件qcom_cfg.ini适用于默认的STA模式。

2.4.2 配置Agent角色

Step 1: 执行如下命令修改Agent角色配置

root@imx8mpevk:~# uci delete network.wan
root@imx8mpevk:~# uci delete network.wan6
root@imx8mpevk:~# uci commit network
root@imx8mpevk:~# uci set repacd.repacd.Role='NonCAP'
root@imx8mpevk:~# uci commit repacd 

Step 2: 执行如下命令使能Agent角色

## insert modules
root@imx8mpevk:~# modprobe llc
root@imx8mpevk:~# modprobe stp
root@imx8mpevk:~# modprobe bridge
root@imx8mpevk:~# insmod /usr/lib/modules/emesh-sp.ko
root@imx8mpevk:~# insmod /usr/lib/modules/hyfi-bridging.ko
root@imx8mpevk:~# insmod /usr/lib/modules/wlan_cnss_core_pcie.ko
root@imx8mpevk:~# modprobe cfg80211
root@imx8mpevk:~# insmod /usr/lib/modules/wlan.ko country_code=US
root@imx8mpevk:~# insmod /usr/lib/modules/wlan_son_cld.ko
## process
root@imx8mpevk:~# ubusd &
root@imx8mpevk:~# procd -s /var/run/ubus/ubus.sock &
root@imx8mpevk:~# netifd -s /var/run/ubus/ubus.sock -c /etc/config -p /lib/netifd &
## config bridge
root@imx8mpevk:~# brctl addbr br-lan
root@imx8mpevk:~# ifconfig br-lan hw ether $(iw dev wlan1 info |grep addr|awk '{print $2}')
root@imx8mpevk:~# ip addr flush dev eth0
root@imx8mpevk:~# ip addr flush dev br-lan
## scripts
root@imx8mpevk:~# ln -fs /usr/sbin/uci /sbin
root@imx8mpevk:~# . /etc/cfg_hyctl.sh
root@imx8mpevk:~# . /etc/cfg_wireless_mac.sh
root@imx8mpevk:~# /etc/init.d/repacd start

Step 3: 执行如下命令检查EasyMesh功能是否加载成功

root@imx8mpevk:~# ps
...

892 root       7708 S    /usr/sbin/hostapd /var/run/hostapd-wlan1.conf -ddd -

902 root       1956 S    /usr/sbin/hostapd_cli -i wlan1 -p /var/run/hostapd-w

994 root       7708 S    /usr/sbin/hostapd /var/run/hostapd-wlan2.conf -ddd -

1000 root       1956 S    /usr/sbin/hostapd_cli -i wlan2 -p /var/run/hostapd-w

1074 root     10940 S    wpa_supplicant -i wlan0 -u -c /var/run/wpa_supplican

1350 root       3840 S    /usr/sbin/wsplcd -c /tmp/wsplcd-lan.conf -a -M /etc/

1522 root     25200 S    /usr/sbin/ezmesh -d -C /tmp/ezmesh-lan.conf -P 7777

2.4.3 配置Controller角色

Step 1: 执行如下命令修改Controller角色配置

root@imx8mpevk:~# uci set network.wan=interface

root@imx8mpevk:~# uci set network.wan.ifname=eth1

root@imx8mpevk:~# uci set network.wan.proto=dhcp

root@imx8mpevk:~# uci commit network

root@imx8mpevk:~# uci set repacd.MAPConfig.FronthaulSSID='EasyMeshssid-MAP'

root@imx8mpevk:~# uci set repacd.MAPConfig.FronthaulKey='EasyMeshssid-MAP'

root@imx8mpevk:~# uci set repacd.repacd.Role='CAP'

root@imx8mpevk:~# uci commit repacd

root@imx8mpevk:~# uci set wireless.wlan0.disabled='1'

root@imx8mpevk:~# uci set wireless.@wifi-iface[1].ssid=EasyMeshssid-MAP

root@imx8mpevk:~# uci set wireless.@wifi-iface[1].encryption='psk2+ccmp'

root@imx8mpevk:~# uci set wireless.@wifi-iface[1].key=EasyMeshssid-MAP

root@imx8mpevk:~# uci set wireless.@wifi-iface[2].ssid=EasyMeshssid-MAP

root@imx8mpevk:~# uci set wireless.@wifi-iface[2].encryption='psk2+ccmp'

root@imx8mpevk:~# uci set wireless.@wifi-iface[2].key=EasyMeshssid-MAP

root@imx8mpevk:~# uci commit wireless 

Step 2: 执行如下命令使能Controller角色

 ## insert modules
root@imx8mpevk:~# modprobe llc
root@imx8mpevk:~# modprobe stp
root@imx8mpevk:~# modprobe bridge
root@imx8mpevk:~# insmod /usr/lib/modules/emesh-sp.ko
root@imx8mpevk:~# insmod /usr/lib/modules/hyfi-bridging.ko
root@imx8mpevk:~# insmod /usr/lib/modules/wlan_cnss_core_pcie.ko
root@imx8mpevk:~# modprobe cfg80211
root@imx8mpevk:~# insmod /usr/lib/modules/wlan.ko country_code=US
root@imx8mpevk:~# insmod /usr/lib/modules/wlan_son_cld.ko
## process
root@imx8mpevk:~# ubusd &
root@imx8mpevk:~# procd -s /var/run/ubus/ubus.sock &
root@imx8mpevk:~# netifd -s /var/run/ubus/ubus.sock -c /etc/config -p /lib/netifd &
## config bridge
root@imx8mpevk:~# brctl addbr br-lan
root@imx8mpevk:~# ifconfig br-lan hw ether $(iw dev wlan1 info |grep addr|awk '{print $2}')
root@imx8mpevk:~# ip addr flush dev eth0
root@imx8mpevk:~# ip addr flush dev br-lan
## scripts
root@imx8mpevk:~# ln -fs /usr/sbin/uci /sbin
root@imx8mpevk:~# . /etc/cap_cfg_hyctl.sh
root@imx8mpevk:~# . /etc/cfg_wireless_mac.sh
root@imx8mpevk:~# /etc/init.d/repacd start
root@imx8mpevk:~# . /etc/dnsmasq.sh

Step 3: 执行如下命令检查EasyMesh功能是否加载成功

root@imx8mpevk:~# ps
...

944 root          7708 S    /usr/sbin/hostapd /var/run/hostapd-wlan1.conf -ddd -
954 root          1956 S    /usr/sbin/hostapd_cli -i wlan1 -p /var/run/hostapd-w
1046 root          7708 S    /usr/sbin/hostapd /var/run/hostapd-wlan2.conf -ddd -
1052 root          1956 S    /usr/sbin/hostapd_cli -i wlan2 -p /var/run/hostapd-w
1259 root          3840 S    /usr/sbin/wsplcd -c /tmp/wsplcd-lan.conf -a -M /etc/
1535 root        25200 S    /usr/sbin/ezmesh -d -C /tmp/ezmesh-lan.conf -P 7777 -cfg80211
1565 nobody    2292 S    dnsmasq --dhcp-range=192.168.39.10,192.168.39.100,12h -p 54

3. 功能验证

3.1 验证拓扑

3.1.1 验证EasyMesh Controller和Agent连接

Step 1: 按照下图搭建验证拓扑

Step 2: Controller设备命令行上执行如下命令

root@imx8mpevk:~# hostapd_cli -i wlan2 -p /var/run/hostapd-wlan2 wps_pbc
命令行显示如下信息则表示WPS PBC触发成功,Agent可以通过WPS方式进行连接。
OK

Step 3:Agent设备命令行上执行如下命令。 

root@imx8mpevk:~# wpa_cli -i wlan0 -p /var/run/wpa_supplicant-wlan0
> wps_pbc multi_ap=1
命令行显示如下信息则表示Agent通过WPS方式和Controller设备连接成功。
OK
<3>CTRL-EVENT-NETWORK-REMOVED 1
<3>CTRL-EVENT-NETWORK-ADDED 1
<3>WPS-PBC-ACTIVE
<3>CTRL-EVENT-SCAN-STARTED
<3>CTRL-EVENT-SCAN-RESULTS
<3>WPS-AP-AVAILABLE-PBC
<3>Trying to associate with 6a:b5:6a:61:2c:d5 (SSID='EasyMeshssid-MAP' freq=5220 MHz)
<3>Associated with 6a:b5:6a:61:2c:d5
<3>CTRL-EVENT-SUBNET-STATUS-UPDATE status=0
<3>CTRL-EVENT-EAP-STARTED EAP authentication started
<3>CTRL-EVENT-EAP-STATUS status='started' parameter=''
<3>CTRL-EVENT-EAP-PROPOSED-METHOD vendor=14122 method=1
<3>CTRL-EVENT-EAP-STATUS status='accept proposed method' parameter='WSC'
<3>CTRL-EVENT-EAP-METHOD EAP vendor 14122 method 1 (WSC) selected
<3>WPS-CRED-RECEIVED 100e0043102600010110450010456173794d657368737369642d4d4150100300020020100f0002000810270010456173794d657368737369642d4d4150102000066e66251109da
<3>WPS-SUCCESS
<3>CTRL-EVENT-EAP-STATUS status='completion' parameter='failure'
<3>CTRL-EVENT-EAP-FAILURE EAP authentication failed
<3>CTRL-EVENT-DISCONNECTED bssid=6a:b5:6a:61:2c:d5 reason=3 locally_generated=1
<3>Trying to associate with SSID 'EasyMeshssid-MAP'
<3>Associated with 02:03:7f:95:c6:c0
<3>CTRL-EVENT-SUBNET-STATUS-UPDATE status=0
<3>WPA: Key negotiation completed with 02:03:7f:95:c6:c0 [PTK=CCMP GTK=CCMP]
<3>CTRL-EVENT-CONNECTED - Connection to 02:03:7f:95:c6:c0 completed [id=1 id_str=]
<4>WPA: EAPOL-Key Replay Counter did not increase - dropping packet
<3>CTRL-EVENT-DISCONNECTED bssid=02:03:7f:95:c6:c0 reason=3 locally_generated=1
<3>CTRL-EVENT-SCAN-STARTED
<3>CTRL-EVENT-SCAN-RESULTS
<3>WPS-AP-AVAILABLE
<3>Trying to associate with SSID 'EasyMeshssid-MAP'
<3>Associated with 6a:b5:6a:61:2c:d5
<3>CTRL-EVENT-SUBNET-STATUS-UPDATE status=0
<3>CTRL-EVENT-EAP-SUCCESS EAP authentication completed successfully (based on lower layer success)
<3>WPA: Key negotiation completed with 6a:b5:6a:61:2c:d5 [PTK=CCMP GTK=CCMP]
<3>CTRL-EVENT-CONNECTED - Connection to 6a:b5:6a:61:2c:d5 completed [id=1 id_str=]

Step 4: Agent设备命令行上执行如下命令去获取IP地址

root@imx8mpevk:~# . /etc/dhcpd.sh
命令行显示如下信息则表示Agent成功获取到IP地址。
dhcpcd not running
DUID 00:01:00:01:2c:f7:9b:44:aa:1d:cd:82:bc:8e
br-lan: IAID 0b:58:38:0a
br-lan: soliciting a DHCP lease
br-lan: soliciting an IPv6 router
br-lan: offered 192.168.39.99 from 192.168.39.1
br-lan: probing address 192.168.39.99/24
br-lan: leased 192.168.39.99 for 43200 seconds
br-lan: adding route to 192.168.39.0/24
br-lan: adding default route via 192.168.39.1
forked to background, child pid 19366

Step 5: 等待约1分钟后,在Agent设备命令行执行如下命令

root@imx8mpevk:~# iw dev
命令行显示如下信息则表示Agent完成Fronthaul AP配置同步。
phy#0
        Interface wlan2
                ifindex 9
                wdev 0x4
                addr 6a:24:68:17:30:80
                ssid EasyMeshssid-MAP
                type AP
                channel 44 (5220 MHz), width: 80 MHz, center1: 5210 MHz
                txpower 41.00 dBm
        Interface p2p0
                ifindex 7
                wdev 0x3
                addr 66:c4:03:0a:00:bb
                type P2P-device
        Interface wlan1
                ifindex 6
                wdev 0x2
                addr a6:b4:0b:58:38:0a
                ssid EasyMeshssid-MAP
                type AP
                channel 1 (2412 MHz), width: 40 MHz, center1: 2422 MHz
                txpower 0.00 dBm

Step 6: Agent设备命令行执行如下命令。 

root@imx8mpevk:/# ping 192.168.39.1
若IP地址ping成功,则表示Agent设备和Controller设备间的连通性没有问题。 

Step 7: 使用STA(手机)连接Agent设备, STAping Controller设备IP地址,若ping成功,则表示STAController设备间的连通性没有问题。

3.1.2 验证两个EasyMesh Agent连接

Step 1: 按照下图搭建验证拓扑。

Step 2: 参照前面章节完成Controller设备和Agent1设备的连接。

Step 3: 执行的操作在Agent1设备和Agent2设备上再执行一遍,完成Agent1设备和Agent2设备的连接。

Step 4: 使用STA1(手机)连接Agent1设备, 在STA1上ping Controller设备IP地址,若ping成功,则表示STA1和Controller设备间的连通性没有问题。

Step 5: 使用STA2(手机)连接Agent2设备, STA2ping Controller设备IP地址,若ping成功,则表示STA2Controller设备间的连通性没有问题。 

### 回答1: Qualcomm QCA7500是一款多模块无线通信解决方案。它是高度集成的芯片,支持Wi-Fi、蓝牙和蓝牙低功耗(BLE)等无线通信技术。 首先,QCA7500具备强大的Wi-Fi性能。它支持最新的802.11ac Wave 2标准,提供高达1.73Gbps的数据传输速率。此外,它还采用了MU-MIMO(多用户多输入多输出)技术,可以同时处理多个终端设备的数据流,提供更稳定、更快速的无线连接。 其次,QCA7500还支持蓝牙和BLE技术。蓝牙可以用于与其他设备进行配对、传输文件等,而BLE则适用于低功耗应用,如智能家居、健康监测设备等。这使得QCA7500在多样化的无线通信场景中都具备出色的性能和灵活性。 此外,QCA7500还具备高度集成的特点。它融合了Wi-Fi、蓝牙和BLE的功能,并且集成了硬件加速引擎,可以提供更高效的数据传输速率和更低的功耗消耗。这种高度集成的设计使得QCA7500在设备尺寸较小或资源受限的应用中具有优势。 总之,Qualcomm QCA7500是一款性能强大、功能丰富、高度集成的无线通信解决方案。它的支持的Wi-Fi、蓝牙和BLE技术使得它在各种应用场景下都能提供稳定高效的无线连接。无论是在智能家居、健康监测还是其他领域,QCA7500都能满足用户对于无线通信的需求。 ### 回答2: Qualcomm QCA7500是一款高性能、高可靠性的有线网络解决方案。它是一颗集成式芯片,提供了多种功能和特性,可广泛应用于各种通信和网络设备。 首先,Qualcomm QCA7500支持多种连接接口,包括千兆以太网、USB 3.0和SATA,使其能够方便地与其他设备互联。这种多接口的设计为各种应用场景提供了灵活的连接方式。 其次,Qualcomm QCA7500具有出色的性能和可扩展性。它支持高速的数据传输,可以达到千兆级别的传输速度。同时,该芯片还具备多核处理器和硬件加速引擎,可以处理复杂的数据计算和网络协议,提供出色的性能和响应速度。 此外,Qualcomm QCA7500还具备高度的可靠性和稳定性。它采用高质量的组件和经过严格测试的设计,以确保长时间的稳定运行。此外,该芯片还支持错误修复和故障恢复机制,可以自动检测和修复网络故障,提供更可靠的网络连接。 最后,Qualcomm QCA7500还具备较低的功耗和高效的能源管理能力。它采用先进的功耗管理技术,可以根据需要调整工作状态,以降低能耗并延长设备的电池寿命。这使其特别适用于无线路由器、网络交换机和其他高性能通信设备。 综上所述,Qualcomm QCA7500是一款功能强大、性能优越、可靠稳定的芯片,适用于多种通信和网络设备,为用户提供高速、高质量的有线连接体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值