Arduino_Builtin library fails to install

A couple days ago I installed 2.3.10 on Artix and immediately encountered errors about the Arduino_Builtin library failing to install due to some vague network error containing an IPv6 address. I do not use IPv6. The log messages indicated that Arduino_Builtin was failing to install its dependencies. I found a similar post from eight months ago.

I opened the dependency URL from the error message in a browser and it downloaded fine.
I tried installing the dependencies individually from the library manager but they still failed. I also clicked install on Arduino_Builtin several times, which also failed. But here's something weird/interesting: each time I clicked install on Arduino_Builtin it would cycle through its dependencies and fail to install a different one. After three or four clicks, the "install" button on Arduino_Builtin changed to "installed", although neither it nor its dependencies were installed. Restarting the IDE would reset the false "installed" and show another error message about failing to install Arduino_Builtin.

Evidently the whole library management system needs to be more robust.

I used the 1.x IDE for a couple days and then tried 2.3.10 again. This time 2.3.10 just worked. Not sure which one I will continue with.

I suspect that there was a network glitch somewhere (not necessarily on your side) which caused the problems that you did experience.
While trying to view Arduino_BuiltIn/library.properties at main · arduino-libraries/Arduino_BuiltIn · GitHub just now it took ages, got stuck and displayed the contents after I refreshed the web page.


When installing IDE 2.x, part of what will be installed are a number of standard libraries. You should be able to find those libraries in the Arduino15 directory. You did not mention your operating system but https://support.arduino.cc/hc/en-us/articles/4415103213714-Find-sketches-libraries-board-cores-and-other-files-on-your-computer#boards lists where you can find the Arduino15 directory.

When you install manually (it sounds like you selected Arduino_Builtin in the library manager of IDE 2.x) the libraries will be installed in the libraries directory of the sketchbook directory (if installation succeeded).

So those are the directories that you can check for the presence of the the built-in libraries.

On my Windows system this is the content of that libraries directory

C:\USERS\YOURUSERNAME\APPDATA\LOCAL\ARDUINO15\LIBRARIES
+---Arduino_BuiltIn
|   \---src
+---Ethernet
|   +---docs
|   +---examples
|   |   +---AdvancedChatServer
|   |   +---BarometricPressureWebServer
|   |   +---ChatServer
|   |   +---DhcpAddressPrinter
|   |   +---DhcpChatServer
|   |   +---LinkStatus
|   |   +---PagerServer
|   |   +---TelnetClient
|   |   +---UdpNtpClient
|   |   +---UDPSendReceiveString
|   |   +---WebClient
|   |   +---WebClientRepeating
|   |   \---WebServer
|   \---src
|       \---utility
+---Firmata
|   +---docs
|   |   \---html
|   |       \---search
|   +---examples
|   |   +---AllInputsFirmata
|   |   +---AnalogFirmata
|   |   +---EchoString
|   |   +---OldStandardFirmata
|   |   +---ServoFirmata
|   |   +---SimpleAnalogFirmata
|   |   +---SimpleDigitalFirmata
|   |   +---StandardFirmata
|   |   +---StandardFirmataBLE
|   |   +---StandardFirmataChipKIT
|   |   +---StandardFirmataEthernet
|   |   +---StandardFirmataPlus
|   |   \---StandardFirmataWiFi
|   +---extras
|   \---utility
+---Keyboard
|   +---examples
|   |   \---Serial
|   \---src
+---LiquidCrystal
|   +---examples
|   |   +---Autoscroll
|   |   +---Blink
|   |   +---Cursor
|   |   +---CustomCharacter
|   |   +---Display
|   |   +---HelloWorld
|   |   +---Scroll
|   |   +---SerialDisplay
|   |   +---setCursor
|   |   \---TextDirection
|   \---src
+---Mouse
|   \---src
+---SD
|   +---docs
|   +---examples
|   |   +---CardInfo
|   |   +---Datalogger
|   |   +---DumpFile
|   |   +---Files
|   |   +---listfiles
|   |   +---NonBlockingWrite
|   |   \---ReadWrite
|   \---src
|       \---utility
+---Servo
|   +---docs
|   +---examples
|   |   +---Knob
|   |   |   \---images
|   |   \---Sweep
|   |       \---images
|   \---src
|       +---avr
|       +---mbed
|       +---megaavr
|       +---nrf52
|       +---renesas
|       +---sam
|       +---samd
|       +---stm32f4
|       \---xmc
+---Stepper
|   +---examples
|   |   +---MotorKnob
|   |   +---stepper_oneRevolution
|   |   +---stepper_oneStepAtATime
|   |   \---stepper_speedControl
|   \---src
\---TFT
    +---examples
    |   +---Arduino
    |   |   +---TFTBitmapLogo
    |   |   +---TFTColorPicker
    |   |   +---TFTDisplayText
    |   |   +---TFTEtchASketch
    |   |   +---TFTGraph
    |   |   \---TFTPong
    |   \---Esplora
    |       +---EsploraTFTBitmapLogo
    |       +---EsploraTFTColorPicker
    |       +---EsploraTFTEtchASketch
    |       +---EsploraTFTGraph
    |       +---EsploraTFTHorizon
    |       +---EsploraTFTPong
    |       \---EsploraTFTTemp
    +---extras
    \---src
        \---utility

