The Arduino ESP32 release candidate version 3.0.0-RC1 is based on the ESP-IDF v5.1 (release notes) and is major release supporting new version of ESP-IDF 5.1.
This release introduce breaking changes and support for new SoCs, ESP32-H2 and ESP32-C6. ESP32-C2 support added, for usage you need to build the libraries using ESP32 Arduino Lib builder.
For version migration, please check Migration Guide from v2.X to 3.X
Major changes
- IPv6 Support for ESP32 Arduino by @me-no-dev in #9016
- 3.0.0 Network Refactoring by @me-no-dev in #8760
- Implement official Arduino IDE debugger API by @pillo79 in #9116
- Feature: New Class MacAddress similar to IPAddress by @P-R-O-C-H-Y in #9304
- Add ESP-NOW Arduino library by @P-R-O-C-H-Y and @me-no-dev in #9395
Peripherals updates
UART
- UART: fixes begin() after a previous begin() :: deleting previous RX/TX buffers and its data by @SuGlider in #9095
- HardwareSerial Available For Write by @SuGlider in #9319
- HardwareSerial:begin() changes RTS and CTS pins preventing detaching those pins by @SuGlider in #9353
- Fixes HW Serial attaching pins, PHY initialization, crash after end() by @SuGlider in #9365
I2C
- Fix i2c compilation when #define CONFIG_DISABLE_HAL_LOCKS=1 by @P-R-O-C-H-Y in #9164
- Fix ambiguous for TwoWire::requestFrom() methods and align API with Arduino.cc by @safocl in #8817
RMT
- Adds RMT End of Transmission Level API by @SuGlider in #9238
- Update new RMT function rmtSetEOT(pin, EOT_Level) in the pin remap macros by @SuGlider in #9266
LEDC
- Add missing include for SemaphoreHandle_t to LEDC header file by @sgryphon in #9134
- LEDC - Allow custom channel selection by @P-R-O-C-H-Y in #9031
- feature(ledc): Add output invert option for LEDC pin + minor fixes by @P-R-O-C-H-Y in #9257
SPI
- SPI - Allow detaching of some SPI pins without stopping SPI by @P-R-O-C-H-Y in #9117
- SPI (fix): Adds SPI 3 to the ESP32-S2 and adds comments about it by @SuGlider in #9216
- Fix spiTransaction not updating clock line immediately (#9221) by @and3rson in #9333
- Fix spiTransaction not updating clock line immediately (C2,C6,H2) by @P-R-O-C-H-Y in #9335
GPIO
- Add methods to enable/disable GPIOs interrupt by @P-R-O-C-H-Y in #9025
- Improve Log Messages in GPIO HAL by @SuGlider in #9011
- Add: make digitalRead() for RGB_BUILTIN work by @holgerlembke in #9419
HWCDC
- Fixes the hardware cdc jtag plugged/unplugged status and related timeout/delay by @SuGlider in #9275
- fixes default 100ms delay with HWCDC write() is CDC is not connected by @SuGlider in #9307
- fix: perimgr + begin by @SuGlider in #9331
- fix: HW CDC write() by @SuGlider in #9401
Other peripherals changes
- Fixes sigmaDeltaAttach() when another peripheral is already attached using the same pin by @SuGlider in #9268
- Fixed the String::lastIndexOf bug by @a1ext in #9003
- Fixes EspClass::deepSleep(64 bits) by @SuGlider in #9077
- change(esp32): Added clearing of queue with unTone() by @tanakamasayuki in #9055
- change(MD5Builder): Const-correctness. by @StefanOberhumer in #9104
- Rework cbuf to use FreeRTOS Ringbuffer by @me-no-dev in #7860
- Update binary.h by @Jason2866 in #9323
- core Server class back to Arduino Core API version by @JAndrassy in #9447
Libraries updates
WiFi (Network) related
- Fix race condition in WiFiGenericClass::hostByName by @MattiasTF in #8672
- ESPLwIPClient::setTimeout conflict fix with Stream::setTimeout by @P-R-O-C-H-Y in #6676
- Remove setTimeout from WifiClientSecure by @P-R-O-C-H-Y in #8998
- WiFiClients.setConnectionTimeout added by @JAndrassy in #8863
- Add v6 support to IPAddress to match ArduinoCore-API by @sgryphon in #7174
- Fix IPv6-only DNS by checking IPv6 first if have a public scope address by @sgryphon in #9443
- Revert "WiFiSTA - allow using DHCP again after disconnecting static IP" by @JAndrassy in #8873
- undeprecate WiFiServer::available() by @SuGlider in #9027
- WiFi.disconnect() "aligned with Aduino.cc". waiting for status change. by @JAndrassy in #9062
- WiFiClient - assignment shouldn't stop connection by @JAndrassy in #9029
- Revert "undeprecate available() (#9027)" by @JAndrassy in #9165
- WiFiServer - don't inherit from Print and Server by @JAndrassy in #8930
- Improves WiFiMulti by @SuGlider in #9139
- Add support for hidden networks in WiFiMulti by @lucasssvaz in #9202
- feat(wifi): Add support for NAPT to WIFI AP by @me-no-dev in #9478
- fix(ethernet): move event listener earlier to avoid missing event
ETH_CONNECTED
by @s-hadinger in #9481 - fix(tls): Enable IPv6 support in ssl_client connect by @sgryphon in #9470
- feat(dns): Check type of IP addresses and clear DNS cache if they changed by @sgryphon in #9476
- WiFi.config handle Arduino parameters ordering and auto dns,gw,mask by @JAndrassy in #9425
- Ensure that Static IP configuration for network interfaces is kept until STOP by @me-no-dev in #9445
- WiFi BSSID getter fix by @JAndrassy in #9434
- Use WiFi.mode to enable/disable the Network Interfaces by @me-no-dev in #9436
- WiFiClient - rename flush() to clear() by @JAndrassy in #9453
- ETH: Support physical address auto detection by @P-R-O-C-H-Y in #9313
- Network refactoring - fix some IPv6 DNS issues by @sgryphon in #9439
- Add option to specify AP auth mode and cipher by @me-no-dev in #9454
- Add MacAddress string constructor by @lucasssvaz in #9400
- Add method to set the WiFi radio channel by @lucasssvaz in #9405
- Support for STARTLS/STARTSSL in-band transport upgrades/renegotation by @dirkx in #9100
- [Enhancement] Support no-IRQ for SPI Ethernet W5500 by @TD-er in #9251
- Fix NetworkManager compilation warning by @lucasssvaz in #9452
- feat(net): Add support for selecting the default network interface by @me-no-dev in #9457
- feat(net): Add support for esp_netif flags by @me-no-dev in #9460
Bluetooth & BLE related
- fix(esp32): Added a timeout option to the BLEClient's connect function by @LiveSparks in #9005
- Fixes Pointer and Call using Serial BT callback by @SuGlider in #9245
USB
- Enable USB Serial only if selected by @me-no-dev in #9294
- Fixes ESP32-S2 CDC Debug Logging by @SuGlider in #7284
- fix: USB HID Keyboard raw report by @SuGlider in #9473
- Add more keys in USBHIDKeyboard by @andreock in #9190
SD
- SD library: Fix format by @prplz in #9034
- sd_diskio.cpp: return 0 instead of false when return type != bool by @everslick in #9075
- fix(sd): AquireSPI lock in sdcard_uninit by @P-R-O-C-H-Y in #9468
Webserver
- Fixes Malloc call in WebServer code by @SuGlider in #9012
- fix(webserver): Proposal for simplifying webserver file uploads via form POST. by @everslick in #9167
- WebServer: Ignore extra headers within multipart forms by @tcsullivan in #9253
- Web server simplifications and handers by @dirkx in #7429
- Server Side Events by @lucasssvaz in #9222
- Handle large octet-stream (master branch) by @nathannau in #9440
Update
- Fix ESP32-Solo WDT on HTTP OTA update by @arendst in #5426
- Set Apache license to Update Library by @SuGlider in #9446
- Fix C2 compilation for Updater.cpp by @lucasssvaz in #9228
- Adds feature to decrypt uploaded image bin files. Used esp-idf to encrypt a bin file. by @theeprawn in #5807
Other libraries changes
- Replace new with malloc for non-class calls by @mrengineer7777 in #7868
- ESP-NOW: Fix examples and improve logging by @lucasssvaz in #9455
- DNSServer refactoring, switch to AsyncUDP by @vortigont in #7482
- Added missing identifiers in esp_vfs_littlefs_conf_t by @lbernstone in #9046
- Ticker updated to match extensions in ESP8266 API by @dok-net in #2849
- ArduinoOTA upload intermittent failure fixed by @leifclaesson in #4657
- Separated library sources in cmake for selective. by @AronRubin in #5136
Boards additions and updates
- Update initialize script of 3rd Party Board "senseBox MCU-S2 ESP32-S2" by @bkari02 in #9000
- (fix)Boards: Adafruit_Camera_ESP32-S3-Pin fixes by @ladyada in #9021
- add heltec_wireless_tracker board by @Quency-D in #9080
- Add MakerGo C3 SuperMini def by @DevZillion in #9050
- ESP32-S3 PowerFeather Fixes by @powerfeatherdev in #9052
- Add LED pin aliases to Arduino Nano ESP32 for portability by @sebromero in #9089
- update m5stack boards define by @Gitshaoxiang in #9086
- Create new pins_arduino.h and update boards.txt to add Heltec Wireless Tracker board by @jhiggason in #8725
- Adds SparkFun Pro Micro C3 Variant File by @edspark in #9158
- Add board support for Nologo ESP32C3 Super Mini by @imyelo in #9174
- Add SparkFun ESP32-C6 Thing Plus Variant by @sfe-SparkFro in #9178
- Add board support for Nologo ESP32S3 Pico by @imyelo in #9181
- Added support for 2 new Olimex boards and updated 3 existing ones by @Stanimir-Petev in #9264
- NodeMCU32-S Change default upload speed by @P-R-O-C-H-Y in #9277
- Add Board support for Geekble ESP32-C3 Custom Module by @SooDragon in #9260
- Add WT32-SC01 PLUS support by @c4801725870 in #9284
- fix: Geekble mini board pin fix by @SooDragon in #9309
- Add board definition for Wemos C3 Pico V1.0.0 - Lolin by @lboue in #9442
- feat: Add board revisions V1/V2/V3 to Heltec Wireless Stick by @matthias-bs in #9205
- Added Unexpected Maker BLING by @UnexpectedMaker in #9272
- Add board support for Seeed XIAO ESP32C6 by @Maxwelltoo in #9330
- Add variant for Waveshare ESP32-S3-Touch-LCD-1.28 by @deisterhold in #9386
- Heltec ESP32 Series boards update by @Heltec-Aaron-Lee in #9367
- feat: Add board support for ThingPulse ePulse Feather by @matthias-bs in #9256
- feat: Rename Firebeetle ESP32 board definition by @matthias-bs in #9250
- Added PSRAM menu on Olimex ESP32-DevKit-LiPo board by @Stanimir-Petev in #9451
- Add board definition for ThingPulse ePulse Feather C6 by @squix78 in #9399
- Define Wire1 pins for ESP32-S3 PowerFeather by @powerfeatherdev in #9431
- Fixes for some boards which are failing CI test. by @P-R-O-C-H-Y in #9390
Examples
- Example: ResetReason2 by @mrengineer7777 in #8105
- Fix IDF component examples path by @P-R-O-C-H-Y in #8963
- Wifi async scan example and fix by @SuGlider in #8981
- Added example to demonstrate using HardwareSerial with RS485 interfaces by @econeale in #8941
- Change name to HWCDC_Events.ino (From HWSerial_Events.ino) by @SuGlider in #9483
- Add I2S examples and documentation by @lucasssvaz in #9030
- Update LittleFS Platformio example by @Jason2866 in #9151
- Add Zigbee examples by @P-R-O-C-H-Y in #9024
- Fix AdvancedWebServer.ino uptime conversion by @cydanil in #9224
- feature: create a Trust on First Use example by @dirkx in #9103
- Improve USBVendor Example by @lucasssvaz in #9349
- Added pin check in ETH examples to avoid redefinition by @P-R-O-C-H-Y in #9242
- Fix indentation for UART BLE example by @lucasssvaz in #9343
- fix example(esp32): Set the maximum value of AnalogRead to 4095 by @tanakamasayuki in #9114
- Fixing typo in DiscoverConnect.ino BluetoothSerial example by @akeemlh in #9389
- Adds a new example: onReceiveExample.ino by @SuGlider in #9415
- Fixed "Invalid mbox" error in SimpleTime example by @kinoh in #9262
- Matched pin numbers in doco to numbers in variants files by @lbernstone in #9422
Documentation
- [Docs] Documentation migration from RTD to ESP-Docs by @pedrominatel in #9094
- [Docs] Fix on the documentation preview deploy CI by @pedrominatel in #9109
- Added isKey and getType methods to Preferences documentation by @Viproz in #9111
- Docs: Fix Arduino as IDF Component instructions by @lucasssvaz in #9001
- [Docs] CI changed deploy server from preview to production by @pedrominatel in #9127
- Redo: Docs (API): Adding a note to the Documentation and ReadMe about APIs compatibility by @VojtechBartoska in #9128
- fix(doc): Delete the hall sensor of ESP32 by @tanakamasayuki in #9115
- Fixed duplicated getType documentation. by @Viproz in #9141
- [Docs] Change/clean the requirements file by @pedrominatel in #9196
- migration guide: WiFiServer changes by @JAndrassy in #9458
- [DOC] Add core compatibility guide by @P-R-O-C-H-Y in #9417
- Fix documentation build instructions by @lucasssvaz in #9350
Tooling improvements
- 3.0.0-alpha3 escaping fix by @lyusupov in #8968
- fix(platform): use numbers in all recipe hooks (on master) by @pillo79 in #9220
- IDF Component YAML fixes - Add license, include example + readme in ESP Registry by @P-R-O-C-H-Y in #9162
- Fix compile branch master as Arduino as component with latest IDF 5.1 by @Jason2866 in #9322
- Platformio add
f_boot
to build script by @Jason2866 in #9380 - Implement
get_board_f_image
by @Jason2866 in #9243 - Update mdns version. by @me-no-dev in #9295
- add LittleFS part ID by @me-no-dev in #9340
CI & Testing
- [CI] HW testing - install arduino-cli instead of Arduino IDE by @P-R-O-C-H-Y in #8961
- CI: Adding Shared GitHub DangerJS linter by @VojtechBartoska in #8983
- Fixes CI error in reset_reason.rst by @SuGlider in #8982
- [CI] ESP32 Arduino CI fixes for Windows runner by @P-R-O-C-H-Y in #8991
- CI: Add peripheral manager test by @lucasssvaz in #8811
- [CI] Update workflows actions to latest versions with Node.js 20 by @P-R-O-C-H-Y in #9194
- Remove -Werror=all from build flags, but enable it in CI by @me-no-dev in #9273
- Add hardware tests results by @lucasssvaz in #9332
- Bump tj-actions/changed-files from 36 to 41 in /.github/workflows by @dependabot in #9060
- Update upload and download artifact action to v4 by @lucasssvaz in #9338
Full Changelog: 3.0.0-alpha3...3.0.0-rc1
New Contributors
- @MattiasTF made their first contribution in #8672
- @sgryphon made their first contribution in #7174
- @a1ext made their first contribution in #9003
- @prplz made their first contribution in #9034
- @dependabot made their first contribution in #9060
- @sebromero made their first contribution in #9089
- @Quency-D made their first contribution in #9080
- @DevZillion made their first contribution in #9050
- @StefanOberhumer made their first contribution in #9104
- @jhiggason made their first contribution in #8725
- @safocl made their first contribution in #8817
- @edspark made their first contribution in #9158
- @imyelo made their first contribution in #9174
- @leifclaesson made their first contribution in #4657
- @andreock made their first contribution in #9190
- @LiveSparks made their first contribution in #9005
- @arendst made their first contribution in #5426
- @theeprawn made their first contribution in #5807
- @cydanil made their first contribution in #9224
- @matthias-bs made their first contribution in #9205
- @tcsullivan made their first contribution in #9253
- @kinoh made their first contribution in #9262
- @SooDragon made their first contribution in #9260
- @c4801725870 made their first contribution in #9284
- @and3rson made their first contribution in #9333
- @akeemlh made their first contribution in #9389
- @squix78 made their first contribution in #9399
- @deisterhold made their first contribution in #9386
- @lboue made their first contribution in #9442
Thanks for your contribution! 🎉