ESP32 - Arduino framework giving error in WiFi library

Hello,

I am using Node mcu 32s board of ESP32 for development in platform io using arduino framework.
However I am getting following error on including WiFi library .

Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/espressif32/nodemcu-32s.html
PLATFORM: Espressif 32 (3.2.0) > NodeMCU-32S
HARDWARE: ESP32 240MHz, 320KB RAM, 4MB Flash
DEBUG: Current (esp-prog) External (esp-prog, iot-bus-jtag, jlink, minimodule, olimex-arm-usb-ocd, olimex-arm-usb-ocd-h, olimex-arm-usb-tiny-h, olimex-jtag-tiny, tumpa)
PACKAGES:
 - framework-arduinoespressif32 3.10006.210326 (1.0.6) 
 - tool-esptoolpy 1.30000.201119 (3.0.0)
 - toolchain-xtensa32 2.50200.97 (5.2.0)
LDF: Library Dependency Finder -> http://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 37 compatible libraries
Scanning dependencies...
Dependency Graph
|-- <Wire> 1.0.1
|-- <RTClib> 1.12.5
|   |-- <Wire> 1.0.1
|-- <WiFi> 1.0
|   |-- <include>
Building in release mode
Compiling .pio\build\nodemcu-32s\lib326\WiFi\ETH.cpp.o
Compiling .pio\build\nodemcu-32s\lib326\WiFi\WiFiClient.cpp.o
Compiling .pio\build\nodemcu-32s\lib326\WiFi\WiFiGeneric.cpp.o
Compiling .pio\build\nodemcu-32s\lib326\WiFi\WiFiMulti.cpp.o
In file included from C:\.platformio\packages\framework-arduinoespressif32\libraries\WiFi\src\WiFi.h:32:0,
                 from C:\.platformio\packages\framework-arduinoespressif32\libraries\WiFi\src\WiFiClient.cpp:21:
C:\.platformio\packages\framework-arduinoespressif32\libraries\WiFi\src\WiFiSTA.h:43:101: error: conversion from 'long unsigned int' to 'IPAddress' is ambiguous
     bool config(IPAddress local_ip, IPAddress gateway, IPAddress subnet, IPAddress dns1 = (uint32_t)0x00000000, IPAddress dns2 = (uint32_t)0x00000000);
                                                                                                     ^
In file included from C:\.platformio\packages\framework-arduinoespressif32\cores\esp32/Arduino.h:150:0,
                 from C:\.platformio\packages\framework-arduinoespressif32\libraries\WiFi\src\WiFiClient.h:24,
                 from C:\.platformio\packages\framework-arduinoespressif32\libraries\WiFi\src\WiFiClient.cpp:20:
C:\.platformio\packages\framework-arduinoespressif32\cores\esp32/IPAddress.h:51:5: note: candidate: IPAddress::IPAddress(const uint8_t*)
     IPAddress(const uint8_t *address);
     ^
C:\.platformio\packages\framework-arduinoespressif32\cores\esp32/IPAddress.h:50:5: note: candidate: IPAddress::IPAddress(uint32_t)
     IPAddress(uint32_t address);
     ^
In file included from C:\.platformio\packages\framework-arduinoespressif32\libraries\WiFi\src\WiFi.h:32:0,
                 from C:\.platformio\packages\framework-arduinoespressif32\libraries\WiFi\src\WiFiClient.cpp:21:
C:\.platformio\packages\framework-arduinoespressif32\libraries\WiFi\src\WiFiSTA.h:43:140: error: conversion from 'long unsigned int' to 'IPAddress' is ambiguous     
     bool config(IPAddress local_ip, IPAddress gateway, IPAddress subnet, IPAddress dns1 = (uint32_t)0x00000000, IPAddress dns2 = (uint32_t)0x00000000);
                                                                                                                                            ^
In file included from C:\.platformio\packages\framework-arduinoespressif32\cores\esp32/Arduino.h:150:0,
                 from C:\.platformio\packages\framework-arduinoespressif32\libraries\WiFi\src\WiFiClient.h:24,
                 from C:\.platformio\packages\framework-arduinoespressif32\libraries\WiFi\src\WiFiClient.cpp:20:
C:\.platformio\packages\framework-arduinoespressif32\cores\esp32/IPAddress.h:51:5: note: candidate: IPAddress::IPAddress(const uint8_t*)
     IPAddress(const uint8_t *address);
     ^
C:\.platformio\packages\framework-arduinoespressif32\cores\esp32/IPAddress.h:50:5: note: candidate: IPAddress::IPAddress(uint32_t)
     IPAddress(uint32_t address);
     ^
C:\.platformio\packages\framework-arduinoespressif32\libraries\WiFi\src\WiFiClient.cpp: In member function 'virtual int WiFiClient::connect(const char*, short unsigned int, long int)':
C:\.platformio\packages\framework-arduinoespressif32\libraries\WiFi\src\WiFiClient.cpp:277:30: error: call of overloaded 'IPAddress(long unsigned int)' is ambiguous 
     IPAddress srv((uint32_t)0);
                              ^
In file included from C:\.platformio\packages\framework-arduinoespressif32\cores\esp32/Arduino.h:150:0,
                 from C:\.platformio\packages\framework-arduinoespressif32\libraries\WiFi\src\WiFiClient.h:24,
                 from C:\.platformio\packages\framework-arduinoespressif32\libraries\WiFi\src\WiFiClient.cpp:20:
C:\.platformio\packages\framework-arduinoespressif32\cores\esp32/IPAddress.h:51:5: note: candidate: IPAddress::IPAddress(const uint8_t*)
     IPAddress(const uint8_t *address);
     ^
C:\.platformio\packages\framework-arduinoespressif32\cores\esp32/IPAddress.h:50:5: note: candidate: IPAddress::IPAddress(uint32_t)
     IPAddress(uint32_t address);
     ^
C:\.platformio\packages\framework-arduinoespressif32\cores\esp32/IPAddress.h:29:7: note: candidate: constexpr IPAddress::IPAddress(const IPAddress&)
 class IPAddress: public Printable
       ^
C:\.platformio\packages\framework-arduinoespressif32\libraries\WiFi\src\WiFiClient.cpp: In member function 'int WiFiClient::getOption(int, int*)':
C:\.platformio\packages\framework-arduinoespressif32\libraries\WiFi\src\WiFiClient.cpp:317:73: error: invalid conversion from 'size_t* {aka unsigned int*}' to 'socklen_t* {aka long unsigned int*}' [-fpermissive]
     int res = getsockopt(fd(), IPPROTO_TCP, option, (char *)value, &size);
                                                                         ^
In file included from C:\.platformio\packages\framework-arduinoespressif32\libraries\WiFi\src\WiFiClient.cpp:22:0:
C:\.platformio\packages\framework-arduinoespressif32\tools\sdk\include\lwip/lwip/sockets.h:572:19: note:   initializing argument 5 of 'int getsockopt(int, int, int, 
void*, socklen_t*)'
 static inline int getsockopt(int s,int level,int optname,void *opval,socklen_t *optlen)
                   ^
In file included from C:\.platformio\packages\framework-arduinoespressif32\libraries\WiFi\src\ETH.cpp:21:0:
C:\.platformio\packages\framework-arduinoespressif32\libraries\WiFi\src\ETH.h:65:105: error: conversion from 'long unsigned int' to 'IPAddress' is ambiguous
         bool config(IPAddress local_ip, IPAddress gateway, IPAddress subnet, IPAddress dns1 = (uint32_t)0x00000000, IPAddress dns2 = (uint32_t)0x00000000);
                                                                                                         ^
In file included from C:\.platformio\packages\framework-arduinoespressif32\libraries\WiFi\src\WiFi.h:28:0,
                 from C:\.platformio\packages\framework-arduinoespressif32\libraries\WiFi\src\ETH.h:24,
                 from C:\.platformio\packages\framework-arduinoespressif32\libraries\WiFi\src\ETH.cpp:21:
