Memoteki

メモ的な何か。https://memoteki.net/about をお読みください。

How-to

Arduinoに書き込めない問題を修正する方法[invalid device signature]

2018/05/02

ArduinoIDEからスケッチをアップロードしようとすると、以下のようなエラーが出てアップロードできませんでした。
boards.txtを修正して対処したのでその方法をメモしておきます。

avrdude: Yikes!  Invalid device signature.
         Double check connections and try again, or use -F to override
         this check.

----2017年12月24日追記----
タイトルを変更しました。
旧タイトル「ArduinoIDEのスケッチがアップロードできないエラー」

このエラーは2013年1月に発生したエラーです。
まだArduinoIDEのバージョンが1.Xになる前の話です。
2017年12月現在、同じ(原因による)エラーには遭遇していません。
----追記ここまで----

概要

ArduinoIDEからスケッチをアップロードしようとすると、以下のようなエラーが出てアップロードできませんでした。
boards.txtを修正して対処したのでその方法をメモしておきます。
なお、このエラーは様々な原因が起因して発生します。この方法以外で解決する場合も多くあります。
今後このboards.txtの内容が原因で書き込みできない問題が発生した際のためにこのメモを残します。

avrdude: Yikes!  Invalid device signature.
         Double check connections and try again, or use -F to override
         this check.

調査

「ちびでぃ~の壱」(Arduinoクローン)で試してみても同じエラーが出ることが確認されたので、少し調べてみました。
すると、".upload.protocol"の設定がArduino 0023とArudino 1.0.3では異なるということがわかりました。

Arduino 0023のboards.txt

##############################################################
atmega8o8.name=[Optiboot] ATmega8 8MHz
atmega8o8.upload.protocol=stk500
atmega8o8.upload.maximum_size=7680
atmega8o8.upload.speed=115200
atmega8o8.bootloader.low_fuses=0x94
atmega8o8.bootloader.high_fuses=0xDC
atmega8o8.bootloader.path=optiboot
atmega8o8.bootloader.file=optiboot_atmega8-8m.hex
atmega8o8.bootloader.unlock_bits=0x3F
atmega8o8.bootloader.lock_bits=0x0F
atmega8o8.build.mcu=atmega8
atmega8o8.build.f_cpu=8000000L
atmega8o8.build.core=arduino
##############################################################

http://tiisai.dip.jp/?p=1413

Arduino 1.0.3のboards.txt

##############################################################
atmega8o8.name=[Optiboot] ATmega8 RC8MHz

atmega8o8.upload.protocol=arduino
atmega8o8.upload.maximum_size=7680
atmega8o8.upload.speed=115200

atmega8o8.bootloader.low_fuses=0x94
atmega8o8.bootloader.high_fuses=0xDC
atmega8o8.bootloader.path=optiboot
atmega8o8.bootloader.file=optiboot_atmega8-8m.hex
atmega8o8.bootloader.unlock_bits=0x3F
atmega8o8.bootloader.lock_bits=0x0F

atmega8o8.build.mcu=atmega8
atmega8o8.build.f_cpu=8000000L
atmega8o8.build.core=arduino
atmega8o8.build.variant=standard
##############################################################

http://tiisai.dip.jp/?page_id=2109

この問題はArduinoのフォーラムでも取り上げられていました。

http://arduino.cc/forum/index.php?topic=89714.0

どうやらバージョンによって使えたり、使えなかったりするようです。

ArduinoのGitHubをのぞいてみると、以下のコミットで"upload.protocol"を"stk500"から"arudino"に変更していました。

boards.txtを使い回ししていたことが原因で今回のエラーが発生したことがわかりました。

https://github.com/arduino/Arduino/commit/bd823bf2013e499877b48ca3c22cef2d86bc88a6

まとめ

2013年1月現在、最新版であるArudinoIDE 1.0.3のboards.txtではstk500をupload.protocolとして指定しません。
"Yikes! Invalid device signature."とアップロードエラーが出た場合はupload.protocolを確認してみてください。
ArudinoIDE 1.0.3ではupload.protocolに「arduino」を指定します。

-How-to
-, , , , ,