Cloud editor and OTA issues

Hi All,
I have been tinkering with Arduinos and reading on here for several years, but this is my first post - so please bear with me, and let me know if I do anything wrong.

I seem to have 3 issues with Cloud Editor and OTA, which overlap in terms of me using the systems, but I believe are actually completely separate. Support do not seem to know or care, and have told me to post here - so here goes.

Using the “new” version of Cloud Editor, there should be a “settings” button towards the bottom left of the page. This is often (but not always) missing when using my iPad, I have not noticed it missing when I am using my laptop.

When doing an OTA update, the “new” Cloud Editor reports success even when the update fails, on both iPad and laptop. When an update fails on the “old” Cloud Editor, a fail is correctly reported.

OTA updates from both “old” and “new“ Cloud Editors succeed or fail apparently at random, on both iPad and laptop. This started about 22nd January, having worked perfectly from about 12th December. I have some suspicions about the cause, which I think is related to network timing, but I have not been able to debug properly as I have no access to the “insides” of Arduino Cloud.

In case it helps :-
The iPad is about a year old, 9th Generation, iOS 17.2, Safari browser, fully updated. The laptop is also about a year old, Lenovo Ideapad, Windows 11 Home 64bit, Microsoft Edge browser, fully updated. The remote device is a generic ESP32 Dev Board, approximately 3 hours round trip away, so USB updates are not possible. It connects by WiFi to a personal hotspot running on an iPhone 5. I have a “maker” subscription to Arduino Cloud. I am a retired electronics engineer, getting a bit old and slow, so I could easily have missed something vital. I can supply screenshots, screen videos, my code, and photos of hardware / wiring - just let me know what you need.

Thanks for reading, and thanks in advance for any help anyone can give me.

Kev

Hi @kevlinsley. Thanks for your report.

I don't have access to an iPad, but I was able to reproduce this on my Android phone and have reported it to the Cloud Editor developers. Thanks for bringing this to our attention!

As a workaround, I found that I was still able to access the settings by tapping at the very bottom of the bar on the left side of the page where we would expect to see the "Settings" icon:

I gave it a try, but unfortunately was not able to reproduce the problem:

Please provide a detailed description of what you are observing that tells you the update failed. Do you see an error message in the black "Console" panel at the bottom of the Cloud Editor page?

I'm going to ask you to post the full verbose output from an upload attempt.

Please do this:

  1. Attempt an upload, just as you did before.
  2. Wait for the upload to fail.
  3. If the black "Console" panel at the bottom of the Arduino Cloud Editor page is minimized, click the ˄ icon at the right side of the Console toolbar to expand it.
  4. Click the icon in the top right corner of the Console panel that looks like two pieces of paper ("Copy Console Output").
  5. Open a forum reply here by clicking the "Reply" button.
  6. Click the <CODE/> icon on the post composer toolbar.
    This will add the forum's code block markup (```) to your reply to make sure the error messages are correctly formatted.
  7. Press the Ctrl+V keyboard shortcut (Command+V for macOS users).
    This will paste the error output from the upload into the code block.
  8. Move the cursor outside of the code block markup before you add any additional text to your reply.
  9. Click the "Reply" button to post the output.

Hi,
Many many thanks for getting back to me.

On the missing button - I am glad you were able to replicate the problem, as I was starting to think it was just me. I have not been able to get anything to happen by tapping in the bottom corner of the screen, but my fingers are rather clumsy so I will try again once I am home tomorrow, now I know it is worth trying.

The way I know an update has failed is that any changes in my sketch do not happen. The easiest way to make that clear is by looking at the version number I place in my code, and what the Dashboard widget displays after the reset at the end of the update. I have just tried an update, and this is the result. Version 21.3 is from about 2 days ago, the last time an update worked.
Code today -
image
Dashboard a few minutes later -