C:\.platformio\packages\framework-arduinoespressif32\cores\esp32/IPAddress.h:51:5: note: candidate: IPAddress::IPAddress(const uint8_t*)
     IPAddress(const uint8_t *address);
     ^
C:\.platformio\packages\framework-arduinoespressif32\cores\esp32/IPAddress.h:50:5: note: candidate: IPAddress::IPAddress(uint32_t)
     IPAddress(uint32_t address);
     ^
In file included from C:\.platformio\packages\framework-arduinoespressif32\libraries\WiFi\src\ETH.cpp:21:0:
C:\.platformio\packages\framework-arduinoespressif32\libraries\WiFi\src\ETH.h:65:144: error: conversion from 'long unsigned int' to 'IPAddress' is ambiguous
         bool config(IPAddress local_ip, IPAddress gateway, IPAddress subnet, IPAddress dns1 = (uint32_t)0x00000000, IPAddress dns2 = (uint32_t)0x00000000);
                                                                                                                                                ^
In file included from C:\.platformio\packages\framework-arduinoespressif32\libraries\WiFi\src\WiFi.h:28:0,
                 from C:\.platformio\packages\framework-arduinoespressif32\libraries\WiFi\src\ETH.h:24,
                 from C:\.platformio\packages\framework-arduinoespressif32\libraries\WiFi\src\ETH.cpp:21:
C:\.platformio\packages\framework-arduinoespressif32\cores\esp32/IPAddress.h:51:5: note: candidate: IPAddress::IPAddress(const uint8_t*)
     IPAddress(const uint8_t *address);
     ^
C:\.platformio\packages\framework-arduinoespressif32\cores\esp32/IPAddress.h:50:5: note: candidate: IPAddress::IPAddress(uint32_t)
     IPAddress(uint32_t address);
     ^
