-
-
Notifications
You must be signed in to change notification settings - Fork 565
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Support Arduino ESP32 v3.0 based on ESP-IDF v5.1 #1225
Comments
I've been trying this with following config: ; see https://docs.espressif.com/projects/arduino-esp32/en/latest/installing.html#how-to-update-to-the-latest-code
[env:arduino-latest]
platform = https://github.com/platformio/platform-espressif32.git
board = az-delivery-devkit-v4
framework = arduino
platform_packages =
framework-arduinoespressif32 @ https://github.com/espressif/arduino-esp32#master but the build fails with
|
See the updated comment #1225 (comment) |
Adding Arduino 3.0.0 support is the only way to make the ESP32-C6 available for Arduino projects. |
@ivankravets Does this mean that Espressif has dropped any support? Looking in current Arduino 3.0.0 code (branch master) everything regarding Platformio support is there. |
Hello all, I do work in Arduino Core ESP32 project as a Project Manager so I would like to clarify this from our Team point of view. Please take a look on this comment in original Pull request. We also update a warning note in our documentation which should be a bit confusing. To not duplicate what is written in original PR, we will be glad if PlatformIO supports our latest version and we are open to any contributions. @ivankravets Feel free to contact us any time directly, we will be happy to discuss this if you see any points we can do differently. Thanks |
@Jason2866 |
@ivankravets I think a reason why many users use PIO is also to keep some of the arduinoesp32 APIs while having the possibility to modify the IDF SDK configuration (menuconfig) which is necessary in many cases and not possible in arduino, unless using the libbuilder (buggy and not convenient). Maybe it would be wise for PIO to directly use arduinoesp32 core as is, and just focus on allowing users to run arduinoesp32 core along with IDF to keep access to menuconfig. |
I am concerned about the viability of this repo long-term as folks like @Jason2866 have started to roll their own and this repo not catching up I am currently using his https://github.com/tasmota/platform-espressif32/tree/Arduino/IDF5 branch and it works mostly great for me - even if I feel uneasy about relying on a private effort with unclear future - how do you see the longer-term perspective of your fork? This fork has diverged from this repo massively - not sure this can brought back here easily the other issue I have is the abysmal debugging experience esp32/pio/arduino compared to using straight IDF |
@mhaberler i did the same yesterday and used https://github.com/tasmota/platform-espressif32/tree/Arduino/IDF5
But then when building it complained of missing SPIFFS, i added it manually from previous version (in components directory) but then i get a dependancy error with esp_partition.h, despite it is well present in "components".
Did you met this issue too? |
@0x0fe @mhaberler My fork has not the goal to be compatible to anything official. Since project Tasmota is always in first row for new stuff, and is active in contributing to espressif Arduino Core, there was the need to have the development version of Arduino Core available with Platformio. The needed changes for Arduino 3.0 in Platformio are not many. A small job for @valeros |
@Jason2866 oh, i see, that explains the error with SPIFFS |
alpha stage - fair enough. Now assume Core 3.0.0 gets released - does this have any bearing on the debugging situation? who has the ticket to make that work? I'm talking about openocd + gdb versions and matching debug configs which work - at least somewhat like Nordic Connect and Segger I admit I am slightly confused about players and the who-does-what-and-why-not - I might be barking up the wrong tree (or repo) for that matter |
@mhaberler Does debugging work in espressif IDF env setup? If yes imho Platformio has the job for the devices which are currently supported with IDF 5.1. Not saying it will be easy to solve or it will be done soon. The debug issue for the C6 is known and there is an open issue. |
@0x0fe yes, same here `Failed to resolve component 'spiffs' |
you mean like command line/shell? yes, repeatably |
@mhaberler It makes sense, well SPIFFS yo ucan add it manually from previous version but then you will get an error with esp_partition, and i am not sure where to re-enable the SPIFFS module and dependencies correctly. |
https://github.com/platformio/platform-espressif32 isn't a core itself. It's a software piece that makes the PlatformIO Build API work seamlessly with Espressif 32 products within the PlatformIO ecosystem. If you check the source code of this repository, you'll find other integrations, like ESP-IDF. If we support Zephyr/ESP32, it'll also be found here.
We do use it directly (https://registry.platformio.org/tools/platformio/framework-arduinoespressif32). There's no common ground between Arduino IDE and PlatformIO. The "arduino" in PlatformIO is just a framework. PlatformIO supports over 10+ different frameworks. The reason many developers see PlatformIO as a "replacement for Arduino IDE" is due to source code compatibility and advanced project management with lots of configuration and collaboration features based on PlatformIO's unique declarative principles. If you've tried another framework besides "arduino", you'd notice there's no difference in the configuration aspect. You and your team can focus on project development without wrestling with bootstrapping and collaboration issues. Lastly, for a VSCode-based solution with native ESP32/Arduino core support, I recommend the Arduino IDE for VSCode extension backed by Microsoft. It's similar to Arduino IDE 2.0 but uses VSCode as the editor. Both leverage "arduino-cli", so the build system and workflows are the same. |
@ivankravets I see, glue logic layer. the totally different versioning between these platforms and the cores they implement is rather annoying, though. |
@ivankravets make me understand what your recommendation means - are you saying: When I prefer to use VSCode, I should take the Microsoft Arduino extension for VSCode and drop Platformio? |
@mhaberler, we value openness in our community and aim to give you the freedom to choose. If there's a newer version of the software not yet supported by PlatformIO, we won't hide it. 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. |
I can see there's a bit of political project stuff happening, but as an end-user, all I want to do is be able to use the latest Arduino framework. Consider this a vote of support for making that happen, however it needs to be. |
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. If there's significant interest from Espressif customers in PlatformIO, we'll reach out to Espressif and explore the possibility of continuing our collaboration. If you have any questions or need clarification, feel free to ask. We're here to provide all the answers you need. |
ok, so Espressif jumped ship @ivankravets what does that mean for the subject topic - Arduino3? your wording would suggest to me "no new Espressif releases - be it Arduino or ESP-IDF, existing releases go on life support" are you saying this repo stops at ESP-IDF 5.1.1/Arduino2 until Espressif changes its mind ? |
@mhaberler Looks like: as long there is not enough feedback from Platformio users wanting actual espressif framework support, there is no good position from Platformio side to argument why espressif should invest money having Platformio support. |
This is not true. Espressif and Platform IO still work fine together, although you had to manually apply some changes while it was in betaa/alpha. The original post and reference was an error/misinterpretation (Espressif removed -- and subsequently put back, in the same pull request -- links to Platform IO). The original link was to some work-in-progress, not any official statement. Espressif still works fine with Platform IO. |
It already does. See the documentation here: https://docs.espressif.com/projects/arduino-esp32/en/latest/installing.html#installing-using-platformio |
From my point of view, as one of the maintainers of WLED, a very feature rich app for controlling addressable LEDs with esp32:
I guess many open source projects would tell a similar story. Open source firmware is used by lots of individuals and professionals, and today they happily purchase espressif hardware to run their favourite application. But if we don't have arduino support in platformIO for some newer chips, the chances of supporting these chips is absolutely zero. |
@sgryphon check that again and read the warning that sais that explicitly says that PlatformIO is not supported by Espressif, but support is only provided by PlatformIO (and the community). So while it might still work fine for now, (at least for Arduino core 2.x.x users), PlatformIO and this platform-espressif32 library is not officially supported by Espressif, and with that warning Espressif tries to make it clear that they do not want users opening issues about PlatformIO to Espressif. WarningIntegration of the Arduino Core ESP32 project in PlatformIO is maintained by PlatformIO developers. Arduino Core ESP32 Project Team cannot support PlatformIO-specific issues. Please report these issues in official PlatformIO repositories. |
We have several production systems relying on ongoing support (whether financial or otherwise) between Espressif and PlatformIO. Dropping this support would be seriously detrimental to these projects, especially as time goes on. |
Hi friends, sorry for the delay. A lot has been happening around PlatformIO and Espressif in the past few days:
Let us share some updates.
Yes, the PR appears to be a mistake by Espressif's development team, and it's unclear if this action was approved by Espressif management. We continue to provide official support for ESP32 Core v2.0 for Arduino. The new warning indicates there is no official support for ESP32 Core v3.0.
This is a common issue in the semiconductor industry and a reason why many embedded developers prefer alternatives to official vendor tools. Larger silicon vendors often have a disconnect with their customers. Developer reviews of the official VSCode extension highlight numerous issues. Vendors sometimes opt for paid solutions over investing in their tools, misunderstanding the needs of end developers. While they can replicate features, they can't duplicate the vision that makes successful tools effective.
We are in active discussions with the Espressif team to help them understand the significant ROI they receive from collaborating with PlatformIO. PlatformIO has contributed immense value to Espressif's business over the past decade and is the leading alternative IDE solution for Espressif products. As a larger company now, Espressif has the resources to invest in its tools, which we understand is part of their business strategy. However, it's important to recognize that almost every silicon vendor tries to lock their customers into their tools, which can hinder switching to better competitive products. Your feedback is crucial. I will tag a few people from the Espressif team. The information you provide is very important to them. There is a high demand for Thread/Zigbee solutions (such as this request), and having support for new Espressif products in PlatformIO is exactly what customers need for the future. As always, we are committed to providing a superior developer experience and boosting your project development. cc: @rftafas, @igrr, @pedrominatel, @VojtechBartoska Regards, |
I believe the future is longer than what have passed, holding more than what already left. Espressif's lean to the developers demands would reflect positively in adopting their products continuously. Naturally, Arduino developers would be looking for better experience that enable them be more productive, turning to PIO is a seamless shift with great productivity yield, which also offers another seamless shift to ESP-IDF Framework. Finally when it comes to some requirements, ESP-IDF would be their final step regarding Espressif products. This gradual view looks more natural than imagining a hard shift from completely simple hobbyist Arduino IDE to completely tight proffessionalist IDE. While PlatformIO fills the gap between both, it also adds a lot by the environments concept, which is the reason why lots of libraries developers use. I understand the mentality of Espressif as a manufacturing company, as they're responsible; they keep focusing on developing their own IDE to meet the demand of their customers, they also maintain the arduino core themselves to help and facilitate to newcomers. What's left is supporting the natural journey of newcomers with all of its details, already provided by PIO and supported by libraries developers. Regards, |
Easy upgrade to 2.0.17
|
With
I successfully compiled my project, and it runs is esp32-s3. Should I use Arduino 3.0.1? |
arduino-esp32 3.0.1 is needed for esp32-c6 boards. |
Definitely use Arduino Core 3.0.1. It is stable and many bug and issues from core 2.0.x are fixed. |
For my project this also works great, binary size is 10% larger compared to 2.0.16. Would that also be the case when compiling with Arduino IDE? |
@fredlcore There is no size difference if you use ArduinoIDE. The workaround via |
Ah, ok, good to know. For my project, we have a fixed set of MCUs (Olimex EVB/POE-ISO as well as Joy-It ESP32 Dev Kit), so it really helps to know that I can adjust the code to 3.x without the need to maintain two different code-bases. |
Mhh, could be that some compile/linker flag settings are different, since the settings from core 2.x are used in Platformio. This would indeed end in different sizes. |
Ok, understood (but then 2.0.16 should be larger than 3.0.1, not the other way round, if |
No, core 2.x has a lower footprint at all. And don't use this option with core 2.x. The compiler toolchains used for core 2.x doesn't have it correctly implemented. |
looks like there is news? |
Take a closer look! " |
🤦 |
I've opened my fork and changed platform.json to pull 3.0.1 release for my ksIotFrameworkLib All you have to do is to modify platform property inside platformio.ini: [env]
platform = https://github.com/cziter15/platform-espressif32.git I've also had to add some magic in my lib via extra script due to their network refactoring: if (int(cpp_defines_dict.get('ARDUINO', None)) >= 10812):
e.ProcessFlags("-DWiFiClientSecure=NetworkClientSecure")
e.ProcessFlags("-DWiFiClient=NetworkClient")
e.ProcessFlags("-DWiFiServer=NetworkServer")
e.ProcessFlags("-DWiFiUDP=NetworkUDP") Might look like nonsense, but they've just defined things like this... #define WiFiClient NetworkClient which causes a lot of pain, when you've used forward declarations, which is required by unique_ptr for example. Despite the difficulties, I managed to move all my ESP32 projects to 3.0.1 / IDF 5.1
|
Hi @cziter15 !
Why is this necessary?
|
As I said earlier, if you use forward declaration, then the compiler won't know what WiFiClient is, because it will be overriden in cpp file. It's like you have Usually it's handled via separate typedef related headers, see Wintypes.h for reference |
Ah yes, of course. That makes sense. |
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: espressif/arduino-esp32#8606
If you're an Espressif user who relies on PlatformIO for your projects, kindly share your thoughts in the comments below and cast your vote on this matter. Once we gather enough interest from the Espressif community, we plan to reach out to the Espressif company and request a reconsideration of support for PlatformIO.
The text was updated successfully, but these errors were encountered: