There's a verify button, that compiles without uploading.

There's an "upload" button, that recompiles everything and then uploads it.

What's missing is a button that simply uploads without recompiling.

Before anyone says "this has been discussed before"... yes, I know it has. I have in fact already checked the forums, and I've seen that it has indeed come up before. Multiple times. Some going back as far as 13 years!

Every time, the answers are the same. "Why would you want to do that, if the code hasn't changed?", or "Just use the command line".

Of course I can use the command line. I grew up using the command line for everything, before modern IDEs were invented. But the point of having an IDE is that I shouldn't have to manually run a command line each time.

As to why it's needed, there are several cases. For example, I'm now developing using for an ESP32. It requires that I hold down the EN button to put the board into the correct mode to accept the download. It's a tiny button that's hard to hold down, and if I forget to push it or accidentally release it too soon, I'm forced to wait for a long compile before I can try it again.

I also need to program three of these boards with identical code. Again, I have to sit and wait through multiple compiles that produce exactly the same binary. I know, "command line", "command line", but that's not an answer -- it's just a work-around.

The fact that this topic keeps coming up over and over shows that there's a need for this capability, and I can't imagine that it would be difficult to add.

5 Likes

What strange ESP32 board do you use that you have to press EN?

Please mark your answer as "solved" :slight_smile:

2 Likes

Great, thanks. :slightly_smiling_face: :slightly_smiling_face: :slightly_smiling_face:

So why not just add an option in the preferences to upload without compile. How hard would that be to do in the next update? Then everyone would be happy. Besides, the button does say upload, not compile/upload.

1 Like

That's not a solution, that's a work around.

You might be forgetting about the intended audience: the beginner who has no idea.

I already see the topics "I modified the code and did upload it but the changes are not reflecting".

There are now already people who click the debug button instead of the upload button and next don't understand the error message that they get for e.g. their Mega. And yes, I understand that they don't understand.

Or that just do a compile and don't understand why their Uno is still running the old code.

2 Likes

I looked into adding a custom tool to do this, but didn't get anywhere. I am using IDE 2 and this feature does not appear to be implemented and Arduino seem to have little interest in adding it.

In general Arduino either don't have the resources or inclination to improve IDE 2 much, it's kinda you get what you are given.

It sounds like a cool project!

The ability to add additional capabilities to Arduino IDE has been implemented.

This is done through VS Code extensions.

You can see some examples of Arduino IDE-specific extensions here:

1 Like

+1 to that and, just to suggest something else, how about the ability to terminate a compile or upload?

Would be useful to save time if, during either, you realize something else needs to be added/removed/changed in the code.

I implemented it: feat: can skip verify before upload by dankeboy36 · Pull Request #2397 · arduino/arduino-ide · GitHub

Set the arduino.upload.autoVerify advanced setting to false in IDE. Here is the documentation on how to use the tester builds from the pull request.

Verify and upload are cancellable commands (feat: cancelable verify+upload · arduino/arduino-ide@2a325a5 · GitHub) in the nightly IDE builds: https://www.arduino.cc/en/software#nightly-builds

Thank you but that information is way above my skill set. Is there a simpler way of doing it?

Connect a small cap (100nF to 10uF) between EN pin of ESP32 and GND and the upload will be automatic, no need to hold EN button.
Remember I was the one who saved your finger! :smiley:

Exactly, such an "advanced" option doesn't have to be available by default but rather turned on in the preferences on demand. This way the argument that beginners and people not really into programming will be lost and confused is no longer valid. Of course as long as they do not tinker with the options but if they do they are either no longer beginners or just asking for trouble :wink:

I can actually give you an example why such an option would be beneficial also for those less experienced. I have a project that is open and can be used by people not really experienced in MCU world.
I needed extra 16bit timers (might be possible without it but I like HW solutions and that's beside the point) so I've used Nano with ATMega328PB. I've seen topics where people just got their hands on such boards but wanted to use them as generic Nano but had a problem as there was a different bootloader. In my case it's the other way around - my Nano looks like a regular one with ATMega328P and uses standard bootloader.
So, in order to compile the program that uses registers that do not exist in "P" version I added the MicroCore board package which is easy enough to explain to people who might want to use my project and change some settings.
Program compiles without problems but now I have standard bootloader while MicroCore expects a different one. I cannot simply change the board settings to regular Nano and click "Upload" because it will try to compile again and of course fail.
So now I have to explain people how to get the hex file with "Export Compiled Binary" option (which BTW sounds more advanced to me then "just upload" option :stuck_out_tongue: ), install AVRDUDE (because it's easier to have a separate copy in easy path than digging into IDE internals to use the build in one), copy the hex file (again to make path easier) and give them bat file to avoid explaining CMD in windows and they still have to change COM port number in bat eh...

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.