RK3568外接AP6275S WIFI模塊調(diào)試詳解

本文分享下RK3568外接AP6275S WIFI模塊的調(diào)試方法。

AP6275S是一款集SDIO接口的WIFIUART/PCM接口的藍(lán)牙功能為一體的無線模塊。

一、RK3568 SDIO控制器

SDIO(Secure Digital Input and Output)即安全數(shù)字輸入輸出接口,定義了一種外設(shè)接口。

SDIO協(xié)議是由SD卡協(xié)議演進(jìn)而來,向前兼容SD卡協(xié)議,并在此基礎(chǔ)上增加了CMD52CMD53命令。

RK3568 SDIO接口特性如下:

1)兼容SDIO3.0協(xié)議

2)支持1/4bit模式下的SDIO中斷

3)SDIO3.0支持4bit模式

4)支持 SDIO睡眠喚醒操作

5)支持 SDIO讀等待操作

二、WIFI模塊硬件連接

RK3568AP6275S WIFI模塊之間的連接方式見下圖:

image.png

image.png

注:

1)SDIO3.0 IO電壓為1.8V,SDIO2.0 IO電壓為3.3V1.8V。

2)SDMMC2_CLK_M0引腳不需要接上拉電阻。

3)SDMMC2_D0/1/2/3/CMD_M0電源域?yàn)?code>VCCI06 Domain,需要在dts中正確配置。

4)WIFI模塊的WL_REG_ONWL_HOST_WAKE需要在dts中正確配置。

5)AP6275S WIFI模塊需要外接32.768KHZ晶振。

三、RK3568 SDIO和WIFI配置

1、RK3568 SDIO控制器配置

1)arch/arm64/boot/dts/rockchip/rk3568.dtsi

## RK3568 SDIO控制器配置
sdmmc2: dwmmc@fe000000 {
        compatible = "rockchip,rk3568-dw-mshc",
                     "rockchip,rk3288-dw-mshc";
        reg = <0x0 0xfe000000 0x0 0x4000>; ## SDIO寄存器基地址和映射大小
        interrupts = <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>; ## SDIO中斷,對(duì)應(yīng)RK3568 SPI 132(100+32)號(hào)中斷
        max-frequency = <150000000>;    ## SDIO最大運(yùn)行頻率
        clocks = <&cru HCLK_SDMMC2>, <&cru CLK_SDMMC2>, ## SDIO控制器時(shí)鐘
                 <&cru SCLK_SDMMC2_DRV>, <&cru SCLK_SDMMC2_SAMPLE>;
        clock-names = "biu", "ciu", "ciu-drive", "ciu-sample";
        fifo-depth = <0x100>;
        resets = <&cru SRST_SDMMC2>;
        reset-names = "reset";
        status = "disabled";
};

2)arch/arm64/boot/dts/rockchip/rk3568-firefly-port.dtsi

&sdmmc2 {
        max-frequency = <150000000>;
        supports-sdio;
        bus-width = <4>;
        disable-wp;
        cap-sd-highspeed;
        cap-sdio-irq;
        keep-power-in-suspend;
        pinctrl-names = "default";
        pinctrl-0 = <&sdmmc2m0_bus4 &sdmmc2m0_cmd &sdmmc2m0_clk>;
        sd-uhs-sdr104;
        mmc-pwrseq = <&sdio_pwrseq>;
        non-removable;
        status = "disabled";
};

其中:

max-frequencySDIO在該模式下支持的最大運(yùn)行頻率,單位HZ

注:根據(jù)不同的模式進(jìn)行調(diào)整該值,注意和數(shù)據(jù)傳輸速率(Max Data Transfer rate,MB/s)區(qū)別。

supports-sdio:表示為SDIO功能,必須添加,否則無法正常初始化。

bus-widthSDIO使用4線模式。

cap-sd-highspeedhigh speed SDIO外設(shè)。

cap-sdio-irqWIFI模塊是否支持SDIO中斷。

