Page 1 of 1

Failure during link, smartconfig

Posted: Fri May 25, 2018 4:14 pm
by HenryM
I need a solution for configuring wifi and the smartconfig support looks like a good way to do it. However, I'm unable to get past the linking stage. I'm using Amazon FreeRTOS 1.2.6.

I've copied the example code (https://github.com/espressif/esp-idf/tr ... art_config) into my project, but when I build I'm getting link errors.

Code: Select all

➜  make git:(master) ✗ make
CC build/amazon-freertos-common/wifi.o
AR build/amazon-freertos-common/libamazon-freertos-common.a
LD build/aws_demos.elf
/home/henrym/controller-0-10v/lib/third_party/mcu_vendor/espressif/esp-idf/components/esp32/lib/libsmartconfig.a(sc_airkiss.o):(.literal.airkiss_get_net_errno+0x4): undefined reference to `lwip_getsockopt_r'
/home/henrym/controller-0-10v/lib/third_party/mcu_vendor/espressif/esp-idf/components/esp32/lib/libsmartconfig.a(sc_airkiss.o):(.literal.KISS_Send_task+0xc): undefined reference to `lwip_htons'
/home/henrym/controller-0-10v/lib/third_party/mcu_vendor/espressif/esp-idf/components/esp32/lib/libsmartconfig.a(sc_airkiss.o):(.literal.KISS_Send_task+0x10): undefined reference to `lwip_socket'
/home/henrym/controller-0-10v/lib/third_party/mcu_vendor/espressif/esp-idf/components/esp32/lib/libsmartconfig.a(sc_airkiss.o):(.literal.KISS_Send_task+0x14): undefined reference to `lwip_setsockopt_r'
/home/henrym/controller-0-10v/lib/third_party/mcu_vendor/espressif/esp-idf/components/esp32/lib/libsmartconfig.a(sc_airkiss.o):(.literal.KISS_Send_task+0x18): undefined reference to `lwip_sendto_r'
/home/henrym/controller-0-10v/lib/third_party/mcu_vendor/espressif/esp-idf/components/esp32/lib/libsmartconfig.a(sc_airkiss.o):(.text.airkiss_get_net_errno+0x1b): undefined reference to `lwip_getsockopt_r'
/home/henrym/controller-0-10v/lib/third_party/mcu_vendor/espressif/esp-idf/components/esp32/lib/libsmartconfig.a(sc_airkiss.o):(.text.KISS_Send_task+0x26): undefined reference to `lwip_htons'
/home/henrym/controller-0-10v/lib/third_party/mcu_vendor/espressif/esp-idf/components/esp32/lib/libsmartconfig.a(sc_airkiss.o):(.text.KISS_Send_task+0x7f): undefined reference to `lwip_socket'
/home/henrym/controller-0-10v/lib/third_party/mcu_vendor/espressif/esp-idf/components/esp32/lib/libsmartconfig.a(sc_airkiss.o):(.text.KISS_Send_task+0xba): undefined reference to `lwip_setsockopt_r'
/home/henrym/controller-0-10v/lib/third_party/mcu_vendor/espressif/esp-idf/components/esp32/lib/libsmartconfig.a(sc_airkiss.o):(.text.KISS_Send_task+0xda): undefined reference to `lwip_sendto_r'
/home/henrym/controller-0-10v/lib/third_party/mcu_vendor/espressif/esp-idf/components/esp32/lib/libsmartconfig.a(sc_esptouch.o):(.literal.TOUCH_Send_task+0xc): undefined reference to `ipaddr_addr'
/home/henrym/controller-0-10v/lib/third_party/mcu_vendor/espressif/esp-idf/components/esp32/lib/libsmartconfig.a(sc_esptouch.o):(.text.get_net_errno+0x1b): undefined reference to `lwip_getsockopt_r'
/home/henrym/controller-0-10v/lib/third_party/mcu_vendor/espressif/esp-idf/components/esp32/lib/libsmartconfig.a(sc_esptouch.o):(.text.TOUCH_Send_task+0x28): undefined reference to `ipaddr_addr'
/home/henrym/controller-0-10v/lib/third_party/mcu_vendor/espressif/esp-idf/components/esp32/lib/libsmartconfig.a(sc_esptouch.o):(.text.TOUCH_Send_task+0x3b): undefined reference to `lwip_htons'
/home/henrym/controller-0-10v/lib/third_party/mcu_vendor/espressif/esp-idf/components/esp32/lib/libsmartconfig.a(sc_esptouch.o):(.text.TOUCH_Send_task+0xcb): undefined reference to `lwip_socket'
/home/henrym/controller-0-10v/lib/third_party/mcu_vendor/espressif/esp-idf/components/esp32/lib/libsmartconfig.a(sc_esptouch.o):(.text.TOUCH_Send_task+0x106): undefined reference to `lwip_setsockopt_r'
/home/henrym/controller-0-10v/lib/third_party/mcu_vendor/espressif/esp-idf/components/esp32/lib/libsmartconfig.a(sc_esptouch.o):(.text.TOUCH_Send_task+0x126): undefined reference to `lwip_sendto_r'
collect2: error: ld returned 1 exit status
/home/henrym/controller-0-10v/demos/espressif/esp32_devkitc_esp_wrover_kit/make/../../../../lib/third_party/mcu_vendor/espressif/esp-idf/make/project.mk:393: recipe for target '/home/henrym/controller-0-10v/demos/espressif/esp32_devkitc_esp_wrover_kit/make/build/aws_demos.elf' failed
make: *** [/home/henrym/controller-0-10v/demos/espressif/esp32_devkitc_esp_wrover_kit/make/build/aws_demos.elf] Error 1
➜  make git:(master) ✗ 
Does anyone know how to resolve this issue? I'm limited to one post per day on the Amazon AWS forums, so I'm hoping to find help here.

Re: Failure during link, smartconfig

Posted: Wed May 30, 2018 4:13 pm
by HenryM
My one post per day issue at AWS forums seems to have been lifted. The information I've received there is that lwIP is not supported in a:FreeRTOS. I do not expect it to be easy to get it working. Hopefully they add support to it soon.

Re: Failure during link, smartconfig

Posted: Thu May 31, 2018 11:00 am
by ESP_Mahavir
Hi HenryM,

Amazon FreeRTOS has its own TCP/IP stack, hence it is unlikely that there will be official support for lwIP stack. Having said that, if their TCP/IP stack had standard POSIX socket interface, then it would have been really straight forward to run ESP-IDF components like `smartconfig` in the context of a:FreeRTOS.

Also it would have been possible to adapt `smartconfig` component as per a:FreeRTOS secure socket layer, please refer here, https://github.com/aws/amazon-freertos/ ... _sockets.c, but again secure socket layer do not support UDP socket (required for sending ACK in `smartconfig` protocol) yet.

I will keep you updated as this needs to fixed sooner than later.

Re: Failure during link, smartconfig

Posted: Fri Jun 01, 2018 6:07 pm
by HenryM
At the current time, is there really a benefit to using a:FreeRTOS over ESP-IDF? The only thing I noticed was that their release appears to have GreenGrass support. The things that didn't work straight out of the box was SmartConfig, Bluetooth, OTA, and SNTP. That was enough to make me switch to ESP-IDF. I don't need GreenGrass yet, but in the future I will. I don't know what it'll take to implement it on my own.

My hope is that a:FreeRTOS catches up to ESP-IDF and has a compatible OTA update so I can switch to it when it has reached an acceptable maturity level.