arduino/Arduino · error · RunnerException
Network upload using programmer not supported
Error message
Network upload using programmer not supported
What it means
SSHUploader.uploadUsingPreferences rejects uploads made with 'Upload Using Programmer' because programming over the SSH/network path is not implemented. Uploading via a programmer requires direct hardware (serial/ISP) access.
Source
Thrown at arduino-core/src/cc/arduino/packages/uploaders/SSHUploader.java:84
public SSHUploader(BoardPort port) {
this.port = port;
}
@Override
public boolean requiresAuthorization() {
return true;
}
@Override
public String getAuthorizationKey() {
return "runtime.pwd." + port.getAddress();
}
@Override
public boolean uploadUsingPreferences(File sourcePath, String buildPath, String className, boolean usingProgrammer, List<String> warningsAccumulator) throws RunnerException, PreferencesMapException {
if (usingProgrammer) {
throw new RunnerException(tr("Network upload using programmer not supported"));
}
TargetPlatform targetPlatform = BaseNoGui.getTargetPlatform();
PreferencesMap prefs = PreferencesData.getMap();
PreferencesMap boardPreferences = BaseNoGui.getBoardPreferences();
if (boardPreferences != null) {
prefs.putAll(boardPreferences);
}
String tool = prefs.getOrExcept("upload.tool");
if (tool.contains(":")) {
String[] split = tool.split(":", 2);
targetPlatform = BaseNoGui.getCurrentTargetPlatformFromPackage(split[0]);
tool = split[1];
}
prefs.putAll(targetPlatform.getTool(tool));
boolean coreMissesRemoteUploadTool = targetPlatform.getTool(tool + "_remote").isEmpty();
View on GitHub (pinned to a0df6e0e83)
Solutions
- Use a normal (non-programmer) upload over the network connection
- Connect via USB and select the serial port before using Upload Using Programmer
- Attach the programmer locally and select it under Tools > Programmer
Example fix
// before ide.menu: Sketch > Upload Using Programmer (network port selected) // after ide.menu: Sketch > Upload (network port) OR Upload Using Programmer with USB serial port selected
Defensive patterns
Strategy: try-catch
Validate before calling
// Guard: programmer upload requires non-network port
boolean networkPort = port.getAddress().contains("@");
if (usingProgrammer && networkPort) {
throw new IllegalStateException("Upload Using Programmer needs a USB serial port");
} Try / catch
try {
uploader.uploadUsingPreferences(src, build, cls, usingProgrammer, warnings);
} catch (RunnerException e) {
if (e.getMessage().contains("using programmer not supported")) {
// retry without usingProgrammer or switch to serial port
}
} Prevention
- Use plain Upload for network boards
- Select a USB port before Upload Using Programmer
- Attach programmers locally, not via network boards
When it happens
Trigger: Invoking Sketch > Upload Using Programmer while a network board/port (SSH-based uploader) is selected — i.e. usingProgrammer=true on SSHUploader.
Common situations: Users trying to push a sketch through an ISP programmer routed via a network-connected board; confusing the network upload with programmer-based upload workflows.
Understand the failure class
Background: UnsupportedOperationException and "is not supported" errors: when a library deliberately refuses a call — this error's family across 30 libraries.
Related errors
- Burning bootloader is not supported via network!
- Unable to connect to {0}
- Can't burn bootloader via SSH
- Please select a programmer from Tools->Programmer menu
- CRC doesn't match, file is corrupted. It may be a temporary
AI-assisted analysis of arduino/Arduino@a0df6e0e83 (2026-09-06).
Data as JSON: /api/errors/f2467c9ca6f9f856.
Report an issue: GitHub.