Skip to content

mathieucarbou/AsyncTCP

 
 

Repository files navigation

AsyncTCP

License: LGPL 3.0 Continuous Integration PlatformIO Registry

A fork of the AsyncTCP library by @me-no-dev.

Async TCP Library for ESP32 Arduino

This is a fully asynchronous TCP library, aimed at enabling trouble-free, multi-connection network environment for Espressif's ESP32 MCUs.

This library is the base for ESPAsyncWebServer

AsyncClient and AsyncServer

The base classes on which everything else is built. They expose all possible scenarios, but are really raw and require more skills to use.

Changes in this fork

  • Based on ESPHome fork

  • library.properties for Arduino IDE users

  • Add CONFIG_ASYNC_TCP_MAX_ACK_TIME

  • Add CONFIG_ASYNC_TCP_PRIORITY

  • Add CONFIG_ASYNC_TCP_QUEUE_SIZE

  • Add setKeepAlive()

  • Arduino 3 / ESP-IDF 5 compatibility

  • Better CI

  • Better example

  • Customizable macros

  • Fix for "Required to lock TCPIP core functionality". Ref: #27 and espressif/arduino-esp32#10526

  • Fix for "ack timeout 4" client disconnects.

  • Fix from me-no-dev#173 (partially applied)

  • Fix from me-no-dev#184

  • IPv6

  • LIBRETINY support

  • LibreTuya

  • Reduce logging of non critical messages

  • Use IPADDR6_INIT() macro to set connecting IPv6 address

  • xTaskCreateUniversal function

Coordinates

mathieucarbou/AsyncTCP @ ^3.2.12

Important recommendations

Most of the crashes are caused by improper configuration of the library for the project. Here are some recommendations to avoid them.

  1. Set the running core to be on the same core of your application (usually core 1) -D CONFIG_ASYNC_TCP_RUNNING_CORE=1
  2. Set the stack size appropriately with -D CONFIG_ASYNC_TCP_STACK_SIZE=16384. The default value of 16384 might be too much for your project. You can look at the MycilaTaskMonitor project to monitor the stack usage.
  3. You can change if you know what you are doing the task priority with -D CONFIG_ASYNC_TCP_PRIORITY=10. Default is 10.
  4. You can increase the queue size with -D CONFIG_ASYNC_TCP_QUEUE_SIZE=128. Default is 64.
  5. You can decrease the maximum ack time -D CONFIG_ASYNC_TCP_MAX_ACK_TIME=3000. Default is 5000.

I personally use the following configuration in my projects:

  -D CONFIG_ASYNC_TCP_MAX_ACK_TIME=3000
  -D CONFIG_ASYNC_TCP_PRIORITY=10
  -D CONFIG_ASYNC_TCP_QUEUE_SIZE=128
  -D CONFIG_ASYNC_TCP_RUNNING_CORE=1
  -D CONFIG_ASYNC_TCP_STACK_SIZE=4096

About

Async TCP Library for ESP32

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C++ 99.4%
  • Other 0.6%