arduino-ide icon indicating copy to clipboard operation
arduino-ide copied to clipboard

Missing support for external tools / plugins

Open szerwi opened this issue 3 years ago • 53 comments

Describe the solution you'd like I would like to propose support for external tools / plugins which are compatible with Arduino IDE. Ex. https://github.com/me-no-dev/arduino-esp32fs-plugin or https://github.com/me-no-dev/EspExceptionDecoder If it is already supported, how can I use tools in Pro IDE? If it is not supported yet, are there any plans for implementing that?

Describe the problem

There is no support for extending the capabilities of Arduino IDE via external tools/plugins. This is a feature parity mismatch with Arduino IDE 1.x.

To reproduce

  1. Follow the instructions to install the "Arduino Pico LittleFS Filesystem Uploader" plugin: https://github.com/earlephilhower/arduino-pico-littlefs-plugin#installation
  2. Start Arduino IDE 2.x
  3. Open the Tools menu.

🐛 The expected "Pico LittleFS Data Upload" menu item is missing.

Expected behavior

Support for extending the capabilities of Arduino IDE via external tools/plugins equivalent to the system provided by Arduino IDE 1.x.

Arduino IDE version

Original report

2.0.0-beta.1

Last verified with

2.0.2

Operating system

All

Operating system version

any

Additional context

Additional reports

  • https://github.com/arduino/arduino-ide/issues/350
  • https://github.com/arduino/arduino-ide/issues/239
  • https://github.com/arduino/arduino-ide/issues/1931
  • https://github.com/arduino/arduino-ide/issues/807
  • https://github.com/arduino/arduino-ide/issues/58#issuecomment-1250168548
  • https://github.com/arduino/arduino-ide/issues/58#issuecomment-1250389977
  • https://github.com/arduino/arduino-ide/issues/58#issuecomment-1304505170
  • https://github.com/arduino/arduino-ide/issues/58#issuecomment-1329739866
  • https://github.com/arduino/arduino-ide/issues/58#issuecomment-1329744846
  • https://github.com/arduino/arduino-ide/issues/58#issuecomment-1366887300
  • https://github.com/arduino/arduino-ide/issues/58#issuecomment-1418259460
  • https://github.com/arduino/arduino-ide/issues/58#issuecomment-1500397678
  • https://github.com/arduino/arduino-ide/issues/58#issuecomment-1544503051
  • https://github.com/arduino/arduino-ide/issues/58#issuecomment-1546482745
  • https://github.com/arduino/arduino-ide/issues/58#issuecomment-1546600061
  • https://github.com/arduino/arduino-ide/issues/58#issuecomment-1747918299
  • https://github.com/me-no-dev/arduino-esp32fs-plugin/issues/30
  • https://github.com/lorol/arduino-esp32fs-plugin/issues/8
  • https://github.com/earlephilhower/arduino-esp8266littlefs-plugin/issues/20
  • https://github.com/earlephilhower/arduino-esp8266littlefs-plugin/issues/21
  • https://github.com/earlephilhower/arduino-esp8266littlefs-plugin/issues/22
  • https://github.com/earlephilhower/arduino-esp8266littlefs-plugin/issues/25
  • https://github.com/me-no-dev/EspExceptionDecoder/issues/85
  • https://github.com/thingsboard/thingsboard-arduino-sdk/issues/107#issuecomment-1374437622
  • https://forum.arduino.cc/t/exception-decoder/1055759/1
  • https://forum.arduino.cc/t/exception-decoder/1055759/4
  • https://forum.arduino.cc/t/exception-decoder/1055759/5
  • https://forum.arduino.cc/t/exception-9-epc1-0x40100262-epc2-0x00000000-epc3-0x00000000-excvaddr-0xc010e109-depc-0x00000000/1054425/14
  • https://forum.arduino.cc/t/esp-exception-decoder-for-arduino-2-0/1050587
  • https://forum.arduino.cc/t/tool-menu-esp8266-littlefs-filesystem-uploader-not-displaying/1037055
  • https://forum.arduino.cc/t/esp8266-sketch-data-upload/941933
  • https://forum.arduino.cc/t/tools-for-arduino-ide-2-0-beta/894962
  • https://forum.arduino.cc/t/ide-2-0-and-esp32-sketch-data-upload/904160
  • https://forum.arduino.cc/t/add-tools-to-arduino-ide-2-0/893213
  • https://forum.arduino.cc/t/ide-2-0-beta-10-not-yet-configurable-tools-menu/892980
  • https://forum.arduino.cc/t/espexceptiondecoder-cant-be-found-in-tool-directory/876547
  • https://forum.arduino.cc/t/nrf5-softdevice-flashing-tool/866336
  • https://forum.arduino.cc/t/arduino-2-0-beta-no-ardublock/856338
  • https://forum.arduino.cc/t/tools-directory-with-esp32fs-or-esp8266fs/703461
  • https://forum.arduino.cc/t/tool-to-upload-data-to-spiffs-is-missing/699986
  • https://forum.arduino.cc/t/how-to-install-plugin-in-linux/1120703
  • https://forum.arduino.cc/t/decoding-abort-backtrace-help/1130283
  • https://forum.pjrc.com/index.php?threads/teensyduino-1-59-beta-6.74402/#post-338480

