arduino/Arduino · error · Exception

Tool {0} is not available for your operating system.

Error message

Tool {0} is not available for your operating system.

What it means

In ContributionInstaller.install(), each resolved tool of the platform must expose a DownloadableContribution for the current OS (host platform). If tool.getDownloadableContribution(platform) returns null, there is no build of that tool for this operating system and install() aborts with a formatted Exception naming the tool.

Source

Thrown at arduino-core/src/cc/arduino/contributions/packages/ContributionInstaller.java:84

  private final SignatureVerifier signatureVerifier;

  public ContributionInstaller(Platform platform, SignatureVerifier signatureVerifier) {
    this.platform = platform;
    this.signatureVerifier = signatureVerifier;
  }

  public synchronized List<String> install(ContributedPlatform contributedPlatform, ProgressListener progressListener) throws Exception {
    List<String> errors = new LinkedList<>();
    if (contributedPlatform.isInstalled()) {
      throw new Exception("Platform is already installed!");
    }

    // Do not download already installed tools
    List<ContributedTool> tools = new ArrayList<>();
    for (ContributedTool tool : contributedPlatform.getResolvedTools()) {
      DownloadableContribution downloadable = tool.getDownloadableContribution(platform);
      if (downloadable == null) {
        throw new Exception(format(tr("Tool {0} is not available for your operating system."), tool.getName()));
      }
      // Download the tool if it's not installed or it's a built-in tool
      if (!tool.isInstalled() || tool.isBuiltIn()) {
        tools.add(tool);
      }
    }

    DownloadableContributionsDownloader downloader = new DownloadableContributionsDownloader(BaseNoGui.indexer.getStagingFolder());

    // Calculate progress increases
    MultiStepProgress progress = new MultiStepProgress((tools.size() + 1) * 2);

    // Download all
    try {
      // Download platform
      downloader.download(contributedPlatform, progress, tr("Downloading boards definitions."), progressListener, false);
      progress.stepDone();

View on GitHub (pinned to a0df6e0e83)

Solutions

  1. Update the package index (and IDE) so the platform's tools include a hosted contribution for your OS.
  2. Choose a different version of the platform/board package that publishes tool builds for your operating system.
  3. On unsupported hosts, use an alternative toolchain setup or run the IDE on a supported OS/architecture.
  4. Check the package_index.json hosting entries for the named tool to confirm which OS builds exist.
Defensive patterns

Strategy: validation

Validate before calling

for (ContributedTool tool : platform.getResolvedTools()) {
  if (tool.getDownloadableContribution(BaseNoGui.getPlatform()) == null) {
    throw new IllegalStateException("Tool " + tool.getName() + " unavailable on this OS");
  }
}

Try / catch

try { installer.install(platform, listener); } catch (Exception e) { if (e.getMessage().contains("not available for your operating system")) { reportUnsupportedHost(e); } else { throw e; } }

Prevention

When it happens

Trigger: install() iterates contributedPlatform.getResolvedTools() and any tool lacks a hosted contribution matching the current host OS/architecture (tool.getDownloadableContribution(platform) == null).

Common situations: Installing board packages on less common hosts (Linux ARM, FreeBSD) whose toolchains aren't published; package index entries missing hosting entries for some OS; outdated package index where newer OS variants were never added.

Understand the failure class

Background: "unsupported platform" / "not supported on this platform" errors: what they mean and how to fix them — this error's family across 47 libraries.

Related errors


AI-assisted analysis of arduino/Arduino@a0df6e0e83 (2026-09-06). Data as JSON: /api/errors/3139ff6928bfae30. Report an issue: GitHub.