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

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
##############################################################
Arduino 0023 でoptibootに染まってみる « ちっちゃいものくらぶ

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
##############################################################
ちびでぃ~の壱 の作り方 « ちっちゃいものくらぶ

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

Arduino Ethernet: ethernet.upload.protocol "stk500" vs "arduino" ?
Arduino Ethernet: ethernet.upload.protocol "stk500" vs "arduino" ?

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

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

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

Changing Ethernet upload protocol from stk500 to arduino. · arduino/Arduino@bd823bf

まとめ

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

コメント

  1. […] 前回はソフトウェア側の問題でアップロードできなかったが、今回はハードウェア側のミスでアップロードできなかったのでメモ。 ArduinoIDEのスケッチがアップロードできないエラー | チラ裏的なにか […]

  2. tays より:

    なのぼ〜どAGのファームウェア書き込みで同じ現象が出ました。
    ArduinoIDEのバージョンは1.0.5でした。
    こちらの記事のとおり、boards.txtのprotocolをstk500からarduinoにしたところ、無事ArduinoIDEからの書き込みができるようになりました。
    ありがとうございました。