We previously noted the ESP32 Arduino Core 3.0.0 Alpha release added support for ESP32-C6 and ESP32-H2 among other changes. The good news is that Arduino ESP32 Core 3.0.0 is now considered stable, and was released a few days ago based on the ESP-IDF 5.1.4 framework. Users of the Arduino IDE can use it straight away, but as we’ll discuss in more detail below it’s unclear whether PlatformIO will be (officially) supported.
There have been many changes since we wrote about the Alpha2 release in November 2023 with 327 commits from 96 contributors. Some of the most recent changes (compared to RC3) include:
- Updated ESPDuino with extra options (CPU freq and Partition)
- Add support for WeAct Studio ESP32C3
- Attach ETH events at the correct place
- Enable the possibility to use SPI ETH with only 4 wires
- Fix ETH.end()
- Fix ETH.stop() with IDF SPI
- Nano ESP32: delete programmer.default entry (on main) due to unintended consequences for CLI users
- Update Kconfig.projbuild to fix LittleFS selective compilation
- Fixed outdated function signature (ledcWrite)
- Remove masking for ADC channel number
- Add GPIO pin mappings for M5Stack CamS3 Unit and select OPI PSRAM by default
- Provide a default TAG name for USE_ESP_IDF_LOG logging macro
- Update merge_package.py to use packaging.version instead of the deprecated distutils.version
You’ll find the release on GitHub for installation in the Arduino IDE just as we did for the Alpha2 release. More ESP32-C6 and ESP32-H2 boards are now supported out of the box, since last time I tried there were only two ESP32-C6 boards and one ESP32-H2 board…
That’s great for users relying on the Arduino IDE, but some prefer working with PlatformIO, and there’s currently an open issue on PlatformIO about support for Arduino ESP32 Core v3.0.0 which may never be officially supported:
The ESP32 Core for Arduino 2.x is the most recent major version currently recommended for use with PlatformIO. The decision to discontinue support was made by the Espressif company, as indicated in their official statement
That’s a long thread, but there seem to be some ongoing commercial discussions between Espressif Systems and PlatformIO developers that are not resolved yet:
[…]
The current supported version is Arduino Core v2.x for ESP32. Our collaboration with Espressif, including discussions about renewal, is ongoing. It’s worth noting that we have @VojtechBartoska, a project manager from Espressif, in this thread. We’re all working together to ensure you receive the best features and support. We’ll keep everyone posted on any updates to ensure a smooth continuation of our services.[…]
PlatformIO is a commercial open-source project. In the past, it used to be a paid service before 2020, following a business-to-consumer (B2C) model. Unexpectedly, PlatformIO gained widespread popularity among millions of developers globally. Consequently, we shifted our strategy to make powerful tools for professional embedded development freely accessible to everyone.
The active development and maintenance of PlatformIO, along with its infrastructure, are now supported by technology partners dedicated to delivering an excellent developer experience. Espressif was one such partner, and we appreciate their long-standing collaboration.
Currently, Espressif has ceased support for new products in PlatformIO, but rest assured, we are committed to providing support for existing Espressif products integrated before this change, as per our technology licensing policy. Your projects won’t face disruptions, and services will continue as usual.
Those messages are from the end of November 2023, but PlatformIO still does not support the Arduino ESP32 3.x release as of now (June 1, 2024). Having said that one user apparently managed to make PlatformIO work with their ESP32-C6 board using the following JSON file:
123456789101112131415161718192021222324252627282930 {"build": {"core": "esp32","f_cpu": "160000000L","f_flash": "80000000L","flash_mode": "qio","mcu": "esp32c6","variant": "esp32c6"},"connectivity": ["wifi"],"debug": {"openocd_target": "esp32c6.cfg"},"frameworks": ["arduino","espidf"],"name": "Espressif ESP32-C6","upload": {"flash_size": "4MB","maximum_ram_size": 327680,"maximum_size": 4194304,"require_upload_port": true,"speed": 460800},"url": "https://docs.espressif.com/projects/espressif-esp-dev-kits/en/latest/esp32c6/esp32-c6-devkitm-1/index.html","vendor": "Espressif"}
But it’s unclear whether all features will work, as another user chimed in:
Yep, for the c6 just the entry arduino needs to be added. Anyways C6 does not work “out of the box”. The needed changes to support C2, H2 and C6 are not so many 😉
We’ll have to see how it goes. So it’s possible to use the new Arduino ESP32 Core 3.0.0 with Platform.io with some effort, but if the companies don’t come to an agreement soon, the long-term future of PlatformIO for ESP32 boards is uncertain. Arduino ESP32 Core 2.x is still supported in PlatformIO, so no issues here for existing boards and projects.
Thanks to Hedda for the tip.
Jean-Luc started CNX Software in 2010 as a part-time endeavor, before quitting his job as a software engineering manager, and starting to write daily news, and reviews full time later in 2011.
Support CNX Software! Donate via cryptocurrencies, become a Patron on Patreon, or purchase goods on Amazon or Aliexpress
Such a bone-headed move. This is just going to make me less likely to use new Espressif parts, not less likely to use PlatformIO.
Are there any good alternatives that do provide proper PlatformIO support?
> any good alternatives that do provide proper PlatformIO support?
Nothing coming close price/performance wise to espressif mcu’s
Nordic Semiconductor and Silicon Labs have competing SoCs but as price is higher as mentioned
That’s why my comment was:
> Nothing coming close price/performance wise to espressif mcu’s
And they lack the kitchen sink aspect to the peripherals they contain
Its better to just use plain ESP-IDF instead of these wrappers, its pretty nice when you get to know it.
I was going to say this. There is a learning curve and there is not quite the peripheral support there is in the Arduino world but if you are committing to the Espressif line it is much more stable and very well designed. I would never use the Arduino layer again unless I had to.
Of course, all my c6 modules have neen faultlessly supported for at least a year.
That is my view on it too. I tried platformio but just didn’t really like it. The ESP-IDF is available as a VSCode plugin anyway which is what I use.
I wouldn’t recommend people trying to use Arduino with non Arduino boards either, the ports just seem too restrictive and learning the vendors tools really isn’t that difficult anyway especially when so many have GUI tools now, like in the STM32CubeIDE, NXP’s IDE and Infineon’s PSoC creator and when they all have relatively easy to use HALs.
I’m not sure what you’re talking about. Arduino is officially supported by Espressif, they pay developers to work on it.
Those are all some Eclipse based horrors. It is laughable to me that Vscode, an Electron App, loaded with plugins, loads 10x or more faster than those IDEs.
While it is well supported, and me-no-dev and Lucas are awesome, they often seem to be stuck between the fast fixing esp-idf and the very strictly compatible Arduino, making it often years older (as it is now). I have seen way more changes to the esp-idf, such as completely restructured I2C and SPI interfaces in minor version numbers (5.1 -> 5.2), something I have never seen in the Arduino world. There are many small bugs in the Arduino layer that have been fixed for years in the idf.
I agree, the visual studio code plugin, although quite a light wrapper around the command line tools, is an easy way to get into it. Specially if you are coming from platform.io.
Let’s not talk about Eclipse. I am sure it runs OK if your lappy has 64G of ram.
My take on this is that the PlatformIO community is large enough and filled with developers, such that the community will create patches to support the new parts, and eventually someone with DevOps experience will write a tool for automated daily porting. But until then, while device support won’t be timely with launches, there will be patches like above.
Yeah but PlatformIO is a for-profit company and they do not want to update and maintain Espressif platform libraries unless they get paid by Espressif, so that post is a statement from PlatformIO that can not soley rely on the community. PlatformIO also has employees that need to get paif or it will not continue to exist, or at least they will not be able to support all platforms, and the first to go will be the once that are not sponsoring them.
“For-profit” is a red herring. All projects have maintainers and manpower resources regardless of their business model. Entitled non-stakeholder pouting doesn’t influence the wisdom of where those limited resources are spent.
Patch quality, licensing, and trust come first, then accepting patches will be wiser than fielding support requests. I’m saying I believe it will happen.
Thanks to PlatformIO that let me jump to ESP-32 for past 2 years.
VSCode is THE most general use IDE for so many developers. Arduino IDE is lightyears from VSCode …
Again we are seeing people in their IoT bubble without thinking about the big picture.
Worst ! I would understand if the target was scalable IoT devices but most of ESP-32 for instance are DIY. There is other tools for scalabel devices with burn firmware.