How to manually acquire IDE Board Packages and Install?

Hi, rather than using the automated Arduino IDE .json & board manager method to make 'boards' available in the IDE, is it possible to download the board package (I've seen it as example:'ArduinoCore-samd-1.8.2.tar.bz2) and install it manually into Arduino IDE?

Is there a map or library of where to find these packages (Arduino, Adafruit, Seeed, etc, published)?

Is there method to implement them into Arduino IDE manually?

(reason: due to security purposes on some systems, the .json & board mgr method won't work ..proxy settings, auto downlds, etc. etc.)

thanks in advance

What you might find most easy is to make a portable installation of the Arduino IDE on a computer that does have the necessary network access, install everything you need via Boards Manager on that computer, and then copy the full installation over to the locked down computer (you can even just leave the portable installation on some portable storage such as flash drive if that is convenient).

Information about the Arduino IDE portable installation option here:

But I'll go ahead and provide answers to your questions as well:

If you know the "Boards Manager URL" (package index), you can find it in there. The authors of modern 3rd party boards packages will always tell you the URL in their installation instructions because you must add it to the Arduino IDE preferences. The primary package index URL is hardcoded into the Arduino IDE, so it is not so well advertised. It is here:
https://downloads.arduino.cc/packages/package_index.json

Here is the package index entry for version 1.8.2 of the "Arduino SAMD Boards (32-bits ARM Cortex-M0+)" boards platform:

{
  "name": "Arduino SAMD Boards (32-bits ARM Cortex-M0+)",
  "architecture": "samd",
  "version": "1.8.2",
  "category": "Arduino",
  "help": {
    "online": "http://www.arduino.cc/en/Reference/HomePage"
  },
  "url": "http://downloads.arduino.cc/cores/samd-1.8.2.tar.bz2",
  "archiveFileName": "samd-1.8.2.tar.bz2",
  "checksum": "SHA-256:af75e0d37b63df3b92ecca60285aa59bab66e0bd03bcc4092ea3a1fab3df5258",
  "size": "2894202",
  "boards": [
    { "name": "Arduino MKR WiFi 1010" },
    { "name": "Arduino Zero" },
    { "name": "Arduino MKR1000" },
    { "name": "Arduino MKRZERO" },
    { "name": "Arduino MKR FOX 1200" },
    { "name": "Arduino MKR WAN 1300" },
    { "name": "Arduino MKR GSM 1400" },
    { "name": "Arduino MKR NB 1500" },
    { "name": "Arduino MKR Vidor 4000" },
    { "name": "Arduino Nano 33 IoT" },
    { "name": "Arduino M0 Pro" },
    { "name": "Arduino M0" },
    { "name": "Arduino Tian" },
    { "name": "Adafruit Circuit Playground Express" }
  ],
  "toolsDependencies": [
    {
      "packager": "arduino",
      "name": "arm-none-eabi-gcc",
      "version": "7-2017q4"
    },
    {
      "packager": "arduino",
      "name": "bossac",
      "version": "1.7.0-arduino3"
    },
    {
      "packager": "arduino",
      "name": "openocd",
      "version": "0.10.0-arduino7"
    },
    {
      "packager": "arduino",
      "name": "CMSIS",
      "version": "4.5.0"
    },
    {
      "packager": "arduino",
      "name": "CMSIS-Atmel",
      "version": "1.2.0"
    },
    {
      "packager": "arduino",
      "name": "arduinoOTA",
      "version": "1.2.1"
    }
  ]
}

You can get the platform archive download URL from the packages[*].platforms[*].url field (in this case, http://downloads.arduino.cc/cores/samd-1.8.2.tar.bz2).

Note that the platform is only one component of the package. You also need the toolchain. The platform's tool dependencies are listed in the packages[*].platforms[*].toolsDependencies[*] fields. Their archive URLs are also listed in the package index. For example, here is arduino:arm-none-eabi-gcc@7-2017q4:

{
  "name": "arm-none-eabi-gcc",
  "version": "7-2017q4",
  "systems": [
    {
      "host": "arm-linux-gnueabihf",
      "url": "http://downloads.arduino.cc/tools/gcc-arm-none-eabi-7-2019-q4-major-linuxarm.tar.bz2",
      "archiveFileName": "gcc-arm-none-eabi-7-2019-q4-major-linuxarm.tar.bz2",
      "checksum": "SHA-256:34180943d95f759c66444a40b032f7dd9159a562670fc334f049567de140c51b",
      "size": "96613739"
    },
    {
      "host": "aarch64-linux-gnu",
      "url": "http://downloads.arduino.cc/tools/gcc-arm-none-eabi-7-2018-q2-update-linuxarm64.tar.bz2",
      "archiveFileName": "gcc-arm-none-eabi-7-2018-q2-update-linuxarm64.tar.bz2",
      "checksum": "SHA-256:6fb5752fb4d11012bd0a1ceb93a19d0641ff7cf29d289b3e6b86b99768e66f76",
      "size": "99558726"
    },
    {
      "host": "i686-mingw32",
      "url": "http://downloads.arduino.cc/tools/gcc-arm-none-eabi-7-2017-q4-major-win32-arduino1.zip",
      "archiveFileName": "gcc-arm-none-eabi-7-2017-q4-major-win32-arduino1.zip",
      "checksum": "SHA-256:96dd0091856f4d2eb21046eba571321feecf7d50b9c156f708b2a8b683903382",
      "size": "131761924"
    },
    {
      "host": "x86_64-apple-darwin",
      "url": "http://downloads.arduino.cc/tools/gcc-arm-none-eabi-7-2017-q4-major-mac.tar.bz2",
      "archiveFileName": "gcc-arm-none-eabi-7-2017-q4-major-mac.tar.bz2",
      "checksum": "SHA-256:89b776c7cf0591c810b5b60067e4dc113b5b71bc50084a536e71b894a97fdccb",
      "size": "104550003"
    },
    {
      "host": "x86_64-pc-linux-gnu",
      "url": "http://downloads.arduino.cc/tools/gcc-arm-none-eabi-7-2017-q4-major-linux64.tar.bz2",
      "archiveFileName": "gcc-arm-none-eabi-7-2017-q4-major-linux64.tar.bz2",
      "checksum": "SHA-256:96a029e2ae130a1210eaa69e309ea40463028eab18ba19c1086e4c2dafe69a6a",
      "size": "99857645"
    },
    {
      "host": "i686-pc-linux-gnu",
      "url": "http://downloads.arduino.cc/tools/gcc-arm-none-eabi-7-2018-q2-update-linux32.tar.bz2",
      "archiveFileName": "gcc-arm-none-eabi-7-2018-q2-update-linux32.tar.bz2",
      "checksum": "SHA-256:090a0bc2b1956bc49392dff924a6c30fa57c88130097b1972204d67a45ce3cf3",
      "size": "97427309"
    }
  ]
}

Note that there is a separate URL for each host type, so make sure to get the right one for the PC you are installing to.

It is also possible for package index authors to reference a tool dependency from another package, so you won't necessarily always find the tool in the same package index as the platform. The referenced tool is usually from the arduino package, in which case you would find it in the https://downloads.arduino.cc/packages/package_index.json package index.

In the unlikely event you are interested in all the boring details about package indexes, you can find them here:
https://arduino.github.io/arduino-cli/latest/package_index_json-specification/

Yeah, you can install them manually. People usually manually install platforms to the hardware subfolder of their sketchbook because they are most often doing beta testing and development and that location is more convenient for such activities. This installation option is described in the introduction of the Arduino Platform Specification:
https://arduino.github.io/arduino-cli/latest/platform-specification/

Unfortunately, there isn't any provision for installing tools to the sketchbook folder. It is usually most convenient to do an installation of the production release of a platform to get the associated toolchain, then install the development version of that platform to the sketchbook. But in your case I suppose the Boards Manager option is off the table.

1 Like

Here are some instructions on how to manually install the cores on Arduino's webpage: How to install and use a custom core version in the IDE

1 Like

Thanks!
In this case, we r not allowed to copy from unprotected system to the protected system, hence the 'Portable Arduino IDE' approach not option.
I know this is very rare application instance, so thanks much for taking time to help me.

Managed to make core folder in sketchbook and see the Seeed SAMD option in Boards Manager.

But now I get this error when trying to compile the sketch:
exec: "/bin/arm-none-eabi-g++": file does not exist

I've downloaded the 'gcc-arm-none-eabi-7-2017-q4-major-win32', but I don't know where to put it.

This is due to the missing toolchain. The author of the instructions shared by truss-dk left out the step where they installed the production version of the platform via Boards Manager to get the toolchain (that's why you see two "Arduino Mbed OS Boards (nRF52480/STM32H747)" entries in the screenshot).

It must be installed here:

C:\Users\<user name>\AppData\Local\Arduino15\packages\Seeeduino\tools\arm-none-eabi-gcc\7-2017q4

You should also install all the other tools dependencies of the platform (see my previous reply for how to find them). You might get by without one or two depending on what you are doing (e.g., you don't need arduinoOTA if you aren't doing over the air uploads), but it's probably easiest to just install all of them.

The folder structure should look like this

C:\Users\<user name>\AppData\Local\Arduino15
`-- packages
    `-- Seeeduino
        `-- tools
            |-- CMSIS
            |   `-- 5.7.0
            |       |-- ARM.CMSIS.pdsc
            |       |-- CMSIS
            |       |-- Device
            |       `-- LICENSE.txt
            |-- CMSIS-Atmel
            |   `-- 1.2.1
            |       |-- CMSIS-Atmel
            |       |-- LICENSE
            |       |-- Makefile
            |       |-- README.md
            |       `-- extras
            |-- arduinoOTA
            |   `-- 1.2.1
            |       `-- bin
            |-- arm-none-eabi-gcc
            |   `-- 7-2017q4
            |       |-- arm-none-eabi
            |       |-- bin
            |       |-- lib
            |       `-- share
            `-- bossac
                |-- 1.7.0-arduino3
                |   `-- bossac.exe
                `-- 1.8.0-48-gb176eee
                    `-- bossac.exe
1 Like

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