arduino/Arduino · error · RunnerException

Can't burn bootloader via SSH

Error message

Can't burn bootloader via SSH

What it means

SSHUploader.burnBootloader unconditionally throws this RunnerException. Bootloading writes to the MCU's fuses/bootloader over a hardware programmer and cannot be performed through the SSH/network uploader used for network boards.

Source

Thrown at arduino-core/src/cc/arduino/packages/uploaders/SSHUploader.java:245

      return;
    }

    for (File file : files) {
      if (!FILES_NOT_TO_COPY.contains(file.getName())) {
        if (file.isDirectory() && file.canExecute()) {
          scp.startFolder(file.getName());
          recursiveSCP(file, scp);
          scp.endFolder();
        } else if (file.isFile() && file.canRead()) {
          scp.sendFile(file);
        }
      }
    }
  }

  @Override
  public boolean burnBootloader() throws RunnerException {
    throw new RunnerException("Can't burn bootloader via SSH");
  }

}

View on GitHub (pinned to a0df6e0e83)

Solutions

  1. Connect the board over USB and select the serial port, then burn the bootloader
  2. Use a dedicated ISP programmer (e.g. USBasp, another Arduino as ISP) wired to the board's ICSP header

Example fix

// before
port: yun@192.168.240.1 -> Burn Bootloader
// after
port: /dev/ttyACM0 with ISP programmer attached -> Burn Bootloader
Defensive patterns

Strategy: validation

Validate before calling

if (port.getAddress().contains("@")) {
    throw new IllegalStateException("Burn Bootloader requires a serial port + ISP, not SSH");
}

Try / catch

try {
    uploader.burnBootloader();
} catch (RunnerException e) {
    if (e.getMessage().contains("via SSH")) {
        // switch to serial port with ISP programmer attached
    }
}

Prevention

When it happens

Trigger: Selecting Burn Bootloader while a network (SSH-based) board port such as a Yún at an IP address is the active port.

Common situations: Users of network-attached boards attempting to recover/reflash the bootloader remotely.

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


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