In theory you don't need the Arduino_Builtin; IDE 2.x will work without those libraries. It's more a convenience. If one of the libraries is missing and your sketch needs it you can always install it manually.

I think it is likely, but it should be noted that Arduino IDE doesn't download anything from GitHub. Arduino hosts the library release archive files on our own servers, and Arduino IDE downloads them from there. You can see the URLs used by Arduino IDE in the url keys of the library index file:

https://downloads.arduino.cc/libraries/library_index.json

for example:

    {
      "name": "Ethernet",
      "version": "2.0.2",
      "author": "Various (see AUTHORS file for details)",
      "maintainer": "Arduino \u003cinfo@arduino.cc\u003e",
      "sentence": "Enables network connection (local and Internet) using the Arduino Ethernet Board or Shield.",
      "paragraph": "With this library you can use the Arduino Ethernet (shield or board) to connect to Internet. The library provides both client and server functionalities. The library permits you to connect to a local network also with DHCP and to resolve DNS.",
      "website": "https://www.arduino.cc/en/Reference/Ethernet",
      "category": "Communication",
      "architectures": [
        "*"
      ],
      "types": [
        "Arduino"
      ],
      "repository": "https://github.com/arduino-libraries/Ethernet.git",
      "providesIncludes": [
        "Ethernet.h"
      ],
      "url": "https://downloads.arduino.cc/libraries/github.com/arduino-libraries/Ethernet-2.0.2.zip",
      "archiveFileName": "Ethernet-2.0.2.zip",
      "size": 104551,
      "checksum": "SHA-256:e8688e417039c79d547d005f4deecbdaffde965823cfa79f64a18d67df1112d6"
    },

Artix is a Linux flavor.

I'm suggesting that the libraries that the IDE tries to download during installation should be hosted somewhere more reliable, and that the IDE should handle errors correctly. Graceful error handling is a nice-to-have feature; saying a library is installed when it isn't is a bug.

If the dependencies of Arduino_Builtin aren't strictly required, perhaps there could be an option or instructions for how to make the IDE stop trying to install Arduino_Builtin and spewing errors on every startup. That first impression does not inspire trust.

I'm sorry, I did see the "Artix" and next forgot about it while typing the reply.
Apologies.

Did you encounter this error while using UNO Q with IDE2.x.x?

I encountered this error when starting IDE 2.x for the first time, and on every subsequent restart, and when trying to install the libraries through the library manager. It fixed itself two days later.

Many thousands of Arduino community members download library and boards platform archive files every single day, yet we don't see massive quantities of reports of those downloads failing. The library release archive files are hosted on the same type of web infrastructure (AWS) that is used for the Arduino website assets, yet the website content is reliably available.

Great news! Thanks for taking the time to post an update.

Does the app automatically report errors? Not getting problem reports from users is not an indicator of anything. People don't report things. I took over development of an Android app back before crashes were automatically reported in the Google developer console. I added third-party automatic crash reporting and was staggered. Our app was crashing constantly and no one ever said a word. And this was a privately distributed commercial app that customers were paying big money for.

And let me emphasize again, the app should not say a library is installed after clicking "install" fails 3-4 times. That is clearly a bug. The fact that it cycles through different dependencies on each attempt is a clue. It must be maintaining some state that should not be maintained between attempts.

Some don't, but some do. So if there is a problem that affects many users, we will definitely receive a significant number of reports. And we understand that those reports are the "tip of the iceberg" of the total number of affected users. I say this as someone who has spent the last 13 years supporting Arduino users on a daily basis, with a special focus on Arduino IDE and related tooling.

I can provide an example. Some time ago, we had a bug that caused downloads of very large files to be terminated spuriously for users with slow Internet connections. Here you can see a list I collected of user reports of this bug:

https://github.com/arduino/arduino-cli/issues/3013#:~:text=while%20reading%20body)-,Additional%20reports,-Consistent%20Client.Timeout

So this clearly proves that the Arduino userbase does report problems to us when they encounter them.

I never said otherwise.