何らかの理由で Arduino がシリアルポートとして認識されなくなってしまった場合に、ATmega16U2 のファームウェアを焼き直して、修復する方法です。
日本語でまとまった資料がなかったので、備忘録としてまとめておきます。
なお
- OS X
- Arduino Uno R3
を前提としています。
dfu-programmer のインストール
ファームウェアを書き込むためのソフトウェアをインストールしておきます。
$ brew install dfu-programmer
修復する
DFU モードにする
Arduino を PC に接続してから、下記の RESET と GND を短絡します。3 秒ほど待ってからはずして DFU モードにします。
ファームウェアを書き込む
ファームウェアは Arduino IDE に同梱されているので、それを利用します。
$ cd /Applications/Arduino.app/Contents/Java/hardware/arduino/avr/firmwares/atmegaxxu2/arduino-usbserial/
$ dfu-programmer atmega16u2 erase
$ dfu-programmer atmega16u2 flash Arduino-usbserial-atmega16u2-Uno-Rev3.hex
$ dfu-programmer atmega16u2 reset
修復を確認する
Arduino を PC につなぎ直して正しく認識することを確認します。