admin管理员组

文章数量:1620372


title: 鸿蒙Wi-Fi Demo运行
date: 2021-1-1 22:25:10
categories: harmony


本文首发于LHM’s notes, 欢迎关注我的博客~
坑有点多~

由于之前没有看过wifi的内核态代码,所以这里只能一个文件一个文件摸索了。但是在摸索的过程中发现,Wi-Fi内核态的代码鸿蒙竟然没有开放,只有一个libwpa.a静态库。由于官方开发板Hi3518中搭配的wifi芯片是Hi3881,猜测libwpa.a中的实现是根据Hi3881具体定制,因此没有开放出来?内核态的研究只能就此打住,后续再想办法。

接着摸索发现有几个Wi-Fi Demo用例,是和官方开发板搭配使用的,那就先将这几个Demo跑起来看看。

进入applications/sample/camera/communication/BUILD.gn中,添加如下修改:

lite_component(“sample“) {
    features = [
        "wpa_supplicant:wpa_sample",  #station模式的示例
        "hostapd:hostapd_sample", #ap模式的示例
        "wpa_cli:wpa_cli_sample" #使用client监听事件和控制wpa的示例
    ]
  
}

在features字段中增加索引,使指定的目标模板参与编译。features字段指定业务模板的路径和目标。

  • wpa_supplicant是相对目标,指向该BUILD.gn当前目录下的wpa_supplicant文件
  • wpa_sample是编译目标

将这三行代码加上去之后,编译之后重启系统,bin目录下会新增 wpa_supplicant wpa_cli hostapd 三个二进制文件。

运行STA模式

在harmonyOS 下,进入bin文件

执行 ./wpa_supplicant -i wlan0 -c ../etc/wpa_supplicant.conf

注意:

  • wpa_supplicant.conf需要提前设置ssid 和psk

  • 官方开发板的wlan只支持2.4,如果手机开的热点是5G, 那么STA会怎么也扫不到

    applications/sample/camera/communication/wpa_supplicant/config/wpa_supplicant.conf文件下

country=GB
ctrl_interface=udp
network={
    ssid="lhm"     # wifi账号
    psk="88888888" # wifi 密码
}
运行AP模式

在harmonyOS 下,进入bin文件

执行 ./hostapd -i wlan0 /etc/hostapd.conf

同理,hostapd.conf需要做一些配置

applications/sample/camera/communication/hostapd/config/hostapd.conf文件下

interface=wlan0
driver=hdf wifi
ctrl_interface=udp
ssid=testap
hw_mode=g
channel=1
ignore_broadcast_ssid=0
wpa_passphrase=12345678

执行之后那么手机可以发现一个叫testap的热点,可以连上去,但是没有网络。就像没有联网的路由器,可以连接,但是无法上网。

本文标签: 鸿蒙wifiDemo