OpenHarmony开发者论坛

标题: esp32 移植openharmony wifi模式只能连接没密码的热点,带密码的热点连接不上 [打印本页]

作者: zlx0606    时间: 2026-1-21 19:12
标题: esp32 移植openharmony wifi模式只能连接没密码的热点,带密码的热点连接不上
[md]### 【问题描述】

1. 介绍问题现象和发生的背景
   (1)参考拓维信息的niobeu4开发板,在esp32上移植了openharmony5.0.2,编译烧录测试简单程序,系统正常运行,串口正常输出。
   (2)测试wifi功能,按照openharmony wifi sta功能api开发wifi程序,结果发现只能连接上没有密码的热点,无法连接有密码的热点。
   (3)使用esp-idf原生的api开发wifi(系统环境是openharmony,只更换api),结果也是只能连接没有密码的热点,无法连接带密码的热点。
2. 相关的代码(请勿使用截图)

   ```c
   int WifiConnect(void)
   {
       WifiScanInfo *info = NULL;
       unsigned int size = WIFI_SCAN_HOTSPOT_LIMIT;
       static struct netif *g_lwip_netif = NULL;
       WifiDeviceConfig select_ap_config = {0};
       int result;
       osDelay(OD_DELAY_200);
       printf("<--System Init-->\r\n");
       WiFiInit();
       printf(" Wifi Init succeed! \r\n");
       if (EnableWifi() != WIFI_SUCCESS) {
           printf("EnableWifi failed, wifi_error = %d\n", wifi_error);
           return -1;
       }
       printf(" EnableWifi succeed! \r\n");
       if (IsWifiActive() == 0) {
           printf("Wifi station is not actived.\n");
           return -1;
       }
       printf(" Wifi station is actived! \r\n");
       info = malloc(sizeof(WifiScanInfo) * WIFI_SCAN_HOTSPOT_LIMIT);
       if (info == NULL) {
           printf("faild to create wifiscanInfo.\n");
           return -1;
       }
       printf(" Wifi Scan start! \r\n");
       do {
           ssid_count = 0;
           g_staScanSuccess = 0;
           Scan();
           WaitScanResult();
           wifi_error = GetScanInfoList(info, &size);
       } while (g_staScanSuccess != 1);
       printf(" Wifi Scan end! \r\n");

       //连接指定的WiFi热点
       strcpy(select_ap_config.ssid, SELECT_WIFI_SSID);
       strcpy(select_ap_config.preSharedKey, SELECT_WIFI_PASSWORD);
       printf("[%s][%s] \r\n", select_ap_config.ssid, select_ap_config.preSharedKey);
       select_ap_config.securityType = WIFI_SEC_TYPE_PSK;

       if (AddDeviceConfig(&select_ap_config, &result) == WIFI_SUCCESS)
       {
           int ret = ConnectTo(result);
           printf("\r\n ConnectTo: %d \r\n", ret);
           if ( ret == WIFI_SUCCESS && WaitConnectResult() == 1)
           {
               printf("WiFi connect succeed!\r\n");
           }else
           {
               printf("WiFi connect failed!\r\n");
           }
       }

       for(;;)
       {
           osDelay(100);
       }
   }
   ```
3. 运行结果、错误截图

   连接有密码的热点(连接失败),串口输出如下内容:

   ![image.png](https://forums-obs.openharmony.c ... 6ukchaepfcqkhuk.png "image.png")

   连接没有密码的热点(连接成功),串口输出如下内容:

   ![image.png](https://forums-obs.openharmony.c ... p4z4yz6lldeey99.png "image.png")
4. 我尝试过的解决方法和结果

   尝试使用esp-idf的api,结果还是一样。
5. 我想要达到的结果

   看网上资料有人说是鸿蒙的安全管理导致。

### 【运行环境】

硬件:esp32
ROM版本:
DevEvoStudio版本:
SDK版本:openharmony v5.0.2
[/md]
作者: zlx0606    时间: 2026-2-5 14:45
问题已经解决
作者: 老六    时间: 2026-2-9 22:43
我最近也在做这个,想咨询一下移植方面的问题,能否留个方式,请教一下




欢迎光临 OpenHarmony开发者论坛 (https://forums.openharmony.cn/) Powered by Discuz! X3.5