Mettre à jour le firmware USB de l'Arduino Uno et Mega
Les Arduino récents, Uno et Mega, comportent une puce Atmel Mega8U2 qui fait office de convertisseur USB / Serie.
Récemment, je suis tombé sur un bug lié à cette puce Mega8U2, qui visiblement ne se produit que sur les systèmes GNU/Linux. Les symptômes sont les suivants :
- Le périphérique /dev/ttyACM0 ne répond plus,
- L'IDE Arduino freeze pendant plusieurs secondes,
- Il faut parfois plus de 4-5 fois pour réussir à programmer l'Arduino
En parcourant les forums, je suis tombé sur ce topic, en anglais, où la solution à ce problème est donné par stimmer. Je vais donc traduire en français la marche à suivre pour la résolution, en espérant que cela puisse servir à d'autres !
ATTENTION ! Je vous encourage à bien vous renseigner sur la procédure, car elle peut être risquée pour un néophyte.
Préparation de la carte : sur l'Arduino Uno, il faut souder une résitance de 100 kΩ aux bornes des pastilles entourées en rouge sur la photo suivante (au dos de la carte) :
Installer le paquet dfu-programmer qui va permettre de reprogrammer la puce :
# aptitude install dfu-programmer
Télécharger le binaire correspondant à votre carte (Uno ou Mega) sur le site suivant : https://github.com/arduino/Arduino/tree/new-extension/hardware/arduino/firmwares/arduino-usbserial (clic sur le fichier, puis clic droit sur le bouton "Raw" et Enregistrer Sous) : * Arduino-usbserial-uno.hex pour l'Arduino Uno * Arduino-usbserial-mega.hexpour l'Arduino Mega
Brancher l'Arduino au PC avec le câble USB.
Faire contact entre les deux pins entourées en rouge sur la photo suivante :
Cette opération permet de faire un reset de la puce Mega8U2. L'Arduino ne doit alors plus apparaître dans /dev/ :
# ls /dev/ttyACM*
Ne doit rien afficher.
Ensuite, il n'y a plus qu'à flasher la puce avec les commandes suivantes (à faire en root) :
# dfu-programmer at90usb82 erase # dfu-programmer at90usb82 flash --debug 1 Arduino-usbserial-uno.hex Validating... 4058 bytes used (99.07%) # dfu-programmer at90usb82 reset
Il n'y a alors plus qu'à débrancher puis rebrancher l'Arduino, et tous les bugs cités en introduction seront normalement résolus !
[Sources]
Commentaires
Pour commenter cet article, merci de m'écrire directement par mail :