{"record":{"id":"3139ff6928bfae30","repo":"arduino/Arduino","slug":"tool-0-is-not-available-for-your-operating-syste","errorCode":null,"errorMessage":"Tool {0} is not available for your operating system.","messagePattern":"Tool (.+?) is not available for your operating system\\.","errorType":"exception","errorClass":"Exception","httpStatus":null,"severity":"error","filePath":"arduino-core/src/cc/arduino/contributions/packages/ContributionInstaller.java","lineNumber":84,"sourceCode":"  private final SignatureVerifier signatureVerifier;\n\n  public ContributionInstaller(Platform platform, SignatureVerifier signatureVerifier) {\n    this.platform = platform;\n    this.signatureVerifier = signatureVerifier;\n  }\n\n  public synchronized List<String> install(ContributedPlatform contributedPlatform, ProgressListener progressListener) throws Exception {\n    List<String> errors = new LinkedList<>();\n    if (contributedPlatform.isInstalled()) {\n      throw new Exception(\"Platform is already installed!\");\n    }\n\n    // Do not download already installed tools\n    List<ContributedTool> tools = new ArrayList<>();\n    for (ContributedTool tool : contributedPlatform.getResolvedTools()) {\n      DownloadableContribution downloadable = tool.getDownloadableContribution(platform);\n      if (downloadable == null) {\n        throw new Exception(format(tr(\"Tool {0} is not available for your operating system.\"), tool.getName()));\n      }\n      // Download the tool if it's not installed or it's a built-in tool\n      if (!tool.isInstalled() || tool.isBuiltIn()) {\n        tools.add(tool);\n      }\n    }\n\n    DownloadableContributionsDownloader downloader = new DownloadableContributionsDownloader(BaseNoGui.indexer.getStagingFolder());\n\n    // Calculate progress increases\n    MultiStepProgress progress = new MultiStepProgress((tools.size() + 1) * 2);\n\n    // Download all\n    try {\n      // Download platform\n      downloader.download(contributedPlatform, progress, tr(\"Downloading boards definitions.\"), progressListener, false);\n      progress.stepDone();\n","sourceCodeStart":66,"sourceCodeEnd":102,"githubUrl":"https://github.com/arduino/Arduino/blob/a0df6e0e83b652c72bc78b0a1376c54d6ebc3bee/arduino-core/src/cc/arduino/contributions/packages/ContributionInstaller.java#L66-L102","documentation":"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.","triggerScenarios":"install() iterates contributedPlatform.getResolvedTools() and any tool lacks a hosted contribution matching the current host OS/architecture (tool.getDownloadableContribution(platform) == null).","commonSituations":"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.","solutions":["Update the package index (and IDE) so the platform's tools include a hosted contribution for your OS.","Choose a different version of the platform/board package that publishes tool builds for your operating system.","On unsupported hosts, use an alternative toolchain setup or run the IDE on a supported OS/architecture.","Check the package_index.json hosting entries for the named tool to confirm which OS builds exist."],"exampleFix":null,"handlingStrategy":"validation","validationCode":"for (ContributedTool tool : platform.getResolvedTools()) {\n  if (tool.getDownloadableContribution(BaseNoGui.getPlatform()) == null) {\n    throw new IllegalStateException(\"Tool \" + tool.getName() + \" unavailable on this OS\");\n  }\n}","typeGuard":null,"tryCatchPattern":"try { installer.install(platform, listener); } catch (Exception e) { if (e.getMessage().contains(\"not available for your operating system\")) { reportUnsupportedHost(e); } else { throw e; } }","preventionTips":["Confirm the board package publishes tool hosting entries for your OS before installing on unusual hosts.","Keep the package index and IDE updated for new OS/architecture support.","Filter platform versions in automation by host compatibility."],"tags":["arduino","packages","platform","tools"],"backgroundTag":"unsupported-platform","analyzedSha":"a0df6e0e83b652c72bc78b0a1376c54d6ebc3bee","analyzedAt":"2026-09-06T10:13:38.901Z","contentChangedAt":"2026-09-06T10:13:38.901Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}