keep-power-in-suspend:支持睡眠時(shí)不掉電,默認(rèn)加入,WIFI模塊默認(rèn)有睡眠喚醒的需求。

pinctrl-namesSDIO控制器引腳。

sd-uhs-sdr104:支持SDIO 3.0。

注:SDIO 3.0引腳電壓必須為1.8V。

&pmu_io_domains {
        status = "okay";
        ...
        vccio6-supply = <&vcc_1v8>; ## SDIO引腳電源域
        ...
};

WIFI電源域vccio6-supply配置為vcc_1v8。

mmc-pwrseqWIFI模塊的的電源控制。對(duì)應(yīng)連接到WIFI模塊的WL_REG_ON引腳,必須配置,否則WIFI模塊無法正常初始化。

non-removable:表示該卡槽為不可移動(dòng)設(shè)備,必須添加。

2、WIFI配置

## 配置WL_REG_ON引腳
sdio_pwrseq: sdio-pwrseq {
        compatible = "mmc-pwrseq-simple";
        ...
        pinctrl-names = "default";
        pinctrl-0 = <&wifi_enable_h>;

        reset-gpios = <&gpio3 RK_PD5 GPIO_ACTIVE_LOW>;
};

## 配置WL_HOST_WAKE引腳,OOB模式時(shí),該引腳必須配置
wireless_wlan: wireless-wlan {
        compatible = "wlan-platdata";
        rockchip,grf = <&grf>;
        pinctrl-names = "default";
        pinctrl-0 = <&wifi_host_wake_irq>;
        WIFI,host_wake_irq = <&gpio3 RK_PD4 GPIO_ACTIVE_HIGH>;
        status = "disabled";
};

AP WIFI模塊最好使用OOB(Out-Of-Band)模式;如果使用In-Band模式,可能會(huì)遇到:在使用WIFI傳輸文件時(shí),通信斷開的問題。

3、使能SDIO和WIFI模塊

arch/arm64/boot/dts/rockchip/rk3568-firefly-roc-pc.dtsi

&sdio_pwrseq {
        status = "okay";
        reset-gpios = <&gpio3 RK_PD5 GPIO_ACTIVE_LOW>;
        post-power-on-delay-ms = <100>;
};

&sdmmc2 {
        status = "okay";
};

&wireless_wlan {
        wifi_chip_type = "ap6275s"; 
        status = "okay";
};

注:

wifi_chip_typeWIFI模塊名稱。

四、RK3568 SDIO和WIFI驅(qū)動(dòng)

1、RK3568 SDIO驅(qū)動(dòng)

RK3568 SDIO控制器使用Synopsys IP。

RK3568驅(qū)動(dòng)文件:drivers/mmc/host/dw_mmc-rockchip.c,主要關(guān)注:

static const struct dw_mci_drv_data rk3288_drv_data = {
    .caps           = dw_mci_rk3288_dwmmc_caps,
    .num_caps       = ARRAY_SIZE(dw_mci_rk3288_dwmmc_caps),
    .set_ios        = dw_mci_rk3288_set_ios,
    .execute_tuning     = dw_mci_rk3288_execute_tuning,
    .parse_dt       = dw_mci_rk3288_parse_dt,
    .init           = dw_mci_rockchip_init,
};

2、WIFI模塊驅(qū)動(dòng)

AP6275S WIFI模塊驅(qū)動(dòng)路徑:drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/

WIFI模塊OOB中斷配置:drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/Kconfig

choice
        depends on BCMDHD && BCMDHD_SDIO
        prompt "Interrupt type"
        default BCMDHD_OOB
        help
                Interrupt type
config BCMDHD_OOB
        depends on BCMDHD && BCMDHD_SDIO
        bool "Out-of-Band Interrupt"
        help
                Interrupt from WL_HOST_WAKE.
config BCMDHD_SDIO_IRQ
        depends on BCMDHD && BCMDHD_SDIO
        bool "In-Band Interrupt"
        help
          Interrupt from SDIO DAT[1]
endchoice

drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/Makefile

