
Ecco una delle domande che mi sono state fatte ed è forse tra le più comuni:
“Prof, quando provo a caricare lo sketch compare avrdude: stk500_getsync(); che cosa vuol dire?”
questo errore spaventa molto, la scorsa settimana uno studente mi ha detto: “Prof. ho bruciato Arduino!!” 🙂
Nella maggior parte dei casi non indica una scheda “morta”: significa semplicemente che il computer non sta riuscendo a comunicare correttamente con Arduino durante il caricamento del programma.
Risposta
L’errore avrdude: stk500_getsync() compare quando l’IDE prova a trasferire lo sketch alla scheda, ma non riceve la risposta attesa dal bootloader o dall’interfaccia di programmazione seriale. In pratica, il caricamento non parte perché PC e scheda non sono “in sincronia”.
Spesso il messaggio compare insieme a righe come queste:
avrdude: stk500_recv(): programmer is not responding avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x00
Quel resp=0x00 è un indizio tipico: il computer sta tentando di dialogare con la scheda, ma non riceve la risposta corretta.
Che cos’è avrdude
avrdude è il programma che Arduino IDE usa per caricare il codice su molte schede basate su microcontrollori AVR, come UNO classica, Mega e Nano classica. Quando compare questo errore, non è l’IDE che “si è bloccato”: è l’utility di upload che segnala un problema di comunicazione.
Le cause più comuni
Nella pratica, le cause più frequenti sono quasi sempre queste:
01. Scheda sbagliata selezionata nell’IDE
Se in Strumenti > Scheda è impostato un modello diverso da quello realmente collegato, il caricamento può fallire. Arduino indica esplicitamente di controllare prima di tutto che scheda e porta siano corrette.
02. Porta seriale errata
Può succedere di avere selezionato una porta vecchia, una porta non più attiva oppure la porta di un altro dispositivo. Anche questo è uno dei controlli principali suggeriti dal supporto Arduino.
03. Cavo USB inadatto o difettoso
Un caso molto più comune di quanto si pensi: alcuni cavi USB servono solo per l’alimentazione e non trasferiscono dati. In altri casi il cavo dati è semplicemente guasto. Arduino raccomanda di provare un altro cavo e di verificare che sia davvero un cavo dati.
04. Porta occupata da un altro programma
Se la porta seriale è già in uso da un monitor seriale, da un’altra finestra dell’IDE o da un altro software, l’upload può non andare a buon fine. Arduino consiglia di chiudere le altre istanze dell’IDE, i monitor seriali e gli altri programmi che possono bloccare la porta.
05. Qualcosa collegato ai pin 0 e 1
Sulle schede AVR classiche, i pin 0 (RX) e 1 (TX) sono usati anche per la comunicazione seriale durante il caricamento. Se su quei pin è collegato un modulo, un sensore o un circuito esterno, la comunicazione può essere disturbata. Scollegate tutto ciò che non è indispensabile, in particolare proprio da RX e TX.
06. Processore errato nel caso del Nano classico
Per il classic Nano, il supporto Arduino raccomanda anche di controllare la voce Strumenti > Processore, perché un’impostazione sbagliata può causare errori di upload.
07. Problema di bootloader o di interfaccia seriale
Se i controlli di base non risolvono, per alcune schede classiche, un loopback test per verificare la parte USB-seriale. Se il test passa oppure non è applicabile, una possibile soluzione è riscrivere il bootloader.
La cosa importante da capire
Questo errore non significa automaticamente che Arduino sia rotto. Molto spesso il problema è molto più semplice: selezione sbagliata della scheda, porta sbagliata, cavo inadatto, porta occupata o interferenze esterne ed è proprio questo il motivo per cui conviene affrontarlo con metodo, senza cambiare tutto a caso.
Una procedura semplice da seguire
Quando compare avrdude: stk500_getsync(), consiglio di procedere sempre in questo ordine:
Passo 1 – Verificare che lo sketch compili
Premete Verifica e controllate che non ci siano errori di compilazione. Arduino distingue chiaramente i problemi di compilazione da quelli di upload.
Passo 2 – Controllare scheda e porta
Andate in Strumenti > Scheda e Strumenti > Porta e assicurati che corrispondano davvero alla scheda collegata. Un buon trucco è scollegare e ricollegare Arduino per vedere quale porta compare o scompare.
Passo 3 – Cambiare cavo USB
Se avete un dubbio, prova subito un altro cavo. È uno dei controlli più rapidi e più spesso risolutivi.
Passo 4 – Scollegare tutto dalla scheda
Rimuovete jumper, shield, moduli e in particolare qualsiasi cosa sia connessa ai pin 0 e 1. Poi riprovate il caricamento.
Passo 5 – Chiudere monitor seriale e altri programmi
Chiudete monitor seriale, plotter seriale, altre finestre dell’IDE e software che potrebbero usare la stessa porta. Se necessario, riavviate il computer.
Passo 6 – Premere RESET e riprovare
Provate a resettare la scheda con il pulsante RESET e poi tentare di nuovo l’upload.
Passo 7 – Se usate un Nano classico, controllare il processore
Nel caso del Nano classico, verifica anche la voce Strumenti > Processore.
Quando il problema è più serio
Se dopo tutti questi controlli l’errore resta, allora conviene prendere in considerazione due possibilità:
- un problema nella conversione USB-seriale;
- un bootloader danneggiato o mancante.
Nel caso delle schede classiche compatibili con il test, è il caso di fare il loopback test. Se la parte seriale risulta a posto, allora può avere senso riscrivere il bootloader usando un altro Arduino come programmatore.
Ma cos’è il loopback test
Il loopback test è una prova di diagnostica che serve a verificare se la comunicazione seriale tra computer e scheda Arduino funziona correttamente, in particolare la parte gestita dal convertitore USB-seriale della scheda è semplicemente una procedura per testare la comunicazione seriale tra PC e scheda.
Detto in modo semplice:
si “fa tornare indietro” immediatamente tutto ciò che il computer invia alla scheda. Se scrivete un testo nel Monitor Seriale e lo rivedete comparire subito, significa che quella parte della comunicazione sta funzionando.
Il test serve soprattutto a capire dove si trova il problema quando compare un errore di upload come avrdude: stk500_getsync().
- Se il loopback test fallisce, il problema è molto probabilmente nella parte USB-seriale della scheda o nella comunicazione con il PC. Ciò indica con molta probabilità un adattatore USB-to-TTL seriale danneggiato.
- Se il loopback test riesce, vuol dire che la scheda comunica con il computer, ma può esserci un problema diverso, ad esempio il bootloader mancante o corrotto.
Su quali schede si può eseguire:
- Arduino UNO R3 e revisioni precedenti
- Arduino UNO R3 SMD
- Arduino Mega 2560 Rev3 e precedenti
- Arduino Mega ADK Rev3
- Arduino Nano classico
Come si esegue:
- scollegare la scheda dal computer;
- rimuovere shield, moduli e altri collegamenti;
- collegare RESET a GND;
- collegare RX a TX;
- ricollegare la scheda al computer;
- aprire IDE o Cloud Editor;
- aprire il Monitor Seriale;
- scrivere un messaggio e inviarlo. Se il messaggio ritorna subito in uscita, il test è superato.