As you will see, the editor claims the update succeeded, but it did not.
There are some hints that what is happening is that the update is happening, but the network re-connection in my odd situation is too slow, and the update is rolling back. There is a forum post regarding something similar (sorry but I can't see it at the moment), relating to using a VPN and having to change a delay from 1 sec to 2 sec. I am not using a VPN, but I am using tethering to a personal hotspot on an older iphone - which I do know takes a second or two to reconnect.

Here is the full output from the console -

Over-The-Air upload available, compiling...

/usr/local/bin/arduino-cli compile --fqbn esp32:esp32:esp32 --build-cache-path /tmp --output-dir /tmp/2331435908/build --build-path /tmp/arduino-build-C8A12FACC04FF589E5EB68250DE9A6C3  --library /mnt/create-efs/webide/4f/db/4fdb296542c633305d8ef1f1416bfe69:kevlinsley/libraries_v2/DallasTemperature /tmp/2331435908/Working_Maxine_Anne_ESP32
[info] Sketch uses 1137269 bytes (86%) of program storage space. Maximum is 1310720 bytes.
[info] Global variables use 52132 bytes (15%) of dynamic memory, leaving 275548 bytes for local variables. Maximum is 327680 bytes.

Upload Over-The-Air succeeded

Small Update.

Sorry, it wasn't a forum post about the VPN, it was a Github issue

(timeout: ArduinoOTA over VPN · Issue #8642 · espressif/arduino-esp32 · GitHub)

Sorry, but another update

Here is the result of using the old editor a few minutes ago.
Not surprisingly, the dashboard is updating voltage and other readings every 30 sec as it should, so my device has reconnected to the cloud, but it is still showing Version 21.3, indicating that the update has in fact failed (as the editor reported).

1 Like

Yeah, the tap does need to be within narrow area right at the bottom border of the page. I actually found it by accident when I was trying to get the "navigation bar" at the bottom of the screen to appear after I had hidden it. And I am also not using an iPad so it is possible the workaround that works on my phone is not applicable to iPads.

Thanks for the clarification. This information allowed me to better understand the problem and reproduce it. I have submitted a report to the Cloud Editor developers. Thanks for bringing this to our attention!

Hi
Having a similar issue when using the cloud editor. Using the current standard web/cloud editor, this is reported back:

When using the new full editor I get this:

The OTA upload states success, but in reality it is not. It also seems to complete quite quickly, in comparison to the standard web editor.
I have confirmed that the OTA upload has not been successful and I have tried this several times, using both standard and full web editors.
Let me know if you need any further info, thank you.

Additionally, reverting to the old 'full web editor' the OTA says that it has failed with the 'SHA256 mismatch' message. So it matches the standard web editor

Hi @gavvyboy. Thanks for your report. I have already escalated this to the Arduino Cloud Editor developers. Work is already in progress to resolve the issue. Unfortunately I don't receive a notification when the problem has been fixed so I can't make any promises, but if I do learn of its resolution I will make sure to come back here and post an update.

For now, you can use the "old" editor as a workaround.

Will do, thank you

1 Like

Further information on item 3 of my original post.

Using my Windows Laptop, Old editor.
An OTA update completed correctly last night, but this morning it is failing again.

The red bar across the editor shows -
Unable to verify OTA: the board didn't answer after reboot

The Serial monitor shows -
ArduinoIoTCloudTCP::onRequest _ota_url = https://api2.arduino.cc/iot/ota/86d8ae34-71ca-4afc-b689-eb9b986e5065
read_byte_from_network: timeout waiting data
update: CRC32 mismatch
Arduino_ESP_OTA::update() failed with -10
ArduinoIoTCloudTCP::handle_Disconnect MQTT client connection lost
Disconnected from Arduino IoT Cloud
Connected to Arduino IoT Cloud
Thing ID: 721f04c7-18a8-45f8-8eaa-65b2a093c80a

After a minute or so the device was correctly sending sensor values to the app on my phone, but of course the version number had not updated.

So, it looks to me like there is a timeout somewhere in the OTA code, and my device is taking too long to reconnect. This is exactly as reported in the link I sent above -

Can anyone confirm that Arduino Cloud uses the code referred to, if it doesn't then what code does it use, and finally is there any way I can make the change locally ?

K.

Here is the high level code in the "ArduinoIoTCloud" library, which is used directly by your Arduino Cloud Thing sketch:

That in turn uses the "Arduino_ESP32_OTA" library:

which uses the ESP-IDF:

I don't think so. You can see the timeout code here:

The value of ARDUINO_ESP32_OTA_BINARY_BYTE_RECEIVE_TIMEOUT_ms is configured here in the library:

If by "locally", you mean on your computer, yes. However, since you are currently using Arduino Cloud Editor, and since the OTA uploads are only possible when using Arduino Cloud, I think you will find it more convenient to make the change via Arduino Cloud. I'll provide instructions you can follow to do that:

  1. Open Arduino Cloud Editor.

  2. From the menu on the left side of the Arduino Cloud Editor window, click "Libraries".

  3. Type Arduino_ESP32_OTA in the "SEARCH LIBRARIES" field.

  4. You will see a line of text at the top of the "CUSTOM" tab:

    SHOWING LIBRARIES FOR <board name>

    (where <board name> is the name of the board you have selected in Arduino Cloud Editor)
    Click the board name in that line of text.
    The text will now change to:

    SHOWING LIBRARIES FOR ALL BOARDS

  5. Find the library in the search results and hover the mouse pointer over its name.
    A icon will appear to the right side of the library name.

  6. Click the icon.
    A menu will open.

  7. Select "Modify Library" from the menu.
    The source files of the library will open in Arduino Cloud Editor.

  8. Make your desired modifications to the library code.

  9. Click the ●●● button to the right of the library name at the top of the Arduino Cloud Editor window.
    A menu will open.

  10. Select "Save" from the menu.

Now open your sketch and upload it to the board. The modified library will be used when compiling the sketch.

If you later want to make other modifications to the library, or remove it from your Arduino Cloud account, you will find it under the "CUSTOM" tab of the Arduino Cloud "Libraries" panel.

Hi,

Thanks for the information on the code / library sequence, I'm still wading through it all but I haven't found anything other than the timeout you refer to and the two next to it. Where I do have a bit of a problem is that your link to the ESP-IDF only takes me to the documentation - which I have already seen and studied in some detail. I'm particularly interested in the section headed Rollback Process, where it says -

  • A new application has started and should make a self-test.
  • If the self-test has completed successfully, then you must call the function esp_ota_mark_app_valid_cancel_rollback() because the application is awaiting confirmation of operability (ESP_OTA_IMG_PENDING_VERIFY state).
  • If the self-test fails, then call esp_ota_mark_app_invalid_rollback_and_reboot() function to roll back to the previous working application, while the invalid application is set ESP_OTA_IMG_INVALID state.

I don't see any of this (yet) in the libraries you have pointed me to, in particular I don't see what sort of self test is being performed, so is it somewhere else, or does Arduino OTA do something different ?

There was a slight snag with the procedure you gave to edit the library, in that you didn't say which editor to use.
The new editor doesn't have the down arrow icon as in step 5, it does have a 3 dot icon which leads to a drop down menu including an option to edit the library, but the option is greyed out.
The old editor didn't have the "custom" tab (or the other two tabs with it) until after I had clicked to modify the library, so I wasn't sure that was what you meant. I get there eventually.
I managed to increase the three timeout times, but of course as OTA updates are still not working, I don't know whether the changes have got to the actual ESP32.

In the meantime, I have lost an evening when the compiler kept producing errors about missing files (compiler files, not my libraries) then I got a message saying there was a server issue and compilation was not available. This afternoon my sketch suddenly vanished and was replaced by a message about server issues and saving not available. Now the new editor will not recognize my device, though the old editor and dashboards on both laptop and phone are fine. When I click on Select Device I can see it listed,

but clicking on it just takes me back to the main screen with no device selected.

image

The old editor is accepting the device fine

And the thing and dashboard pages show my device connected and online
image

Any ideas please ?

There are layers upon layers of abstraction. You have to go to a lower layer to find the code that uses ESP-IDF directly:

I'm sorry about that. I have explicitly instructed the use of the "old" editor earlier in this thread and you also specified "Old editor" in your previous reply so I thought that would go without saying.

Thanks for mentioning this. I have reported it to the developers of the "new" Cloud Editor.

Did you upload the sketch to the board after making the change to the library? If so, then the changed did make it to the ESP32.

I'm sorry about that. Did you manage to recover the sketch?

I verify the bug. This has been reported to the Cloud Editor developers. For now, please use the "old" editor, which does not have the bug.

Hi,

A few quick bits before I dive into the complicated stuff.

Yes, I know there are layers and layers, the problem is that I can’t follow them down. Sorry, but my coding just isn’t that good.

Yes, I got my sketch back, it just reappeared a few seconds later with no apparent problems.

More information on the “no device selected” bug. It is related to a setting in the preferences section, accessed by the vanishing button, something like “automatic port selection”. Turn this off and you can select the device again.

As to whether the changes you suggested have got to the ESP32, you seem to be assuming the OTA update works. It nearly always fails, and at this point we don’t know where in the process it gets to before the failure, so no, you can’t assume the changes have got to the device.

Next, another bug, or maybe this is just a “feature” :smile:.

Neither editor will allow use of the serial port for debugging if the device is set up for OTA. There is nothing wrong with my hardware or setup, as I can open IDE 1.9 and use the serial monitor in that while doing OTA updates.

And finally to the new and more complicated stuff.
I brought the device home so I could use usb for updates and the serial monitor for debugging. Someone from support suggested adding “,false” to ArduinoCloud.begin so I tried that as well. With your changes and the “false” to disable the watchdog I did an update via usb to make sure both actually got to the ESP32. The update worked, and for several days after that I could do OTA updates correctly with no problems.
Then I decided to try putting the library back to default settings, to see whether it was the library or the false that had fixed the problem, and I started having trouble again. But…..
Having the serial monitor on has shown some very interesting results.
I have a text document with the full output each time, and notes on each one, but I don’t know how to attach it here, so just to give some examples
Despite the lack of documentation, I now know that the watchdog works during the OTA update procedure. When I get “ read_byte_from_network: timeout waiting data” it repeats forever and I have to press the reset button on the ESP32.
There is at least one other timer / timeout setting somewhere, in addition to the ones in the library you suggested, as I sometimes get
“Connection to "Maxine_Anne" failed
Retrying in "4000" milliseconds”.
It also looks to me like there are all sorts of network issues, as I also sometimes get
“ download: Error receiving HTTP header (timeout)
Arduino_ESP_OTA::download() failed with -7”.
And sometimes “ArduinoIoTCloudTCP::handle_ConnectMqttBroker could not connect to iot.arduino.cc:8884”,
or
“ ArduinoIoTCloudTCP::handle_Disconnect MQTT client connection lost”,
or
“ArduinoIoTCloudTCP::handle_Disconnect MQTT client connection lost
Disconnected from Arduino IoT Cloud
Connected to Arduino IoT Cloud”

And to add to the fun, messages like
“ xtensa-esp32-elf-gcc: error: /home/builder/Arduino/libraries/arduinoiotcloud_1_15_1/src/tls/bearssl/ssl_server_full_ec.c: No such file or directory

xtensa-esp32-elf-gcc: fatal error: no input files

compilation terminated.”

There is also a banner that appears from time to time saying “ We are encountering a server issue, compilation is temporarily not available”, though the Arduino online status page says there are no issues.

Basically, I am lost. There are too many errors, I don’t understand most of them, and the ones I think I have some understanding of point to Arduino Cloud rather than my code or hardware. It is also probably worth me pointing out that all the problems are with OTA updates - in between update attempts the ESP32 connects and updates sensor readings, and the various switches and messages all work perfectly on my Dashboard.

Cheers
Kevin.

Great work on discovering this! I verified that the fault only occurs when the “Enable auto-selection” setting is enabled in the Cloud Editor preferences. I have passed this information on the Cloud Editor developers.

You must select the serial port of the board instead of the "Over-The-Air" port when you are using Serial Monitor:

Maybe you meant to write "the watchdog doesn't work"?

The term "watchdog" refers to a timer that resets the microcontroller if it was not "kicked" before the timer expiration. The behavior you are describing is a simple timeout, retry system. If anything, a watchdog timer would obviate the need for you to manually reset the board (though this wouldn't occur in the case where a timeout, retry system "kicks" the timer).

Even though it is true that the ArduinoIoTCloud library does activate and manage the watchdog timer The output you shared is completely unrelated to the watchdog timer.

This is in the "Arduino_ConnectionHandler" library:

The retry system is here:

which is called by the ArduinoIoTCloud library here:

I'm afraid this part is completely outside of my area of competence (I try to help out the Arduino Cloud users where I can, but I'm only peripherally involved in the "new" Cloud Editor project and know little about the technical aspects of other Arduino Cloud services like the OTA upload backend). Maybe one of the Arduino Cloud team members who monitor this forum category, or another forum helper will be able to provide some assistance/insight about this part.

Are you able to reproduce this? If so, please post the full output from an compilation attempt:

  1. Attempt an compilation.
  2. Wait for the compilation to fail.
  3. Hover the mouse over the red bar that shows the error message at the bottom of the Arduino Cloud Editor page. Click and drag it up so you can see the black console window.
  4. Click the icon in the top right corner of the console that looks like two pieces of paper.
  5. Open a forum reply here by clicking the "Reply" button.
  6. Click the <CODE/> icon on the post composer toolbar.
    This will add the forum's code block markup (```) to your reply to make sure the error messages are correctly formatted.
  7. Press the Ctrl+V keyboard shortcut (Command+V for macOS users).
    This will paste the error output from the upload into the code block.
  8. Move the cursor outside of the code block markup before you add any additional text to your reply.
  9. Click the "Reply" button to post the output.

This is another part that I'm not able to assist with due to it being outside of my area of competence.

I apologize for the problems with Arduino Cloud.

In regards to the problems that are specific to the "new" Cloud Editor, this is a very new product that is under active development. We are aware that there were some missing features, as well as likely some bugs and this is why the users are given the option to continue to use the "old" editor during this transitional phase. The Cloud Editor developers are working hard to add the missing features and fix the bugs and I do think you will see a steady improvement in the Cloud Editor. For example, I see they have already fixed this bug you reported:

As for the bug you reported yesterday:

They have now prepared a fix. It will be some time before the fix is deployed to the production Arduino Cloud instance you are using, but it is definitely on its way.

The feedback from the users like you who have given the "new" Cloud Editor a try have been very valuable and we are definitely listening and acting on these. Thanks!

Hi.

This is all getting rather complicated. I am going to try hard to deal with each item in order, and be clear and concise, but sorry in advance if I can’t manage it.

First, where you say “ You must select the serial port of the board instead of the "Over-The-Air" port when you are using Serial Monitor:”

If I select the serial port of the board then I can’t do an OTA update ! My point was that neither editor will allow me to use the serial monitor function to read serial debug messages which are produced during the OTA update procedure. I can select OTA, or serial, but NOT serial for monitoring and OTA for the update at the same time. This whole discussion has been about failures in the OTA update process, so I assumed you would realise I want / need to monitor debug messages on the serial port while doing an OTA update. I can and do use IDE 1.x to get round the problem, but it would be nice if one or other of the editors could do it. I’ve seen your advice to other people on here about using message or other widgets on a dashboard to replicate a serial monitor, but of course that’s not possible during an OTA update.

Next, many thanks for the links to the libraries, they are great information. I can’t say I really understand it all (yet), but it looks to me like Line 102 in Arduino_WiFiConnectionHandler.cpp is missing a bit - shouldn’t there be a reference to defined(ARDUINO_ARCH_ESP32) ?

Next, the watchdog. Sorry if I didn’t make it clear, but no I did not mean “doesn’t” work. You say “ The output you shared is completely unrelated to the watchdog timer.”, but I did give the error and say it repeats forever - did you really want me to attach 2,000+ lines all the same ? :joy:
I’ve read all the documentation I can find on the watchdog, and it DOES NOT appear to say, or even hint, that the watchdog operates during the OTA process - it clearly describes the watchdog as working in conjunction with a user sketch. I (and other “normal” users) have NO direct control of what goes on in the OTA process, so having to “poke and hope” is somewhat irritating.
Consider the line -
ArduinoCloud.begin(ArduinoIoTPreferredConnection, false).
Without the “,false” at the end, the watchdog is enabled. In my case, when an an OTA update fails, particularly when it fails with a continuous series of “ read_byte_from_network: timeout waiting data
read_byte_from_network: timeout waiting data”, the watchdog eventually triggers a reset of the ESP32, which boots back into the previous version of the sketch, the sketch connects to the cloud, and although the update fails I can at least try again.
With “,false” at the end of the line, the watchdog is disabled, the “ read_byte_from_network: timeout waiting data” simply carries on for ever, and I have to manually press the reset button to reboot into the previous sketch. This undocumented behaviour is NOT helpful for remote devices ! I have found a couple of references to resetting the watchdog in libraries that may be used in the complicated sequence of the OTA updates, but I haven’t been able to follow the path through all the different libraries and layers yet, and it doesn’t help that the ESP32 actually seems to have at least two different hardware watchdogs, so I don’t really know what I’m looking for.

And finally, no, sorry, I can’t replicate the compiler / server errors from here, they happen when the Arduino servers have problems. However, here is a full output from one of them -


/usr/local/bin/arduino-cli compile --fqbn esp32:esp32:esp32 --build-cache-path /tmp --output-dir /tmp/1532859319/build --build-path /tmp/arduino-build-C8A12FACC04FF589E5EB68250DE9A6C3 --library /mnt/create-efs/webide/4f/db/4fdb296542c633305d8ef1f1416bfe69:kevlinsley/libraries_v2/Arduino_ESP32_OTA --library /mnt/create-efs/webide/4f/db/4fdb296542c633305d8ef1f1416bfe69:kevlinsley/libraries_v2/DallasTemperature /tmp/1532859319/Working_Maxine_Anne_ESP32

xtensa-esp32-elf-gcc: error: /home/builder/Arduino/libraries/arduinoiotcloud_1_15_1/src/tls/bearssl/ssl_lru.c: No such file or directory

xtensa-esp32-elf-gcc: fatal error: no input files

compilation terminated.

cc1: fatal error: /home/builder/Arduino/libraries/arduinoiotcloud_1_15_1/src/tls/bearssl/ssl_rec_chapol.c: No such file or directory

compilation terminated.

xtensa-esp32-elf-gcc: error: /home/builder/Arduino/libraries/arduinoiotcloud_1_15_1/src/tls/bearssl/ssl_server.c: No such file or directory

xtensa-esp32-elf-gcc: fatal error: no input files

compilation terminated.

xtensa-esp32-elf-gcc: error: /home/builder/Arduino/libraries/arduinoiotcloud_1_15_1/src/tls/bearssl/ssl_scert_single_ec.c: No such file or directory

xtensa-esp32-elf-gcc: fatal error: no input files

compilation terminated.

xtensa-esp32-elf-gcc: error: /home/builder/Arduino/libraries/arduinoiotcloud_1_15_1/src/tls/bearssl/ssl_scert_single_rsa.c: No such file or directory

xtensa-esp32-elf-gcc: fatal error: no input files

compilation terminated.

xtensa-esp32-elf-gcc: error: /home/builder/Arduino/libraries/arduinoiotcloud_1_15_1/src/tls/bearssl/ssl_server_full_rsa.c: No such file or directory

xtensa-esp32-elf-gcc: fatal error: no input files

compilation terminated.

cc1: fatal error: /home/builder/Arduino/libraries/arduinoiotcloud_1_15_1/src/tls/bearssl/ssl_rec_gcm.c: No such file or directory

compilation terminated.

xtensa-esp32-elf-gcc: error: /home/builder/Arduino/libraries/arduinoiotcloud_1_15_1/src/tls/bearssl/ssl_server_full_ec.c: No such file or directory

xtensa-esp32-elf-gcc: fatal error: no input files

compilation terminated.

cc1: fatal error: /home/builder/Arduino/libraries/arduinoiotcloud_1_15_1/src/tls/bearssl/ssl_rec_cbc.c: No such file or directory

compilation terminated.

/home/builder/Arduino/libraries/arduinoiotcloud_1_15_1/src/tls/bearssl/ssl_io.c:25:10: fatal error: AIoTC_Config.h: No such file or directory

compilation terminated.

/home/builder/Arduino/libraries/arduinoiotcloud_1_15_1/src/tls/bearssl/ssl_rec_ccm.c:25:10: fatal error: AIoTC_Config.h: No such file or directory

compilation terminated.

/home/builder/Arduino/libraries/arduinoiotcloud_1_15_1/src/tls/bearssl/ssl_keyexport.c:25:10: fatal error: AIoTC_Config.h: No such file or directory

compilation terminated.

/home/builder/Arduino/libraries/arduinoiotcloud_1_15_1/src/tls/bearssl/ssl_hs_server.c:3:10: fatal error: AIoTC_Config.h: No such file or directory

compilation terminated.

In file included from /home/builder/Arduino/libraries/arduinoiotcloud_1_15_1/src/tls/bearssl/sha2small.c:30:

/home/builder/Arduino/libraries/arduinoiotcloud_1_15_1/src/tls/bearssl/inner.h:32:10: fatal error: bearssl.h: No such file or directory

compilation terminated.

Cheers

Kevin.

Try this:

  1. Open the "Select device" dialog in Cloud Editor.
  2. Select the serial port of the board.
  3. Open Serial Monitor.
    The Serial Monitor window should open, connected to the serial port of the board.
  4. Open the "Select device" dialog in Cloud Editor.
  5. Select the "Over-The-Air" port of the board.
  6. Do an upload.

I just gave it a try with the "new" Cloud Editor and it worked fine for me. The serial port remained selected in the Serial Monitor window even after I had selected the OTA port in Cloud Editor.

It certainly works as it is. I use ESP32-based Things all the time and don't have any problems. It does sometimes fail on the first attempt to connect to the Wi-Fi access point, but then it just retries and connects on the second attempt.

Thanks for the clarification. Unfortunately there isn't anything I can do to investigate a transient fault that isn't reproducible. Maybe one of the Arduino Cloud team members who maintain the infrastructure will take a look though.