MODULE_NAME := bcmdhd
CONFIG_BCMDHD_SDIO := y
CONFIG_BCMDHD_OOB := y
五、WIFI調(diào)試

5.1、 RK3568 SDIO驅(qū)動(dòng)加載

在加載Linux內(nèi)核時(shí),RK3568 SDIO控制器驅(qū)動(dòng)加載信息如下:

[    0.962352] dwmmc_rockchip fe000000.dwmmc: IDMAC supports 32-bit address mode.
[    0.963068] dwmmc_rockchip fe000000.dwmmc: Using internal DMA controller.
[    0.963090] dwmmc_rockchip fe000000.dwmmc: Version ID is 270a
[    0.963150] dwmmc_rockchip fe000000.dwmmc: DW MMC controller at irq 45,32 bit host data width,256 deep fifo
[    0.963337] dwmmc_rockchip fe000000.dwmmc: allocated mmc-pwrseq

5.2、查看RK3568 SDIO屬性

[root@xiaotianbsp:/sys/kernel/debug/mmc3]# cat ios
clock:          100000000 Hz
actual clock:   50000000 Hz
vdd:            21 (3.3 ~ 3.4 V)
bus mode:       2 (push-pull)
chip select:    0 (don't care)
power mode:     2 (on)
bus width:      2 (4 bits)          ## SDIO數(shù)據(jù)位寬
timing spec:    6 (sd uhs SDR104)   ## SDIO速度模式
signal voltage: 1 (1.80 V)          ## SDIO引腳電平
driver type:    0 (driver type B)

5.3、查看WIFI節(jié)點(diǎn)

WIFI模塊初始化成功后,會(huì)出現(xiàn)wlan0節(jié)點(diǎn)。

[root@xiaotianbsp:/]# ifconfig
...
wlan0     Link encap:Ethernet  HWaddr 10:2C:xx:xx:xx:xx
          inet addr:169.254.26.98  Bcast:169.254.255.255  Mask:255.255.0.0
          inet6 addr: fe80::2dfc:f254:5101:95f8/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:23 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:4059 (3.9 KiB)

5.4、打開WIFI

打開WIFI時(shí),日志如下:

[root@xiaotianbsp:/]# ifconfig wlan0 up
[  405.513485] dhd_open: Enter wlan0
[  405.513522] dhd_open : no mutex held. set lock
[  405.513536]
[  405.513536] Dongle Host Driver, version 100.10.545.9 (r826445-20200316-8)
[  405.513557] [dhd-wlan0] wl_android_wifi_on : in g_wifi_on=0
[  405.513565] wifi_platform_set_power = 1, delay: 200 msec
[  405.513588] ======== PULL WL_REG_ON(-1) HIGH! ========
[  405.513601] [WLAN_RFKILL]: rockchip_wifi_power: 1
[  405.513612] [WLAN_RFKILL]: rockchip_wifi_power: toggle = false
[  405.513624] [WLAN_RFKILL]: wifi turn on power [GPIO-1-0]
[  405.818656] sdio_reset_comm():
[  405.938727] mmc_host mmc3: Bus speed (slot 0) = 375000Hz (slot req 400000Hz, actual 375000HZ div = 0)
[  405.955841] mmc_host mmc3: Bus speed (slot 0) = 375000Hz (slot req 100000Hz, actual 93750HZ div = 2)
[  405.973628] mmc_host mmc3: Bus speed (slot 0) = 375000Hz (slot req 375000Hz, actual 375000HZ div = 0)
[  405.988219] mmc3: queuing unknown CIS tuple 0x80 (2 bytes)
[  405.990388] mmc3: queuing unknown CIS tuple 0x80 (3 bytes)
[  405.992435] mmc3: queuing unknown CIS tuple 0x80 (3 bytes)
[  405.996773] mmc3: queuing unknown CIS tuple 0x80 (7 bytes)
[  406.101352] mmc_host mmc3: Bus speed (slot 0) = 50000000Hz (slot req 100000000Hz, actual 50000000HZ div = 0)
[  406.116274] dwmmc_rockchip fe000000.dwmmc: Successfully tuned phase to 348
[  406.116438] sdioh_start: set sd_f2_blocksize 256
[  406.117013] dhd_bus_devreset: == Power ON ==
[  406.117231] F1 signature read @0x18000000=0x1042aae8
[  406.124901] F1 signature OK, socitype:0x1 chip:0xaae8 rev:0x2 pkg:0x4
[  406.126138] DHD: dongle ram size is set to 1310720(orig 1310720) at 0x170000
[  406.126276] dhd_bus_devreset: making DHD_BUS_DOWN
[  406.126376] dhdsdio_probe_init: making DHD_BUS_DOWN
[  406.126665] [dhd] dhd_conf_read_config : Ignore config file /vendor/etc/firmware/config.txt
[  406.126723] [dhd] dhd_conf_set_path_params : Final fw_path=/vendor/etc/firmware/fw_bcm43752a2_ag.bin
[  406.126742] [dhd] dhd_conf_set_path_params : Final nv_path=/vendor/etc/firmware/nvram_ap6275s.txt
[  406.126757] [dhd] dhd_conf_set_path_params : Final clm_path=/vendor/etc/firmware/clm_bcm43752a2_ag.blob
[  406.126777] [dhd] dhd_conf_set_path_params : Final conf_path=/vendor/etc/firmware/config.txt
[  406.127377] dhd_os_open_image1: /vendor/etc/firmware/fw_bcm43752a2_ag.bin (743607 bytes) open success
[  406.264024] dhd_os_open_image1: /vendor/etc/firmware/nvram_ap6275s.txt (8361 bytes) open success
[  406.264122] NVRAM version:  AP6275S_NVRAM_V1.2.1_20200311
[  406.265835] dhdsdio_write_vars: Download, Upload and compare of NVRAM succeeded.
[  406.327008] dhd_bus_init: enable 0x06, ready 0x06 (waited 0us)
[  406.327414] bcmsdh_oob_intr_register: HW_OOB irq=113 flags=0x4
[  406.328627] get_mem_val_from_file: File [/data/misc/wifi/.memdump.info] doesn't exist
[  406.328655] dhd_get_memdump_info: MEMDUMP ENABLED = 3
[  406.330645] dhd_tcpack_suppress_set: TCP ACK Suppress mode 0 -> mode 1
[  406.333701] dhd_os_open_image1: /vendor/etc/firmware/clm_bcm43752a2_ag.blob (28865 bytes) open success
[  406.335142] dhd_check_current_clm_data: ----- This FW is not included CLM data -----
[  406.371248] dhd_check_current_clm_data: ----- This FW is included CLM data -----
[  406.375300] Firmware up: op_mode=0x0005, MAC=10:2c:6b:7f:a1:e0
[  406.385020] dhd_preinit_ioctls: event_log_max_sets: 26 ret: 0
[  406.414727]   Driver: 100.10.545.9 (r826445-20200316-8)
[  406.414727]   Firmware: wl0: Jul 13 2020 18:32:45 version 18.35.387.23.7 (b328500@shgit) (wlan=r880297) FWID 01-f50fdff0
[  406.414727]   CLM: 9.9.5_SS (2019-12-04 01:26:12)
[  406.418036] dhd_txglom_enable: enable 1
[  406.418097] [dhd] dhd_conf_set_txglom_params : txglom_mode=copy
[  406.418123] [dhd] dhd_conf_set_txglom_params : txglomsize=36, deferred_tx_len=0
[  406.418145] [dhd] dhd_conf_set_txglom_params : txinrx_thres=128, dhd_txminmax=-1
[  406.418166] [dhd] dhd_conf_set_txglom_params : tx_max_offset=0, txctl_tmo_fix=300
[  406.418203] [dhd] dhd_conf_get_disable_proptx : fw_proptx=1, disable_proptx=-1
[  406.424486] dhd_wlfc_hostreorder_init(): successful bdcv2 tlv signaling, 64
[  406.430395] dhd_pno_init: Support Android Location Service
[  406.457125] rtt_do_get_ioctl: failed to send getbuf proxd iovar (CMD ID : 1), status=-23
[  406.457203] dhd_rtt_init : FTM is not supported
[  406.458183] dhd_rtt_ftm_config : failed to set config
[  406.463334] dhd_ecounter_autoconfig Ecounter autoconfig in FW not supported
[  406.464525] failed to start ecounters
[  406.464589] dhd_ecounter_configure Ecounters start failed
[  406.473894] [INIT] logset:8 is preserve/chatty
[  406.476035] [INIT] logset:10 is preserve/chatty
[  406.492804] [dhd] dhd_conf_set_country : set country CN, revision 0
[  406.498223] [dhd] dhd_conf_set_country : Country code: CN (CN/0)
[  406.510819] [dhd-wlan0] wl_android_wifi_on : Success
[  406.565995] dhd_open : the lock is released.
[  406.566020] dhd_open: Exit wlan0 ret=0
[  406.566028] [wlan0] tx queue started

打開WIFI時(shí),如果沒有正確配置上電引腳WL_REG_ON,會(huì)出現(xiàn)WIFI模塊初始化失敗,日志如下:

[    1.236141] dhd_module_init: in Dongle Host Driver, version 100.10.545.9 (r826445-20200316-8)
[    1.236163] ======== dhd_wlan_init_plat_data ========
[    1.236174] [WLAN_RFKILL]: rockchip_wifi_get_oob_irq: Enter
[    1.236229] dhd_wlan_init_gpio: WL_HOST_WAKE=-1, oob_irq=113, oob_irq_flags=0x414
[    1.236236] dhd_wlan_init_gpio: WL_REG_ON=-1
[    1.236242] dhd_wifi_platform_load: Enter
[    1.236248] Power-up adapter 'DHD generic adapter'
[    1.236286] wifi_platform_set_power = 1, delay: 200 msec
[    1.236298] ======== PULL WL_REG_ON(-1) HIGH! ========
[    1.236308] [WLAN_RFKILL]: rockchip_wifi_power: 1
[    1.236317] [WLAN_RFKILL]: rockchip_wifi_power: toggle = false
[    1.236326] [WLAN_RFKILL]: wifi turn on power [GPIO-1-0]
[    1.312616] devfreq fde60000.gpu: Couldn't update frequency transition information.
[    1.542011] wifi_platform_bus_enumerate device present 1
[    1.542053] ======== Card detection to detect SDIO card! ========
[    1.542079] mmc3:mmc host rescan start!
[    2.457697] phy phy-fe8a0000.usb2-phy.6: charger = USB_SDP_CHARGER
[    3.358562] fusb302 0-0022: PD disabled
[    3.688850] failed to power up DHD generic adapter, 0 retry left
[    3.704991] wifi_platform_set_power = 0, delay: 0 msec
[    3.705005] ======== PULL WL_REG_ON(-1) LOW! ========
[    3.705010] [WLAN_RFKILL]: rockchip_wifi_power: 0
[    3.705016] [WLAN_RFKILL]: rockchip_wifi_power: toggle = false
[    3.705022] [WLAN_RFKILL]: wifi shut off power [GPIO-1-1]
[    3.705026] wifi_platform_bus_enumerate device present 0
[    3.705031] ======== Card detection to remove SDIO card! ========
[    3.705036] mmc3:mmc host rescan start!
[    3.705041] failed to power up DHD generic adapter, max retry reached**
[    3.705047] unregister wifi platform drivers
[    3.705052] wifi_platform_bus_enumerate device present 0
[    3.705056] ======== Card detection to remove SDIO card! ========
[    3.705060] mmc3:mmc host rescan start!
[    3.705064] ======== dhd_wlan_deinit_plat_data ========
[    3.705070] dhd_module_init: Failed to load the driver, try cnt 0
[    3.705117] dhd_module_init: Failed to load driver max retry reached**
[    3.705127] dhd_module_init: Exit err=-19

5.5、WIFI映像

打開WIFI時(shí),會(huì)加載/vendor/etc/firmware/WIFI模塊的映像。如果WIFI模塊映像不存在,也會(huì)導(dǎo)致WIFI打開失敗。

[root@xiaotianbsp:/]# cd /vendor/etc/firmware/
[root@xiaotianbsp:/vendor/etc/firmware]# ls
BCM4362A2.hcd           fw_bcm43752a2_ag_apsta.bin  nvram_ap6275s.txt
clm_bcm43752a2_ag.blob  fw_bcm43752a2_ag_mfg.bin
fw_bcm43752a2_ag.bin    nvram.txt

WIFI模塊映像配置文件:drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6/Kconfig

config BCMDHD_FW_PATH
        depends on BCMDHD
        string "Firmware path"
        default "/vendor/etc/firmware/fw_bcmdhd.bin"
        help
          Path to the firmware file.

config BCMDHD_NVRAM_PATH
        depends on BCMDHD
        string "NVRAM path"
        default "/vendor/etc/firmware/nvram.txt"
        help
          Path to the calibration file.

5.6、32.768KHZ晶振

如果AP6275S WIFI模塊沒有外接32.768KHZ晶振,WIFI模塊驅(qū)動(dòng)加載時(shí)會(huì)出現(xiàn):

[ 12.077762] dhdsdio_htclk: HT Avail timeout (1000000): clkctl 0x50
[ 12.077810] dhd_bus_init: clock state is wrong. state = 1
[ 12.278468] dhdsdio_htclk: HT Avail timeout (1000000): clkctl 0x50
[ 12.286051] dhd_bus_stop: making DHD_BUS_DOWN

此時(shí),需要做兩次ifconfig wlan0 downifconfig wlan0 up操作才能正常打開WIFI

5.7、WIFI通信失敗

如果在使用WIFI傳輸文件時(shí),提示如下錯(cuò)誤,則需要考慮SDIO 引腳驅(qū)動(dòng)電流強(qiáng)度。

[  109.361499] [dhd] sdioh_request_packet_chain: TX FAILED 00000000928ce921[0], addr=0x08000, pkt_len=17920, ERR=-84
[  109.461882] [dhd] sdioh_request_packet_chain: TX FAILED 000000005a564233[0], addr=0x08000, pkt_len=17408, ERR=-84
[  109.506734] [dhd] bcmsdh_sdmmc: Failed to Read byte F1:@0x1000e=ff, Err: -5
[  109.507793] [dhd] bcmsdh_sdmmc: Failed to Read byte F1:@0x1000e=ff, Err: -5
[  109.510452] [dhd] bcmsdh_sdmmc: Failed to Read byte F1:@0x1000e=ff, Err: -5

5.8、配置WIFI網(wǎng)絡(luò)

可通過如下命令連接網(wǎng)絡(luò)。

## TP-LINK:SSID; 12345678:密碼。
wpa_passphrase "TP-LINK" "12345678" /etc/wpa_supplicant
##生成的psk,配置到/etc/wpa_supplicant.conf中
wpa_supplicant -i wlan0 -c /etc/wpa_supplicant.conf -B

配置成腳本后,執(zhí)行如下:

[root@xiaotianbsp:/]#  wifi_start.sh "TP-LINK" "12345678"
connect to WiFi ssid: TP-LINK, Passwd: 12345678
killall: wpa_supplicant: no process killed
Successfully initialized wpa_supplicant
[   31.473999] P2P interface registered
[   31.474027] wl_cfgp2p_add_p2p_disc_if: wdev: 000000000c5ec882, wdev->net:           (null)
[   34.201611] [dhd-wlan0] wl_cfg80211_connect : Connecting with 54:xx:xx:xx:xx:xx ssid "TP-LINK", len (12), sec=wpa2psk/mfpn/aes, channel=153
[   34.226004] dhd_dbg_start_pkt_monitor, 1622
[   34.458621] [dhd-wlan0] wl_iw_event : Link UP with 54:xx:xx:xx:xx:xx
[   34.458676] [dhd-wlan0] wl_ext_iapsta_event : [S] Link UP with 54:xx:xx:xx:xx:xx
[   34.461832] [dhd-wlan0] wl_bss_connect_done : Report connect result - connection succeeded
[   34.580969] [dhd-wlan0] wl_add_keyext : key index (0)

[root@xiaotianbsp:/]# ifconfig
...

wlan0     Link encap:Ethernet  HWaddr 10:2C:xx:xx:xx:xx
          inet addr:192.168.0.109  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::d4b6:3ff4:82a6:ff22/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:4 errors:0 dropped:0 overruns:0 frame:0
          TX packets:35 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:993 (993.0 B)  TX bytes:3619 (3.5 KiB)

也可以用wpa_cli命令進(jìn)行WIFI驅(qū)動(dòng)相關(guān)測(cè)試。

5.9、ping單通

WIFI配置成功后,可以通過ping命令測(cè)試。如果從PC端可以ping通單板,從單板端不能pingPC,則需要關(guān)閉PC上的防火墻。

## PC防火墻已打開
[root@xiaotianbsp:/]# ping 192.168.0.107
PING 192.168.0.107 (192.168.0.107) 56(84) bytes of data.
^C
--- 192.168.0.107 ping statistics ---
3 packets transmitted, 0 received, 100% packet loss, time 2024ms

## PC防火墻已關(guān)閉
[root@xiaotianbsp:/]# ping 192.168.0.107
PING 192.168.0.107 (192.168.0.107) 56(84) bytes of data.
64 bytes from 192.168.0.107: icmp_seq=1 ttl=128 time=13.0 ms
64 bytes from 192.168.0.107: icmp_seq=2 ttl=128 time=13.9 ms
^C
--- 192.168.0.107 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 13.089/13.499/13.910/0.426 ms

5.10、WIFI帶寬測(cè)試

使用iperf3命令,可以測(cè)試WIFI網(wǎng)絡(luò)帶寬。方法如下:

PC端(server端)輸入:

C:\Users\xiaotianbsp>iperf3 -s
-----------------------------------------------------------
Server listening on 5201
-----------------------------------------------------------
Accepted connection from 192.168.0.109, port 51436
[  5] local 192.168.0.107 port 5201 connected to 192.168.0.109 port 51438
[ ID] Interval           Transfer     Bandwidth
[  5]   0.00-1.00   sec  10.8 MBytes  90.4 Mbits/sec
[  5]   1.00-2.00   sec  12.4 MBytes   104 Mbits/sec
[  5]   2.00-3.00   sec  12.3 MBytes   103 Mbits/sec
[  5]   3.00-4.00   sec  7.31 MBytes  61.0 Mbits/sec
[  5]   4.00-5.00   sec  12.6 MBytes   106 Mbits/sec
[  5]   5.00-6.00   sec  12.5 MBytes   105 Mbits/sec
[  5]   6.00-7.00   sec  12.8 MBytes   107 Mbits/sec
[  5]   7.00-8.00   sec  12.3 MBytes   103 Mbits/sec
[  5]   8.00-9.00   sec  12.2 MBytes   103 Mbits/sec
[  5]   9.00-10.00  sec  11.9 MBytes  99.6 Mbits/sec
[  5]  10.00-10.05  sec   630 KBytes   116 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth
[  5]   0.00-10.05  sec  0.00 Bytes  0.00 bits/sec                  sender
[  5]   0.00-10.05  sec   118 MBytes  98.3 Mbits/sec                  receiver
-----------------------------------------------------------
Server listening on 5201
-----------------------------------------------------------

-s:以server模式運(yùn)行。

單板端輸入:

[root@xiaotianbsp:/]# iperf3 -c 192.168.0.107 -i 1 -t 10
Connecting to host 192.168.0.107, port 5201
[  5] local 192.168.0.109 port 51438 connected to 192.168.0.107 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec  11.8 MBytes  98.6 Mbits/sec    0    211 KBytes
[  5]   1.00-2.00   sec  12.2 MBytes   102 Mbits/sec    0    211 KBytes
[  5]   2.00-3.00   sec  12.6 MBytes   106 Mbits/sec    0    211 KBytes
[  5]   3.00-4.00   sec  7.07 MBytes  59.4 Mbits/sec    2    211 KBytes
[  5]   4.00-5.00   sec  12.7 MBytes   106 Mbits/sec    0    211 KBytes
[  5]   5.00-6.00   sec  12.3 MBytes   103 Mbits/sec    0    211 KBytes
[  5]   6.00-7.00   sec  12.8 MBytes   107 Mbits/sec    0    211 KBytes
[  5]   7.00-8.00   sec  12.5 MBytes   105 Mbits/sec    0    211 KBytes
[  5]   8.00-9.00   sec  12.1 MBytes   101 Mbits/sec    0    211 KBytes
[  5]   9.00-10.00  sec  12.0 MBytes   101 Mbits/sec    0    211 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec   118 MBytes  99.0 Mbits/sec    2             sender
[  5]   0.00-10.00  sec   118 MBytes  98.7 Mbits/sec                  receiver

iperf Done.

-c:以client模式運(yùn)行,并指定serverIP地址。

-i:每次報(bào)告的間隔時(shí)間,單位秒。

-t:總測(cè)試時(shí)間,單位秒。

iperf3下載路徑:https://iperf.fr/iperf-download.php

5.11、關(guān)閉WIFI

關(guān)閉WIFI時(shí),日志如下:

[root@xiaotianbsp:/]# ifconfig wlan0 down
[  401.324832] [wlan0] tx queue stopped
[  401.324866] dhd_stop: Enter wlan0
[  401.324874] dhd_stop: ######### dhd_stop called for ifidx=0 #########
[  401.324884] dhd_stop: making dhdpub up FALSE
[  401.333502] [dhd] CFGP2P-ERROR) wl_cfgp2p_disable_discovery :  do nothing, not initialized
[  401.334734] dhd_tcpack_suppress_set: TCP ACK Suppress mode 1 -> mode 0
[  401.334758] [dhd-wlan0] wl_android_wifi_off : in g_wifi_on=1, on_failure=1
[  401.335240] dhd_dbg_detach_pkt_monitor, 2100
[  401.335256] dhd_bus_devreset: == Power OFF ==
[  401.335526] dhd_bus_stop: making DHD_BUS_DOWN
[  401.335590] bcmsdh_oob_intr_unregister: Enter
[  401.335630] dhd_bus_devreset: making dhdpub up FALSE
[  401.335648] dhd_txglom_enable: enable 0
[  401.335661] dhd_bus_devreset: making DHD_BUS_DOWN
[  401.335674] dhd_bus_devreset:  WLAN OFF DONE
[  401.335792] wifi_platform_set_power = 0, delay: 0 msec
[  401.335814] ======== PULL WL_REG_ON(-1) LOW! ========
[  401.335828] [WLAN_RFKILL]: rockchip_wifi_power: 0
[  401.335851] [WLAN_RFKILL]: rockchip_wifi_power: toggle = false
[  401.335864] [WLAN_RFKILL]: wifi shut off power [GPIO-1-1]
[  401.335874] [dhd-wlan0] wl_android_wifi_off : out
[  401.361919] dhd_stop: Exit wlan0

注:

1、上面調(diào)試方法也適用于其它一些APXXXX WIFI模組。

2、在調(diào)試WIFI模塊時(shí),發(fā)現(xiàn)WIFI模塊有時(shí)會(huì)進(jìn)入睡眠模式,會(huì)導(dǎo)致ping包中time時(shí)間過長(zhǎng)(例:超過200ms)或WIFI斷開。

注:轉(zhuǎn)載請(qǐng)注明作者。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容