Perché si collega RESET a GND
Perché così il microcontrollore principale viene tenuto fermo e non esegue nessuno sketch. In questo modo si testa solo il percorso di comunicazione seriale, senza che il programma utente interferisca. Questa è un’inferenza coerente con la procedura ufficiale, che richiede proprio il ponticello RESET-GND insieme a RX-TX.
Perché si collega RX a TX
Perché tutto ciò che entra in ricezione viene immediatamente rimandato in trasmissione: è questo il “ritorno” del loopback. Se inviate, per esempio, ciao, dovreste leggere di nuovo ciao nel monitor seriale.
Attenzione!
Il loopback test fallisce sempre con il chip CH340 usato su alcune schede derivate o compatibili, quindi in quei casi non va interpretato come prova certa di guasto.
Ricordate
Il loopback test è una prova molto utile per rispondere a questa domanda:
“Il computer riesce almeno a parlare correttamente con l’interfaccia seriale della scheda?”
Checklist di controllo
Vi condivido la checklist rapida da tenere a mente quando si verifica il problema avrdude: stk500_getsync():
- scheda selezionata correttamente;
- porta corretta;
- cavo USB dati funzionante;
- nessun modulo collegato ai pin 0 e 1;
- monitor seriale chiuso;
- reset della scheda;
- nel Nano classico, processore corretto.
Buon Making a tutti 🙂