Related

  • https://github.com/arduino/arduino-ide/pull/1893
  • https://github.com/arduino/arduino-ide/issues/406

Issue checklist

  • [X] I searched for previous reports in the issue tracker
  • [X] I verified the problem still occurs when using the latest nightly build
  • [X] My report contains all necessary details

szerwi avatar Feb 12 '21 23:02 szerwi

@szerwi we have long had this in our list, but the pre-existing tools are built on Java and the new IDE is built on Electron. In order to implement tools, we should offer entry points for those and developers should follow guidelines to write such tools in JS, or make them binary executables that could be launched. We're not there yet, but this particular instance, the ESP exception decoder, is one of the most used tools out there :)

ubidefeo avatar Feb 14 '21 10:02 ubidefeo

@ubidefeo Thanks for the reply. Do you mean that ESP exception decoder is one of the most used tools in Arduino IDE? Is there any way to run ESP exception decoder outside Arduino IDE and use it together with Pro IDE?

szerwi avatar Feb 14 '21 10:02 szerwi

@szerwi we don't have any stats/numbers, there aren't many tools available, but I know that one is widely used to make sense of stack output dumped into the serial when the ESP crash. You cannot use those tools outside of the Java IDE, they are made in Java and built to leverage the Tools system in the Java IDE

ubidefeo avatar Feb 14 '21 16:02 ubidefeo

Hi, I'd like to mention that for the ESP-specific plugins, we are open to rewriting them in any language required for integration with Arduino IDE v2.0.

We are also open to some more limited or localized plugin functionality. For example, for the exception decoder it would be sufficient if we could add a core-specific "filter" tool which could take serial data from stdin and annotate with any additional information, and send that to stdout. The IDE could then launch this process in the background.

If some direction is given by the Arduino team, we can also contribute PRs to support these features.

igrr avatar Oct 18 '21 13:10 igrr

Thank you @igrr We're really happy to see this comment. We'll discuss this internally to figure out what's the best plan of action and get back to you. Right now we don't have an API for plugins, but it's been in our bucket-list for a while. I need to talk to the team to see if we can leverage a VS Code Extension kind of workflow to get started, give us some time to talk this. Thanks again 🙏🏼

ubidefeo avatar Oct 18 '21 15:10 ubidefeo

This is actually an "IDE 2.0 vs IDE 1.x" feature parity item, I re-arranged the title and the labeling 🐱

rsora avatar Oct 25 '21 16:10 rsora

Just want to chime in, that Teensy needs this functionality for a tool which manages keys for code security.

sec

I'm can rewrite in whatever language and API are needed...

PaulStoffregen avatar Feb 04 '22 01:02 PaulStoffregen

As I believe this is still to be added I put together a temporary standalone method for doing ESP8266 exception decoding.

https://github.com/roberttidey/NodeESPExceptionDecoder

This uses the same type of method used in the java decoder, but moved into javascript to run under node.

roberttidey avatar Feb 06 '22 12:02 roberttidey

Also the esp8266/esp32 data upload tools (spiffs and LittleFS) are missing. Without them using/testing the 2 rc5 IDE is useless for me :-(

mrWheel avatar Mar 27 '22 08:03 mrWheel

@ubidefeo @per1234 Congrats on reaching the Arduino IDE 2.0 release milestone!

I wanted to check if you could give any direction with regards to this issue? As I mentioned in https://github.com/arduino/arduino-ide/issues/58#issuecomment-945764907, Espressif is willing to contribute this functionality, since it's the main hurdle for our users in migrating to Arduino IDE 2.0. Any suggestion from you would be really valuable.

igrr avatar Sep 15 '22 14:09 igrr

2.0 is really unusable until we can have "data" folders that can be stored on a ESP device.

JimDrewGH avatar Sep 18 '22 01:09 JimDrewGH

And the exception decoder. My terrible workaround is to keep 1.8.19 as a parallel installation for when I do need those external tools.

Also, 2.0 was only just released, so I understand the authors of the various plugins and tools waiting until an actual release was available before deciding to spend time redesigning their plugins for the new IDE. Just look at how much stuff changed in the release candidates.

ckuethe avatar Sep 18 '22 21:09 ckuethe

Any progress on this?

JimDrewGH avatar Oct 31 '22 21:10 JimDrewGH

Hi , Any update on this case. Because it is a lack for the ESP familly :)

Thanks

acamu avatar Nov 05 '22 11:11 acamu

And the exception decoder. My terrible workaround is to keep 1.8.19 as a parallel installation for when I do need those external tools.

Also, 2.0 was only just released, so I understand the authors of the various plugins and tools waiting until an actual release was available before deciding to spend time redesigning their plugins for the new IDE. Just look at how much stuff changed in the release candidates.

It's my understanding that plugin authors are not "waiting" to update their modules to support the new IDE; it's that v2.x does not (currently) expose any of the requisite hooks to allow it to be extended. It's functionality that's missing, not stability.

alastaira avatar Nov 05 '22 16:11 alastaira

It's my understanding that plugin authors are not "waiting" to update their modules to support the new IDE; it's that v2.x does not (currently) expose any of the requisite hooks to allow it to be extended. It's functionality that's missing, not stability.

That is exactly the situation we are in :) I am sure that the Arduino IDE team is working on this

me-no-dev avatar Nov 06 '22 09:11 me-no-dev