{"record":{"id":"b1661624a0d817cf","repo":"arduino/Arduino","slug":"can-t-burn-bootloader-via-ssh","errorCode":null,"errorMessage":"Can't burn bootloader via SSH","messagePattern":"Can't burn bootloader via SSH","errorType":"exception","errorClass":"RunnerException","httpStatus":null,"severity":"error","filePath":"arduino-core/src/cc/arduino/packages/uploaders/SSHUploader.java","lineNumber":245,"sourceCode":"      return;\n    }\n\n    for (File file : files) {\n      if (!FILES_NOT_TO_COPY.contains(file.getName())) {\n        if (file.isDirectory() && file.canExecute()) {\n          scp.startFolder(file.getName());\n          recursiveSCP(file, scp);\n          scp.endFolder();\n        } else if (file.isFile() && file.canRead()) {\n          scp.sendFile(file);\n        }\n      }\n    }\n  }\n\n  @Override\n  public boolean burnBootloader() throws RunnerException {\n    throw new RunnerException(\"Can't burn bootloader via SSH\");\n  }\n\n}\n","sourceCodeStart":227,"sourceCodeEnd":249,"githubUrl":"https://github.com/arduino/Arduino/blob/a0df6e0e83b652c72bc78b0a1376c54d6ebc3bee/arduino-core/src/cc/arduino/packages/uploaders/SSHUploader.java#L227-L249","documentation":"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.","triggerScenarios":"Selecting Burn Bootloader while a network (SSH-based) board port such as a Yún at an IP address is the active port.","commonSituations":"Users of network-attached boards attempting to recover/reflash the bootloader remotely.","solutions":["Connect the board over USB and select the serial port, then burn the bootloader","Use a dedicated ISP programmer (e.g. USBasp, another Arduino as ISP) wired to the board's ICSP header"],"exampleFix":"// before\nport: yun@192.168.240.1 -> Burn Bootloader\n// after\nport: /dev/ttyACM0 with ISP programmer attached -> Burn Bootloader","handlingStrategy":"validation","validationCode":"if (port.getAddress().contains(\"@\")) {\n    throw new IllegalStateException(\"Burn Bootloader requires a serial port + ISP, not SSH\");\n}","typeGuard":null,"tryCatchPattern":"try {\n    uploader.burnBootloader();\n} catch (RunnerException e) {\n    if (e.getMessage().contains(\"via SSH\")) {\n        // switch to serial port with ISP programmer attached\n    }\n}","preventionTips":["Restrict bootloader operations to serial ports","Wire an ISP programmer (USBasp / Arduino-as-ISP) for bootloader tasks","Document network-board limitations for your team"],"tags":["bootloader","ssh","network","unsupported"],"backgroundTag":"unsupported-operation","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"}