一、硬件信息
我这里使用到的 i.MX8QM 硬件上有 3 路 SD3.0 接口,其中一路复用做了 eMMC5.1,设备名为 mmc0;有一路用作 SD1,设备名为 mmc1;还有一路连接 SDIO WiFi 模块(CBM252),设备名为 mmc2。下图为 WiFi 模块使用到的芯片引脚连接图。
二、SDIO WiFi 驱动介绍
SDIO 接口的 WiFi,首先,它是一个 SDIO 卡 设备,然后具备了 WiFi 的功能,所以 SDIO 接口的 WiFi 驱动就是在 WiFi 驱动外面套上了一个 SDIO 驱动的外壳。
SDIO 驱动仍然符合设备驱动的分层与分离思想。
设备驱动层的源码需要找 WiFi 模组厂商提供,将拿到的 WiFi 驱动源码放到 kernel 目录下:drivers/net/wireless/bcmdhd
Host:针对不同主机端的 SDHC、MMC 控制器的驱动,这部分需要由驱动工程师来完成;
Core:整个 MMC 的核心层,这部分完成不同协议和规范的实现,为 Host 层和设备驱动层提供接口函数。
d
Core 层和 Host 层源码在 kernel 目录下:drivers/mmc
Core 层完成了
三、驱动移植
这里使用的 i.MX8 Android 软件版本是:imx-p9.0.0_2.1.0-auto-ga。
如下为 WiFi 模块厂商提供的移植包,根据移植包可以开始移植工作。
① 首先将移植包提供的文件拷贝到 Android 对应目录下:
将 WiFi 驱动源码 driver 目录下的 bcmdhd 文件夹拷贝到 Android 的 kernel 目录下:vendor/nxp-opensource/kernel_imx/drivers/net/wireless/
拷贝移植包 bin 中的 wl 到 vendor/nxp/imx-firmware/cyw-wifi-bt/ 目录
拷贝移植包 FW 中的 fw_bcmdhd.bin、bcmdhd.cal 和 bcmdhd.clm_blob 到 vendor/nxp/imx-firmware/cyw-wifi-bt/DHD89359 目录
拷贝移植包 config 中的 p2p_supplicant.conf、hostapd.conf 和 wpa_supplicant.conf 到 device/fsl/common/wifi 目录
拷贝移植包文件夹 wpa_supplicant\wpa_supplicant_8 到 external 目录下替换
拷贝移植包文件夹 wpa_supplicant\wpa_supplicant_8\libbcmdhd 目录下文件到hardware/broadcom/wlan/bcmdhd/wpa_supplicant_8_lib
② 在如下目录文件中添加配置代码:
vendor/nxp-opensource/kernel_imx/drivers/net/wireless/Makefile
# by pual
obj-$(CONFIG_BCMDHD) += bcmdhd/
vendor/nxp-opensource/kernel_imx/drivers/net/wireless/Kconfig
# by pual
source "drivers/net/wireless/bcmdhd/Kconfig"
vendor/nxp-opensource/kernel_imx/arch/arm64/configs/android_defconfig
CONFIG_WLAN_VENDOR_BROADCOM=y
CONFIG_BCMDHD=m
CONFIG_BCM4373=y
CONFIG_BCMDHD_SDMMC=y
CONFIG_BCMDHD_SDIO=y
CONFIG_BCMDHD_VENDOR_EXT=y
CONFIG_BCMDHD_WPA3=y
vendor/nxp-opensource/kernel_imx/arch/arm64/boot/dts/freescale/fsl-imx8qm-mek.dtsi
regulators {
reg_usdhc3_vmmc: usdhc3_vmmc {
compatible = "regulator-fixed";
regulator-name = "WLAN_EN";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
//gpio = <&gpio0 10 GPIO_ACTIVE_HIGH>;
off-on-delay = <4800>;
enable-active-high;
};
}
&iomuxc {
pinctrl_usdhc3_gpio: usdhc3grpgpio {
fsl,pins = <
SC_P_SCU_GPIO0_07_LSIO_GPIO1_IO03 0x18000020
SC_P_M41_I2C0_SCL_LSIO_GPIO0_IO10 0x18000020 //wifi enable
SC_P_QSPI1A_DQS_LSIO_GPIO4_IO22 0x18000020 //wifi bt vddio
SC_P_FLEXCAN2_TX_LSIO_GPIO4_IO02 0x18000020
//SC_P_ESAI1_TX4_RX1_LSIO_GPIO2_IO12 0x18000020
SC_P_USDHC2_CD_B_LSIO_GPIO4_IO12 0x00000021
SC_P_SPI3_SCK_LSIO_GPIO2_IO17 0x00000021
SC_P_SPI3_SDI_LSIO_GPIO2_IO19 0x18000021
SC_P_SPI3_CS0_LSIO_GPIO2_IO20 0x18000021
>;
};
pinctrl_usdhc3: usdhc3grp {
fsl,pins = <
SC_P_USDHC2_CLK_CONN_USDHC2_CLK 0x06000041
SC_P_USDHC2_CMD_CONN_USDHC2_CMD 0x00000021
SC_P_USDHC2_DATA0_CONN_USDHC2_DATA0 0x00000021
SC_P_USDHC2_DATA1_CONN_USDHC2_DATA1 0x00000021
SC_P_USDHC2_DATA2_CONN_USDHC2_DATA2 0x00000021
SC_P_USDHC2_DATA3_CONN_USDHC2_DATA3 0x00000021
//SC_P_USDHC2_RESET_B_CONN_USDHC2_RESET_B 0x00000020
SC_P_USDHC2_VSELECT_CONN_USDHC2_VSELECT 0x00000021
>;
};
pinctrl_usdhc3_100mhz: usdhc3grp100mhz {
fsl,pins = <
SC_P_USDHC2_CLK_CONN_USDHC2_CLK 0x06000040
SC_P_USDHC2_CMD_CONN_USDHC2_CMD 0x00000020
SC_P_USDHC2_DATA0_CONN_USDHC2_DATA0 0x00000020
SC_P_USDHC2_DATA1_CONN_USDHC2_DATA1 0x00000020
SC_P_USDHC2_DATA2_CONN_USDHC2_DATA2 0x00000020
SC_P_USDHC2_DATA3_CONN_USDHC2_DATA3 0x00000020
SC_P_USDHC2_VSELECT_CONN_USDHC2_VSELECT 0x00000020
>;
};
pinctrl_usdhc3_200mhz: usdhc3grp200mhz {
fsl,pins = <
SC_P_USDHC2_CLK_CONN_USDHC2_CLK 0x06000040
SC_P_USDHC2_CMD_CONN_USDHC2_CMD 0x00000020
SC_P_USDHC2_DATA0_CONN_USDHC2_DATA0 0x00000020
SC_P_USDHC2_DATA1_CONN_USDHC2_DATA1 0x00000020
SC_P_USDHC2_DATA2_CONN_USDHC2_DATA2 0x00000020
SC_P_USDHC2_DATA3_CONN_USDHC2_DATA3 0x00000020
SC_P_USDHC2_VSELECT_CONN_USDHC2_VSELECT 0x00000020
>;
};
}
&usdhc3 {
pinctrl-names = "default", "state_100mhz", "state_200mhz";
pinctrl-0 = <&pinctrl_usdhc3>, <&pinctrl_usdhc3_gpio>;
pinctrl-1 = <&pinctrl_usdhc3_100mhz>, <&pinctrl_usdhc3_gpio>;
pinctrl-2 = <&pinctrl_usdhc3_200mhz>, <&pinctrl_usdhc3_gpio>;
bus-width = <4>;
//cd-gpios = <&gpio4 12 GPIO_ACTIVE_LOW>;
//wp-gpios = <&gpio5 21 GPIO_ACTIVE_HIGH>;
vmmc-supply = <®_usdhc3_vmmc>;
wifi-host;
status = "okay";
};
③ 修改 Android 板配置文件:device/fsl/imx8q/mek_8q/BoardConfig.mk,如下:
BOARD_WLAN_DEVICE := bcmdhd
WPA_SUPPLICANT_VERSION := VER_0_8_X
BOARD_WPA_SUPPLICANT_DRIVER := NL80211
BOARD_HOSTAPD_DRIVER := NL80211
BOARD_HOSTAPD_PRIVATE_LIB := lib_driver_cmd_$(BOARD_WLAN_DEVICE)
BOARD_WPA_SUPPLICANT_PRIVATE_LIB := lib_driver_cmd_$(BOARD_WLAN_DEVICE)
WIFI_HIDL_FEATURE_DUAL_INTERFACE := true
BOARD_VENDOR_KERNEL_MODULES += \
$(KERNEL_OUT)/drivers/net/wireless/bcmdhd/bcmdhd.ko
④ device/fsl/imx8q/mek_8q/mek_8q.mk 文件下添加如下代码:
# by pual
# Copy wifi FW/wl binary/wpa_suuplicant.conf to board
PRODUCT_COPY_FILES += \
device/fsl/common/wifi/p2p_supplicant.conf:$(TARGET_COPY_OUT_VENDOR)/etc/wifi/p2p_supplicant.conf \
device/fsl/common/wifi/hostapd.conf:$(TARGET_COPY_OUT_VENDOR)/etc/wifi/hostapd.conf \
device/fsl/common/wifi/wpa_supplicant.conf:$(TARGET_COPY_OUT_VENDOR)/etc/wifi/wpa_supplicant.conf \
vendor/nxp/imx-firmware/cyw-wifi-bt/wl:system/bin/wl \
vendor/nxp/imx-firmware/cyw-wifi-bt/fw_bcmdhd.bin:$(TARGET_COPY_OUT_VENDOR)/etc/firmware/brcm/fw_bcmdhd.bin \
vendor/nxp/imx-firmware/cyw-wifi-bt/bcmdhd.cal:$(TARGET_COPY_OUT_VENDOR)/etc/firmware/brcm/bcmdhd.cal \
vendor/nxp/imx-firmware/cyw-wifi-bt/bcmdhd.clm_blob:$(TARGET_COPY_OUT_VENDOR)/etc/firmware/brcm/bcmdhd.clm_blob \
# by pual
# Add WiFi CY HAL library
PRODUCT_PACKAGES += \
libwpa_client \
lib_driver_cmd_bcmdhd \
android.hardware.wifi@1.0-service \
wifilogd \
wificond
⑤ device/fsl/imx8q/mek_8q/init.rc 文件下添加如下代码:
service wpa_supplicant /vendor/bin/hw/wpa_supplicant \
-iwlan0 -Dnl80211 \
-c/vendor/etc/wifi/wpa_supplicant.conf \
-m/vendor/etc/wifi/p2p_supplicant.conf \
-puse_p2p_group_interface=1p2p_device=1 \
-O/data/vendor/wifi/wpa/sockets \
-e/data/vendor/wifi/entropy.bin -g@android:wpa_wlan0
interface android.hardware.wifi.supplicant@1.0::ISupplicant default
interface android.hardware.wifi.supplicant@1.1::ISupplicant default
socket wpa_wlan0 dgram 660 wifi wifi
class main
disabled
oneshot
⑥ external/wpa_supplicant_8/hostapd/android.config 文件添加如下代码:
#by pual
CONFIG_CTRL_IFACE_HOSTAPD_HIDL=y
⑦ device/fsl/imx8q/mek_8q/manifest.xml 文件添加如下代码:
android.hardware.wifi
hwbinder
1.2
IWifi
default
android.hardware.wifi.supplicant
hwbinder
1.1
ISupplicant
default
android.hardware.wifi.hostapd
hwbinder
1.0
IHostapd
default
⑧ device/fsl/imx8q/mek_8q/BoardConfig.mk 文件添加如下代码:
WIFI_HIDL_FEATURE_DUAL_INTERFACE := true
⑨ 根据移植包更新补丁文件 cfg80211_wpa3_kernel_4_12_0
⑩ 完成以上工作后,开始编译,Android 目录下执行如下操作:
source build/envsetup.sh
lunch 33
make -j16
编译完成后将镜像烧录到开发板中。
注:
一、如果编译过程出现如下错误,解决方法如下
编译报错(一):
'drivers/net/wireless/bcmdhd/Kconfig:1:warning: ignoring unsupported character '
解决方法:
将 dos 格式文本转换成 unix 文本
sudo apt-get install dos2unix
dos2unix ./drivers/net/wireless/bcmdhd/Kconfig
编译报错(二):
scripts/kconfig/zconf.tab.c:2466:23: fatal error: zconf.lex.c: No such file
解决方法:
rm -rf out
cd vendor/nxp-opensource/kernel_imx
make mrproper
source build/envsetup.sh
lunch 33
make -j16
四、功能验证
启动开发板,启动 log 中可以看到设备已经创建完成
mmc2: new ultra high speed SDR104 SDIO card at address 0001
查看 mmc 设备节点,可以看到 mmc2 已经创建
mek_8q:/ # ls /sys/bus/mmc/devices/
mmc0:0001 mmc2:0001
如果节点没有顺利生成需要检查:
将上一节编译生成的 bcmdhd.ko 文件进行挂载:
insmod /vendor/lib/modules/bcmdhd.ko firmware_path=/vendor/etc/firmware/brcm/fw_bcmdhd.bin nvram_path=/vendor/etc/firmware/brcm/bcmdhd.cal clm_path=/vendor/etc/firmware/brcm/bcmdhd.clm_blob
挂载时如果出现如下报错:
[ 126.153587] type=1400 audit(1612757054.924:3017): avc: denied { module_load } for pid=4322 comm="insmod" path="/vendor/lib/modules/bcmdhd.ko" dev="dm-1" ino=474 scontext=u:r:su:s0 tcontext=u:object_r:vendor_file:s0 tclass=system permissive=1
解决方法:
① 在 device/fsl/imx8q/sepolicy/system_server.te 中添加:
allow su system_data_file:system { module_load };
② 修改以下目录中的 domain.te,
将 1314 行代码注释如下:
#neverallow * ~{ system_file vendor_file rootfs }:system module_load;
修改完成后,重新编译烧录再挂载:
mek_8q:/ #insmod /vendor/lib/modules/bcmdhd.ko firmware_path=/vendor/etc/firmware/brcm/fw_bcmdhd.bin nvram_path=/vendor/etc/firmware/brcm/bcmdhd.cal clm_path=/vendor/etc/firmware/brcm/bcmdhd.clm_blob
[ 100.077849] dhd_module_init in
[ 100.081196] Power-up adapter 'DHD generic adapter'
[ 100.087401] imx8qm-pinctrl iomuxc: pin_config_set op failed for pin 11
[ 100.093949] sdhci-esdhc-imx 5b030000.usdhc: Error applying setting, reverse things back
[ 100.103080] dummy_probe: enter
[ 100.106150] dummy_probe: func->num=0x1;
[ 100.110090] dummy_probe: class=0x0; vendor=0xffff; device=0xffff
[ 100.120511] dummy_probe: enter
[ 100.123575] dummy_probe: func->num=0x2;
[ 100.127525] dummy_probe: class=0x0; vendor=0xffff; device=0xffff
[ 100.136290] wifi_platform_set_power = 1, delay: 200 msec
[ 100.348092] wifi_platform_bus_enumerate device present 1
[ 100.371949] imx8qm-pinctrl iomuxc: pin_config_set op failed for pin 11
[ 100.378503] sdhci-esdhc-imx 5b030000.usdhc: Error applying setting, reverse things back
[ 100.387744] bcmsdh_sdmmc: bcmsdh_sdmmc_probe Enter
[ 100.398496] bcmsdh_sdmmc: bcmsdh_sdmmc_probe Enter
[ 100.403317] bus num (host idx)=2, slot num (rca)=1
[ 100.408291] found adapter info 'DHD generic adapter'
[ 100.413466] sdioh_attach: sd clock rate = 198000000
[ 100.419094] F1 signature read @0x18000000=0x17204373
[ 100.424254] sdioh_cis_read: func_cis_ptr[0]=0x10ac
[ 100.441946] sdioh_cis_read: func_cis_ptr[1]=0x1000
[ 100.461725] sdioh_cis_read: func_cis_ptr[2]=0x1038
[ 100.481247] F1 signature OK, socitype:0x1 chip:0x4373 rev:0x0 pkg:0x2
[ 100.488448] DHD: dongle ram size is set to 917504(orig 917504) at 0x160000
[ 100.495413] wifi_platform_prealloc: failed to alloc static mem section 7
[ 100.502239] wifi_platform_get_mac_addr
[ 100.506246] CFG80211-TRACE) wl_cfg80211_attach :In
[ 100.511059] CFG80211-DEBUG) wl_cfg80211_attach :func ffff8008f79edc08
[ 100.517569] CFG80211-DEBUG) wl_setup_wiphy :Setting interface combinations for common mode
[ 100.525880] CFG80211-DEBUG) wl_setup_wiphy :Registering custom regulatory)
[ 100.532799] CFG80211-INFO) wl_setup_wiphy : Registering Vendor80211
[ 100.539140] CFG80211-INFO) wl_cfgvendor_attach : Vendor: Register BRCM cfg80211 vendor cmd(0x67) interface
[ 100.551232] CFG80211-DEBUG) wl_init_priv_mem :Enter
[ 100.556242] CFG80211-DEBUG) wl_create_event_handler :Enter
[ 100.562155] CFG80211-DEBUG) wl_init_conf :Enter
[ 100.566825] CFG80211-DEBUG) wl_link_down :In
[ 100.571118] CFG80211-DEBUG) wl_setup_rfkill :Enter
[ 100.576794] CFG80211-DEBUG) wl_rfkill_set :Enter
[ 100.580101] CFG80211-DEBUG) wl_cfg80211_netdev_notifier_call :Enter state:5 ndevffff8008f6eb1000
[ 100.581511] CFG80211-DEBUG) wl_rfkill_set :
[ 100.590480] CFG80211-ERROR) wl_cfg80211_netdev_notifier_call : wdev null. Do nothing
[ 100.590484] CFG80211-DEBUG) wl_cfg80211_netdev_notifier_call :Enter state:1 ndevffff8008f6eb1000
[ 100.590495] CFG80211-ERROR) wl_cfg80211_netdev_notifier_call :
[ 100.594690] RF unblocked
[ 100.602464] wdev null. Do nothing
[ 100.623230] CFG80211-DEBUG) wl_cfg80211_netdev_notifier_call :Enter state:5 ndevffff8008f7e57000
[ 100.632222] CFG80211-ERROR) wl_cfg80211_netdev_notifier_call : wdev null. Do nothing
[ 100.640011] CFG80211-DEBUG) wl_cfg80211_netdev_notifier_call :Enter state:1 ndevffff8008f7e57000
[ 100.649035] CFG80211-ERROR) wl_cfg80211_netdev_notifier_call : wdev null. Do nothing
[ 100.656807] CFG80211-DEBUG) wl_cfg80211_netdev_notifier_call :Enter state:5 ndevffff8008f2ae7000
[ 100.665779] CFG80211-ERROR) wl_cfg80211_netdev_notifier_call : wdev null. Do nothing
[ 100.673543] CFG80211-DEBUG) wl_cfg80211_netdev_notifier_call :Enter state:5 ndevffff8008f7786000
[ 100.682537] CFG80211-ERROR) wl_cfg80211_netdev_notifier_call : wdev null. Do nothing
[ 100.690312] CFG80211-DEBUG) wl_cfg80211_netdev_notifier_call :Enter state:5 ndevffff8008f77eb000
[ 100.699284] CFG80211-ERROR) wl_cfg80211_netdev_notifier_call : wdev null. Do nothing
[ 100.707080] CFG80211-DEBUG) wl_cfg80211_netdev_notifier_call :Enter state:5 ndevffff8008f77ef000
[ 100.716061] CFG80211-ERROR) wl_cfg80211_netdev_notifier_call : wdev null. Do nothing
[ 100.723868] dhd_init_logstrs_array: Failed to open the file /installmedia/logstrs.bin
[ 100.732350] dhd_attach(): thread:dhd_watchdog_thread:10cd started
[ 100.738545] dhd_attach(): thread:dhd_dpc:10ce started
[ 100.743689] dhd_attach(): thread:dhd_rxf:10cf started
[ 100.748772] dhd_deferred_work_init: work queue initialized
[ 100.754561] dhd_init_logtrace_process(): thread:dhd_logtrace_thread:10d0 started
[ 100.762001] dhd_init_logtrace_process: thr_logtrace_ctl(4304) succedded
[ 100.769853] imx8qm-pinctrl iomuxc: pin_config_set op failed for pin 11
[ 100.776398] sdhci-esdhc-imx 5b030000.usdhc: Error applying setting, reverse things back
[ 100.785537] dhdsdio_probe_init: making DHD_BUS_DOWN
[ 100.798197] dhd_os_open_image1: /vendor/etc/firmware/brcm/fw_bcmdhd.bin (588784 bytes) open success
[ 100.863927] dhd_os_open_image1: /vendor/etc/firmware/brcm/bcmdhd.cal (2237 bytes) open success
[ 100.873160] dhdsdio_write_vars: Download, Upload and compare of NVRAM succeeded.
[ 100.949598] dhd_bus_init: enable 0x06, ready 0x06 (waited 0us)
[ 100.955495] si_get_pmu_reg_addr: addrRET: 18000670
[ 100.961445] dhdsdio_readshared: sdpcm_shared version 1 in dhd is different than sdpcm_shared version 0 in dongle
[ 100.972676] dhdsdio_readshared: sdpcm_shared version 1 in dhd is different than sdpcm_shared version 0 in dongle
[ 100.983702] Firmware version = wl0: Oct 5 2020 10:37:32 version 13.35.205.1 (r727312 CY) FWID 01-e06c80ca
[ 100.993459] wifi_platform_get_mac_addr
[ 101.003616] dhd_os_open_image1: /vendor/etc/firmware/brcm/bcmdhd.clm_blob (4400 bytes) open success
[ 101.013177] dhd_check_current_clm_data: ----- This FW is not included CLM data -----
[ 101.026207] dhd_check_current_clm_data: ----- This FW is included CLM data -----
[ 101.036151] Firmware up: op_mode=0x0005, MAC=88:bd:78:64:6b:22
[ 101.045231] Disable tdls_auto_op failed. -1
[ 101.050002] dhd_preinit_ioctls Set lpc failed -23
[ 101.057596] dhd_preinit_ioctls set keeplive failed -23
[ 101.063191] dhd_preinit_ioctls Set txbf failed -23
[ 101.068676] dhd_preinit_ioctls Set scancache failed -23
[ 101.074563] dhd_preinit_ioctls: event_log_max_sets: 25 ret: -23
[ 101.081277] dhd_preinit_ioctls: enable_memuse is failed ret=-23
[ 101.088410] dhd_iovar: GET failed. resp_buf NULL or length 0.
[ 101.094192] dhd_preinit_ioctls vht_features get failed -2
[ 101.108156] CLM version = Cypress.CYW89373Auto1.39.1
[ 101.140269] MACEVENT: WLC_E_IF, opcode:0x1 ifidx:0 role:0
[ 101.145787] dhd_rx_frame: net device is NOT registered. drop event packet
[ 101.152612] dhd_rx_frame: net device is NOT registered. drop event packet
[ 101.159452] dhd_rx_frame: net device is NOT registered. drop event packet
[ 101.166276] dhd_rx_frame: net device is NOT registered. drop event packet
[ 101.173273] rtt_do_get_ioctl: failed to send getbuf proxd iovar (CMD ID : 1), status=-23
[ 101.181736] dhd_rtt_init : FTM is not supported
[ 101.186899] dhd_rtt_ftm_config : failed to set config
[ 101.193083] dhd_ndo_get_version: failed, retcode = -23
[ 101.199033] dhd_wl_ioctl_get_intiovar: get int iovar wnm_bsstrans_resp failed, ERR -23
[ 101.206981] failed to get wnm_bsstrans_resp
[ 101.212033] failed to set WNM capabilities
[ 101.232789] dhd_preinit_ioctls: Failed to get preserve log # !
[ 101.238647] Time taken for FW download and F2 ready is: 368 msec
[ 101.244896] Dongle Host Driver, version 100.10.5.31 (r727288)
[ 101.244896] Compiled in drivers/net/wireless/bcmdhd
[ 101.255569] CFG80211-DEBUG) wl_cfg80211_netdev_notifier_call :Enter state:16 ndevffff8008f71a2000
[ 101.270235] CFG80211-INFO) wl_cfg80211_get_tx_power : device is not ready
[ 101.277315] CFG80211-DEBUG) wl_cfg80211_netdev_notifier_call :Enter state:5 ndevffff8008f71a2000
[ 101.286795] Register interface [wlan0] MAC: 88:bd:78:64:6b:22
[ 101.286795]
[ 101.296372] dhd_module_init out
查看当前 wlan0 网络设备信息
mek_8q:/ # ifconfig wlan0
wlan0 Link encap:Ethernet HWaddr 88:bd:78:64:6b:22 Driver bcmsdh_sdmmc
BROADCAST MULTICAST MTU:1500 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 TX bytes:0
设置网络参数
mek_8q:/ # ifconfig wlan0 192.168.43.65 netmask 255.255.255.0
启动 wlan0 网卡
mek_8q:/ # ifconfig wlan0 up
[ 135.166864] CFG80211-DEBUG) wl_cfg80211_netdev_notifier_call :Enter state:13 ndevffff8008f71a2000
[ 135.176003] CFG80211-DEBUG) wl_cfg80211_up :In
[ 135.185021] CFG80211-TRACE) wl_cfg80211_up :WLC_GET_VERSION=2
[ 135.190809] CFG80211-TRACE) wl_cfg80211_attach_post :In
[ 135.196681] CFGP2P-INFO) wl_cfgp2p_supported :
[ 135.196684] p2p is supported
[ 135.204132] CFG80211-DEBUG) __wl_cfg80211_up :In
[ 135.208775] CFG80211-TRACE) dhd_config_dongle :In
[ 135.217689] CFG80211-DEBUG) __wl_update_wiphybands :nchain=1
[ 135.239318] CFG80211-DEBUG) wl_construct_reginfo :HT80/160/80p80 center channel : 149
[ 135.247193] CFG80211-DEBUG) wl_construct_reginfo :HT80/160/80p80 center channel : 153
[ 135.255396] CFG80211-DEBUG) wl_construct_reginfo :HT80/160/80p80 center channel : 157
[ 135.263254] CFG80211-DEBUG) wl_construct_reginfo :HT80/160/80p80 center channel : 161
[ 135.275118] CFG80211-DEBUG) wl_update_vht_cap :wl_update_vht_cap 5GHz band vht_enab=1 vht_cap=0f805132 vht_rx_mcs_map=fffe vht_tx_mcs_map=fffe
[ 135.288334] CFG80211-INFO) __wl_cfg80211_up : wl version. Major: 6
[ 135.295856] CFG80211-ERROR) init_roam_cache : roamscan_mode iovar failed. -23
[ 135.303015] CFG80211-ERROR) wl_cfg80211_up : Failed to enable RCC.
[ 135.310254] dhd_set_scb_probe: max_scb_probe setting failed
[ 135.315867] [wlan0] tx queue started
[ 135.319936] CFG80211-DEBUG) wl_cfg80211_set_power_mgmt :Enter
[ 135.326074] CFG80211-DEBUG) wl_cfg80211_netdev_notifier_call :Enter state:1 ndevffff8008f71a2000
初始化 wpa_supplicant
/vendor/bin/hw/wpa_supplicant -iwlan0 -Dnl80211 -O/data/vendor/wifi/wpa/sockets -c/vendor/etc/wifi/wpa_supplicant.conf -m/vendor/etc/wifi/p2p_supplicant.conf -puse_p2p_group_interface=1p2p_device=1 -e/data/vendor/wifi/entropy.bin -ddd -B
扫描无线网络
mek_8q:/ # wpa_cli -i wlan0 scan
查看搜索结果,可以看到我手机打开的热点 “HUAWEI Mate 20 Pro (UD)”
mek_8q:/ # wpa_cli -i wlan0 scan_result
bssid / frequency / signal level / flags / ssid
9c:1c:12:eb:ea:14 5745 -56 [WPA-EAP-CCMP+TKIP][WPA2-EAP+FT/EAP-CCMP+TKIP][ESS] WPG-WIFI
9c:1c:12:eb:e3:d4 5825 -63 [WPA-EAP-CCMP+TKIP][WPA2-EAP+FT/EAP-CCMP+TKIP][ESS] WPG-WIFI
9c:1c:12:9d:d4:34 5765 -70 [WPA-EAP-CCMP+TKIP][WPA2-EAP+FT/EAP-CCMP+TKIP][ESS] WPG-WIFI
9c:1c:12:eb:ea:04 2412 -67 [WPA-EAP-CCMP+TKIP][WPA2-EAP+FT/EAP-CCMP+TKIP][ESS] WPG-WIFI
b4:0f:3b:a9:4c:a0 2437 -66 [WPA-PSK-CCMP][WPA2-PSK-CCMP][ESS] ATU_TEST_WIFI1
0a:da:0c:54:0f:ab 5805 -78 [WPA2-PSK-CCMP][WPS][ESS][P2P] DIRECT-QKCNSZ-116911-01msLL
6c:f3:7f:5a:79:94 5825 -80 [WPA-EAP-CCMP+TKIP][WPA2-EAP+FT/EAP-CCMP+TKIP][ESS] WPG-WIFI
9c:1c:12:eb:e3:c4 2462 -70 [WPA-EAP-CCMP+TKIP][WPA2-EAP+FT/EAP-CCMP+TKIP][ESS] WPG-WIFI
9c:1c:12:eb:e6:c4 2462 -78 [WPA-EAP-CCMP+TKIP][WPA2-EAP+FT/EAP-CCMP+TKIP][ESS] WPG-WIFI
c8:3a:35:43:e9:98 2462 -91 [WPA-PSK-CCMP][WPA2-PSK-CCMP][ESS] \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
9c:1c:12:ec:4a:20 2437 -85 [WPA-EAP-CCMP+TKIP][WPA2-EAP+FT/EAP-CCMP+TKIP][ESS] WPG-WIFI
9c:1c:12:eb:ea:11 5745 -56 [ESS] WPG-Web
9c:1c:12:eb:e3:d1 5825 -63 [ESS] WPG-Web
9c:1c:12:9d:d4:31 5765 -70 [ESS] WPG-Web
9c:1c:12:eb:ea:01 2412 -67 [ESS] WPG-Web
9c:1c:12:eb:e3:c1 2462 -70 [ESS] WPG-Web
6c:f3:7f:5a:79:91 5825 -80 [ESS] WPG-Web
9c:1c:12:eb:e6:c1 2462 -78 [ESS] WPG-Web
88:40:3b:9a:ad:05 2412 -50 [WPA2-PSK-CCMP][ESS] HUAWEI Mate 20 Pro (UD)
d8:c7:c8:74:31:60 5785 -76 [WPA-EAP-CCMP+TKIP][WPA2-EAP+FT/EAP-CCMP+TKIP][ESS] WPG-WIFI
b4:0f:3b:a9:4c:98 2462 -71 [WPA-PSK-CCMP][WPA2-PSK-CCMP][ESS] ATU_Mouse_Test2
8a:62:ec:81:fa:6b 2437 -90 [WPA2-PSK-CCMP][ESS] realme GT
6c:f3:7f:5a:79:81 2462 -88 [ESS] WPG-Web
添加一个网络连接
mek_8q:/ # wpa_cli -i wlan0 add_network
0
连接手机热点
mek_8q:/ # wpa_cli -i wlan0 set_network 0 ssid '"HUAWEI Mate 20 Pro (UD)"'
OK
mek_8q:/ # wpa_cli -i wlan0 set_network 0 psk '"qq402931261"'
OK
mek_8q:/ # wpa_cli -i wlan0 enable_network 0
测试网络连接,可以 ping 通,说明网络连接正常
mek_8q:/ # ping -I wlan0 192.168.43.1
PING 192.168.43.1 (192.168.43.1) from 192.168.43.65 wlan0: 56(84) bytes of data.
64 bytes from 192.168.43.1: icmp_seq=1 ttl=64 time=84.8 ms
64 bytes from 192.168.43.1: icmp_seq=2 ttl=64 time=12.9 ms
64 bytes from 192.168.43.1: icmp_seq=3 ttl=64 time=67.5 ms
64 bytes from 192.168.43.1: icmp_seq=4 ttl=64 time=10.3 ms
64 bytes from 192.168.43.1: icmp_seq=5 ttl=64 time=10.2 ms
通过 Android 界面连接手机热点,挂载 ko 文件后打开 WiFi 设置,搜索网络
连接热点后可以看到打开百度网页正常
评论