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
- 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.
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
- 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.
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
- Platform is already installed!
- Could not find tool {0} from package {1}
- Could not find tool {0}
- Board is not selected
- Can't download {0}: invalid filename or exinsting directory
AI-assisted analysis of arduino/Arduino@a0df6e0e83 (2026-09-06).
Data as JSON: /api/errors/3139ff6928bfae30.
Report an issue: GitHub.