If you are using a recent version of the IDE, you will get an auto-update offer simply by starting the IDE.
Otherwise, the release is available for download here:
https://www.arduino.cc/en/software
This release provides some nice advancements and fixes.
Thanks so much to the forum community for all the valuable testing and feedback that has helped us greatly in identifying and investigating these bugs and enhancements!
Highlights
- Debugger support for GIGA R1 WiFi, Nano 33 BLE/BLE Sense/BLE Sense Rev2, Nano RP2040 Connect, Opta, Portenta H7, Raspberry Pi Pico
- Temporary loss of debugger support for ESP32 boards (including Nano ESP32)
Support new boards platform debugger configuration system
arduino/arduino-ide#2281
, arduino/arduino-cli#2356
, arduino/arduino-cli#2364
, arduino/arduino-cli#2393
, arduino/arduino-cli#2416
, arduino/arduino-cli#2435
Arduino boards platform authors must define some properties in the platform configuration files in order for the boards of the platform to be usable with the IDE's integrated sketch debugger. Some limitations of the initial design were identified as various 3rd party platforms made use of it. The configuration system was reworked to be more powerful and flexible in order to support the wide variety of microcontroller architectures of the Arduino ecosystem.
The new system is documented here in the Arduino Platform Specification:
https://arduino.github.io/arduino-cli/latest/platform-specification/#sketch-debugging-configuration
Due to the unusual implementation of the debugging configuration used by the "esp32" platform to overcome limitations of the initial system, debugging support is temporarily lost for ESP32-based boards in Arduino IDE 2.3.0.
This breakage affects the Nano ESP32 in addition to the 3rd party ESP32-based boards.
The work to migrate the platform to the new system is already underway and compatibility will be restored in an upcoming release of the ESP32 platforms that will be available for update via Boards Manager as usual. For now, please continue to use Arduino IDE 2.2.1 if you need ESP32 debugger support.
Debugger support for additional boards
arduino/arduino-ide#2281
, arduino/ArduinoCore-mbed#746
The redesigned debug configuration system facilitated the addition of support for using more Arduino boards with the IDE's integrated sketch debugger:
- Edge Control
- GIGA R1 WiFi
- Nano 33 BLE
- Nano 33 BLE Sense
- Nano 33 BLE Sense Rev2
- Nano RP2040 Connect
- Opta
- Portenta H7
- Raspberry Pi Pico (support when using the "Arduino Mbed OS RP2040 Boards" platform)
Support was added in version 4.1.1 of the "Arduino Mbed OS" boards platforms, so make sure to update to the latest version via Boards Manager.
Disable "DEBUG" panel if selected board doesn't have debugger support
arduino/arduino-ide#2342
, arduino/arduino-ide#14
The primary Arduino IDE user interface contains two elements related to the integrated sketch debugger:
- "Start Debugging" button on the toolbar
- Debug view toggle icon on activity bar
Not boards have support for use with the debugger and a user of one of those boards might suffer confusion if enticed by these attractive elements. So it is important for the IDE to clearly communicate when the feature is not available for the selected board.
This was already done for the "Start Debugging" button by disabling it and displaying a message on hover when the selected board doesn't have debugger support. However, previously the user could still open the "DEBUG" panel via the activity bar icon and then waste some time trying fruitlessly to use the debugger interface.
The lack of support is now clearly communicated by changing the icon to a prohibition symbol and replacing the debugger interface with an explanatory message if the panel is opened:
Debugging is not supported by <board name>
Support for selecting debug probe from the Tools > Programmer menu
Previously, the design of the debugger configuration system made it inconvenient to provide support for multiple distinct debugger probes (e.g., Black Magic Probe, Segger J-Link). Since a debug probe typically also doubles as an ISP programmer, support was added for IDE users to select the probe they want to use for their debug interface via the IDE's Tools > Programmer menu.
Fix "Start Debugging" button incorrectly disabled on IDE startup
arduino/arduino-ide#2242
, arduino/arduino-ide#2237
When Arduino IDE is started, it opens any saved sketches that were open at the time of quitting the previous IDE session. The board and port associated with the sketch are automatically selected. Previously, under these conditions the "Start Debugging" button was disabled even when the selected board has debugger support.
Update Arduino CLI dependency to 0.35.2
arduino/arduino-ide@73b6dc4
, arduino/arduino-ide@b8dd39c
, arduino/arduino-ide#2350
Much of the non-GUI functionality of Arduino IDE comes from the Arduino CLI tool.
In order to benefit from the ongoing development work in the Arduino CLI project, Arduino IDE has been updated to using Arduino CLI version 0.35.2.
Restore support for .
character in package index base filenames
arduino/arduino-ide@73b6dc4
, arduino/arduino-cli#2346
, arduino/arduino-cli#2345
A bug caused Arduino IDE to no longer recognize Boards Manager URLs when the base filename of the package index contained a .
character.
This impacted the users of the popular "ATTinyCore", "DxCore", and "megaTinyCore" boards platforms.
(Thanks @DrAzzy)
Fix "Export Compiled Binary" for certain 3rd party platforms
arduino/arduino-ide@73b6dc4
, arduino/arduino-cli#2372
, arduino/arduino-cli#2340
, MCUdude/MegaCore#206
, SpenceKonde/megaTinyCore#935
, MCUdude/MiniCore#259
Previously, a bug in the way the boards platform configuration files were processed caused the IDE's "Export Compiled Binary" feature to fail for some 3rd party platforms (including the popular "MCUdude" and "SpenceKonde"/"DrAzzy" platforms).
Fix compilation caching for certain libraries
arduino/arduino-ide@73b6dc4
, arduino/arduino-cli#2446
Add advanced setting to limit thread count of language server
arduino/arduino-ide#2350
, arduino/vscode-arduino-tools#46
, arduino/arduino-language-server#177
, arduino/arduino-language-server#176
Arduino IDE uses a language server to provide features such as autocomplete and "go to definition".
The language server must have an understanding of the complete sketch program, including its dependencies, and repeatedly update that information while the sketch is being edited. This requires a significant amount of processing, which can impact the performance of the user's computer under certain conditions.
It is now possible to configure the number of CPU cores Arduino IDE's language server is allowed to use. Most users should be fine with the default configuration, but in case you are affected by excessive CPU load while using Arduino IDE, you can adjust this setting by following these instructions:
Click for instructions
- Press the Ctrl+Shift+P keyboard shortcut (Command+Shift+P for macOS users) to open the "Command Palette".
A menu will appear on the editor toolbar:
- Select the "Preferences: Open Settings (UI)" command from the menu.
ⓘ You can scroll down through the list of commands to find it or type the name in the field.
A "Preferences" tab will open in the Arduino IDE main panel. - Type
arduino.language.asyncWorkers
in the "Search Settings" field of the "Preferences" tab. - Set the number of cores for the language server via the field under "Arduino › Language: Async Workers" setting.
- Close the Preferences tab by clicking its X icon.
Fix board-dependent menu items not populated on IDE startup
arduino/arduino-ide#2242
, arduino/arduino-ide#2239
The contents of the IDE's File > Examples > Examples for <board name> and Sketch > Include Library > Arduino libraries menu sections depend on which board is selected.
When Arduino IDE is started, it opens any saved sketches that were open at the time of quitting the previous IDE session. The board and port associated with the sketch are automatically selected. Previously, under these conditions these menu items were not populated.
Fix Arduino state data not provided to extensions after IDE startup
arduino/arduino-ide#2233
, dankeboy36/vscode-arduino-api#6
, dankeboy36/esp-exception-decoder#10
When Arduino IDE is started, it opens any saved sketches that were open at the time of quitting the previous IDE session. The board and port associated with the sketch are automatically selected. Previously, under these conditions the Arduino state data was not available to Arduino IDE extensions (e.g., "ESP Exception Decoder", "arduino-littlefs-upload").
Fix "Configure and Upload" dialog not presented for uploads dependent on "user provided fields" after IDE startup
arduino/arduino-ide#2234
, arduino/arduino-ide#2230
The Arduino boards platform framework has a "user provided fields" feature that allows a platform developer to use data provided by the user (e.g., a password for authentication of OTA uploads via a network port) in the upload command. When the user initiates an upload to a board that is configured to use this feature, Arduino IDE presents a "Configure and Upload" dialog for input of the data.
When Arduino IDE is started, it opens any saved sketches that were open at the time of quitting the previous IDE session. The board and port associated with the sketch are automatically selected. Previously, under these conditions the "Configure and Upload" dialog was not presented.
(Thanks @robgw)
Fix custom board option selection made in one window affecting other windows as well
arduino/arduino-ide#2241
, arduino/arduino-ide#2240
Arduino board definitions can be configured to use "custom board options". When one of these boards is selected in Arduino IDE, arbitrary submenus are added under the IDE's "Tools" menu, which the user can use to adjust the configuration of the selected board.
The design of Arduino IDE 2.x is intended to allow a different and independent configuration of the board and port in each of the open IDE windows, which can be useful when working with multiple boards.
Previously, if multiple IDE windows were open, changing a custom board option menu in one window would also change the configuration of that menu in the other window.
Warn when saving sketch not possible due to read-only file attributes
arduino/arduino-ide#2211
, arduino/arduino-ide#1501
Previously, if a sketch with read-only file attributes was opened in Arduino IDE, the user would not be warned when attempts to save changes to the sketch failed.
Arduino IDE will now prevent any modifications to such sketches, communicating the situation to the user by showing a "Cannot edit in read-only editor" tooltip.
Fix loss of sketch subfolder structure after "Save As" operation
arduino/arduino-ide@074f654
, arduino/arduino-ide#2077
Arduino sketches may contain files under subfolders of the sketch folder. Previously a "Save As..." operation would cause any subfolders to be lost and their files moved to the root sketch folder.
Fix file overwrite during "Save As" when there is a name collision with secondary sketch file
arduino/arduino-ide@d01f956
, arduino/arduino-ide#827
The primary sketch file is renamed to match the new sketch name during a "Save As..." operation. Previously, if the sketch contained a secondary file with the target filename, it would be overwritten without warning.
Arduino IDE will now cancel the Save As..." operation and display an error notification to communicate the problem to the user:
Failed to save sketch ... The sketch already contains a file named ...
Identify boards from manually installed platforms in "Select Other Board and Port" dialog tooltip
arduino/arduino-ide@64ce35e
, arduino/arduino-ide#2270
It is possible to manually install Arduino boards platforms to the sketchbook.
It is common for platform developers and beta testers to have a manually installed development version of the platform installed in addition to the stable release version installed via Boards Manager. In this case each of the boards of the platform will be listed twice in the Arduino IDE user interface. It is important for the user to be able to differentiate them.
This identification is provided in the Tools > Board menu by the addition of a "(in Sketchbook)" suffix to the menu item that contains the list of boards from the manually installed platform. The user might prefer to select the board via the alternative "Select Other Board and Port" dialog interface. Previously, this dialog did not identify the source of the boards listed under the "BOARDS" menu. It now indicates that a board is from a manually installed platform by including an "(in Sketchbook)" suffix in the tooltip that appears when the mouse pointer is hovered over the menu item.
Fix IDE window not opening when started via sketch file association
arduino/arduino-ide#2288
, arduino/arduino-ide#2209
Instead of launching the application directly, a user might start Arduino IDE by opening a sketch file when the operating system has been configured to use Arduino IDE for that file type.
Previously, under certain conditions the IDE window would not open when this was done.
Fix previous selection remaining in "Firmware Updater" and "Certificate Uploader" menu after no longer available
arduino/arduino-ide#2291
, arduino/arduino-ide#2222
The IDE's "Firmware Updater" and "Upload SSL Root Certificates" features allow the user to update the supplemental modules found on some Arduino boards.
The "Select Board" menu in these dialogs lists all the discovered board+ports of boards supported by the feature, from which the user can select the intended target.
Previously, once the user had selected an item from the menu, it would remain selected even after that board+port was no longer available.
Fix bug in built-in "ArduinoISP" example sketch for UNO R4 and Portenta C33 boards
arduino/arduino-ide#2322
, arduino/arduino-examples#71
The "ArduinoISP" sketch is included with the collection of example sketches that are included in the Arduino IDE installation. This sketch allows creating a DIY AVR ISP programmer from an Arduino board.
Previously, a bug in the sketch caused it to not be usable with the UNO R4 Minima, UNO R4 WiFi, or Portenta C33 boards.
(Thanks @sgtrutters)
Support .cc
and .cxx
extensions for sketch files
arduino/arduino-ide@73b6dc4
, arduino/arduino-ide#2265
, arduino/arduino-cli#2273
, arduino/arduino-cli#1149
The absence of an authoritative specification has resulted in inconsistency in the file extensions used for C++ source code. In addition to the .cpp
extension most common in the Arduino ecosystem, some developers/tools/frameworks have chosen to use other extensions.
Previously, Arduino IDE only allowed the use of .cpp
extension for supplemental C++ files of the sketch. .cc
and .cxx
extensions are now also supported.
Expand and improve translations
The community work to make Arduino IDE accessible to everyone in the world through localization of the text of the IDE's UI continues, reaching high coverage levels for 18 languages/locales.
If you would like to contribute to the Arduino IDE translations, please see the information here:
Update Eclipse Theia IDE framework to 1.41.0
Arduino IDE is built on the free open source Eclipse Theia framework.
In order to benefit from the ongoing development work in the Theia project, Arduino IDE has been updated to using Theia version 1.41.0.
Full changelog here:
https://github.com/arduino/arduino-ide/releases/tag/2.3.0
If you have any questions or feedback please post here in the dedicated forum category for Arduino IDE 2.x:
https://forum.arduino.cc/c/software/ide-2-x/93
If you want to see the list of known issues, work in progress, submit a formal report, or contribute to development, the Arduino IDE 2.x source code is hosted in this public repository: