AsyncUDP::listenMulticast() properly receives packets sent to IPv4 multicast addresses like 239.1.2.3, but it is not receiving packets sent to IPv6 multicast addresses like ff12::6ood:cafe. The root cause is a bit hidden: listen(NULL, port) would match AsyncUDP::listen(const ip_addr_t *addr, uint16_t port), which calls _udp_bind(_pcb, addr, port), which uses the lwIP API to call udp_bind(struct udp_pcb *pcb, const ip_addr_t *ipaddr, u16_t port) at the end. If lwIP has LWIP_IPV4 enabled, it checks if ipaddr == NULL and sets it to IP4_ADDR_ANY. So an IPv6 address is never bound. This fix checks the IP address passed to AsyncUDP::listenMulticast(). If it is an IPv6 address, it constructs and passes the IPv6 any address (::); otherwise (IPv4), it constructs and passes the IPv4 any address (0.0.0.0). |
||
|---|---|---|
| .github | ||
| cores/esp32 | ||
| docs | ||
| idf_component_examples | ||
| libraries | ||
| package | ||
| tests | ||
| tools | ||
| variants | ||
| .clang-format | ||
| .codespellrc | ||
| .editorconfig | ||
| .flake8 | ||
| .gitignore | ||
| .gitmodules | ||
| .pre-commit-config.yaml | ||
| .prettierignore | ||
| .readthedocs.yaml | ||
| .shellcheckrc | ||
| .vale.ini | ||
| boards.txt | ||
| CMakeLists.txt | ||
| CODE_OF_CONDUCT.md | ||
| idf_component.yml | ||
| Kconfig.projbuild | ||
| LICENSE.md | ||
| package.json | ||
| platform.txt | ||
| programmers.txt | ||
| README.md | ||
Arduino core for the ESP32, ESP32-C3, ESP32-C6, ESP32-H2, ESP32-P4, ESP32-S2 and ESP32-S3.
Need help or have a question? Join the chat at Discord or open a new Discussion
Contents
- Development Status
- Development Planning
- Documentation
- Supported Chips
- Decoding exceptions
- Issue/Bug report template
- Contributing
Development Status
Latest Stable Release
Latest Development Release
Development Planning
Our Development is fully tracked on this public Roadmap 🎉
For even more information you can join our Monthly Community Meetings 🔔.
Documentation
You can use the Arduino-ESP32 Online Documentation to get all information about this project.
Migration guide from version 2.x to 3.x is available here.
APIs compatibility with ESP8266 and Arduino-CORE (Arduino.cc) is explained here.
- Getting Started
- Installing (Windows, Linux and macOS)
- Libraries
- Arduino as an ESP-IDF component
- FAQ
- Troubleshooting
Supported Chips
Here are the ESP32 series supported by the Arduino-ESP32 project:
| SoC | Stable | Development | Datasheet |
|---|---|---|---|
| ESP32 | Yes | Yes | ESP32 |
| ESP32-C3 | Yes | Yes | ESP32-C3 |
| ESP32-C6 | Yes | Yes | ESP32-C6 |
| ESP32-H2 | Yes | Yes | ESP32-H2 |
| ESP32-P4 | Yes | Yes | ESP32-P4 |
| ESP32-S2 | Yes | Yes | ESP32-S2 |
| ESP32-S3 | Yes | Yes | ESP32-S3 |
Note
ESP32-C2 is also supported by Arduino-ESP32 but requires using Arduino as an ESP-IDF component or rebuilding the static libraries. For more information, see the Arduino as an ESP-IDF component documentation or the Lib Builder documentation, respectively.
For more details visit the supported chips documentation page.
Decoding exceptions
You can use EspExceptionDecoder to get meaningful call trace.
Issue/Bug report template
Before reporting an issue, make sure you've searched for similar one that was already created. Also make sure to go through all the issues labeled as Type: For reference.
Finally, if you are sure no one else had the issue, follow the Issue template or Feature request template while reporting any new Issue.
External libraries compilation test
We have set-up CI testing for external libraries for ESP32 Arduino core. You can check test results in the file LIBRARIES_TEST. For more information and how to add your library to the test see external library testing in the documentation.
Contributing
We welcome contributions to the Arduino ESP32 project!
See contributing in the documentation for more information on how to contribute to the project.
We would like to have this repository in a polite and friendly atmosphere, so please be kind and respectful to others. For more details, look at Code of Conduct.