Tengo un problema exacto con mi placa Leonardo y Ubuntu. Agregar la regla que le dice a ModemManger que ignore todos los dispositivos USB del enlace mencionado no funcionó para mí. Sin embargo, borrar modemmanager sí lo hizo.
sudo apt-get purge modemmanager
tú primero necesita asegurarse de tener los derechos de lectura/escritura correctos, como se describe aquí, esencialmente ingrese los siguientes comandos:
$ sudo adduser <username> dialout
$ sudo chmod a+rw /dev/ttyACM0
el '/dev/ttyACM0' es el puerto al que está conectado su arduino, debe aparecer en la carpeta /dev de su raíz.
segundo: después de haber identificado a qué puerto está conectado el arduino y haber establecido los derechos correctos para este puerto, debe ejecutar el siguiente comando. No estoy seguro de lo que hace, no estoy seguro de si es realmente necesario, pero hizo que las cargas funcionaran para mí en varias ocasiones
$ sudo udevadm trigger
Encontré este comando aquí:http://starter-kit.nettigo.eu/2015/serial-port-busy-for-avrdude-on-ubuntu-with-arduino-leonardo-eth/
y tercera , encontrará que la carga a veces es un desafío de sincronización y suerte. Sigue presionando el reinicio (a veces dos veces muy seguidas) y mientras tanto presiona el botón de carga de tu boceto de arduino. En cierto momento, funcionará. Tuve más suerte al cambiar constantemente pequeñas piezas en el código, así que cuando presioné 'cargar', primero tenía que compilar el código.
https://www.arduino.cc/en/Guide/Troubleshooting#upload
en algunas computadoras, es posible que deba presionar el botón de reinicio
Nunca me he metido con el gestor de arranque, ni con los pines ICSP y demás (afortunadamente)
También eche un vistazo al foro de Arduino o al enlace proporcionado por usted mismo
La solución que siempre funcionó para mí es ir a Tools -> Port -> /dev/ttyACMx
y haga clic en el puerto seleccionado de nuevo.
Después de eso, IDE carga el código sin problemas.