C:\.platformio\packages\framework-arduinoespressif32\libraries\WiFi\src\WiFiGeneric.cpp:238:5: error: prototype for 'int WiFiGenericClass::waitStatusBits(int, long unsigned int)' does not match any in class 'WiFiGenericClass'
 int WiFiGenericClass::waitStatusBits(int bits, uint32_t timeout_ms){
     ^
In file included from C:\.platformio\packages\framework-arduinoespressif32\libraries\WiFi\src\WiFiSTA.h:28:0,
                 from C:\.platformio\packages\framework-arduinoespressif32\libraries\WiFi\src\WiFi.h:32,
                 from C:\.platformio\packages\framework-arduinoespressif32\libraries\WiFi\src\WiFiGeneric.cpp:25:
C:\.platformio\packages\framework-arduinoespressif32\libraries\WiFi\src\WiFiGeneric.h:97:16: error: candidate is: static int WiFiGenericClass::waitStatusBits(int, uint32_t)
     static int waitStatusBits(int bits, uint32_t timeout_ms);
                ^
C:\.platformio\packages\framework-arduinoespressif32\libraries\WiFi\src\WiFiMulti.cpp: In member function 'uint8_t WiFiMulti::run(long unsigned int)':
C:\.platformio\packages\framework-arduinoespressif32\libraries\WiFi\src\WiFiMulti.cpp:128:93: error: invalid initialization of non-const reference of type 'int32_t& 
{aka int&}' from an rvalue of type 'int32_t {aka int}'
                 WiFi.getNetworkInfo(i, ssid_scan, sec_scan, rssi_scan, BSSID_scan, chan_scan);
                                                                                             ^
In file included from C:\.platformio\packages\framework-arduinoespressif32\libraries\WiFi\src\WiFi.h:34:0,
                 from C:\.platformio\packages\framework-arduinoespressif32\libraries\WiFi\src\WiFiMulti.h:29,
                 from C:\.platformio\packages\framework-arduinoespressif32\libraries\WiFi\src\WiFiMulti.cpp:26:
C:\.platformio\packages\framework-arduinoespressif32\libraries\WiFi\src\WiFiScan.h:40:10: note:   initializing argument 4 of 'bool WiFiScanClass::getNetworkInfo(uint8_t, String&, uint8_t&, int32_t&, uint8_t*&, int32_t&)'
     bool getNetworkInfo(uint8_t networkItem, String &ssid, uint8_t &encryptionType, int32_t &RSSI, uint8_t* &BSSID, int32_t &channel);
          ^
*** [.pio\build\nodemcu-32s\lib326\WiFi\ETH.cpp.o] Error 1
*** [.pio\build\nodemcu-32s\lib326\WiFi\WiFiClient.cpp.o] Error 1
C:\.platformio\packages\framework-arduinoespressif32\libraries\WiFi\src\WiFiGeneric.cpp:494:9: error: prototype for 'long int WiFiGenericClass::channel()' does not match any in class 'WiFiGenericClass'
 int32_t WiFiGenericClass::channel(void)
         ^
In file included from C:\.platformio\packages\framework-arduinoespressif32\libraries\WiFi\src\WiFiSTA.h:28:0,
                 from C:\.platformio\packages\framework-arduinoespressif32\libraries\WiFi\src\WiFi.h:32,
                 from C:\.platformio\packages\framework-arduinoespressif32\libraries\WiFi\src\WiFiGeneric.cpp:25:
C:\.platformio\packages\framework-arduinoespressif32\libraries\WiFi\src\WiFiGeneric.h:99:13: error: candidate is: int32_t WiFiGenericClass::channel()
     int32_t channel(void);
             ^
C:\.platformio\packages\framework-arduinoespressif32\libraries\WiFi\src\WiFiGeneric.cpp: In static member function 'static int WiFiGenericClass::hostByName(const char*, IPAddress&)':
C:\.platformio\packages\framework-arduinoespressif32\libraries\WiFi\src\WiFiGeneric.cpp:727:13: error: ambiguous overload for 'operator=' (operand types are 'IPAddress' and 'long unsigned int')
     aResult = static_cast<uint32_t>(0);
             ^
In file included from C:\.platformio\packages\framework-arduinoespressif32\libraries\WiFi\src\WiFi.h:28:0,
                 from C:\.platformio\packages\framework-arduinoespressif32\libraries\WiFi\src\WiFiGeneric.cpp:25:
C:\.platformio\packages\framework-arduinoespressif32\cores\esp32/IPAddress.h:80:16: note: candidate: IPAddress& IPAddress::operator=(const uint8_t*)
     IPAddress& operator=(const uint8_t *address);
                ^
C:\.platformio\packages\framework-arduinoespressif32\cores\esp32/IPAddress.h:81:16: note: candidate: IPAddress& IPAddress::operator=(uint32_t)
     IPAddress& operator=(uint32_t address);
                ^
C:\.platformio\packages\framework-arduinoespressif32\cores\esp32/IPAddress.h:29:7: note: candidate: IPAddress& IPAddress::operator=(const IPAddress&)
 class IPAddress: public Printable
       ^
*** [.pio\build\nodemcu-32s\lib326\WiFi\WiFiMulti.cpp.o] Error 1
*** [.pio\build\nodemcu-32s\lib326\WiFi\WiFiGeneric.cpp.o] Error 1

How to resolve this issue ? Please help

my platformio.ini : -

[env:nodemcu-32s]
platform = espressif32
board = nodemcu-32s
framework = arduino
lib_extra_dirs = ~/Documents/Arduino/libraries

This doesn’t look good. Can you use the project task “Advanced → Verbose Build” and post the “Dependency Graph” section?


Hello,
This is my dependency graph.

This seems to be causing problems. Why is there a library called include and what’s in there?

I see two possible solutions here:

  • remove that C:\Users\Omkar Inamdar\Documents\Arduino\libraries\include folder after checking what stuff is in there
  • do not include your old Arduino libraries folder, declare all libraries per lib_deps, per-project.

The only actual non-built in library you seem to be using is the RTClib, so your platformio.ini should look like

[env:nodemcu-32s]
platform = espressif32
board = nodemcu-32s
framework = arduino
lib_deps =
     adafruit/RTClib @ ^1.12.5
1 Like

Hello Max,
changing platformio.ini as per your suggestion worked.
include was containing other arduino libraries and removing that has resolved the issue.
Thank you so much!

Regards,
Omkar