Arduino Uno R4 Minimaで作業をしていたら、急に書き込み時にエラーが出るようになり、スケッチの書き替えができなくなってしまいました。
この時の対処法を紹介します。Arduino Uno R4 Wifiでもたぶん使えると思います。
起きたこと
コンパイル完了後、「書き込み中」の表示になってから妙に時間がかかった後、こんなメッセージが出ます。

dfu-util 0.11-arduino4 Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc. Copyright 2010-2021 Tormod Volden and Stefan Schmidt This program is Free Software and has ABSOLUTELY NO WARRANTY Please report bugs to http://sourceforge.net/p/dfu-util/tickets/ Opening DFU capable USB device... Device ID 2341:0069 Run-Time device DFU version 0101 Claiming USB DFU (Run-Time) Interface... Setting Alternate Interface zero... Determining device status... Failed to retrieve language identifiers Failed to retrieve language identifiers error get_status: LIBUSB_ERROR_TIMEOUT Failed uploading: uploading error: exit status 74
最後の4行がエラーですね。
どうもシリアル通信を使ったプログラムで、書き込み時にArduino内の旧スケッチが大量のシリアルを出力しているとこうなるらしいです。
ただ僕が試してみたところ、シリアルモニタをひらいているかどうかも関係がある気がします。
なので…
対処法1
- シリアルモニタをひらいている場合は閉じる
- Arduinoをリセットする(USBケーブルを抜き差しするか、ボード上のRESETボタンを押す)
- 再度書き込む
で直るときは直ります。ただこれでも直らないときもありました。その場合は…
対処法2
- ボード上のRESETボタンを素早く二度押しする
- ボタンが固いので意外に難しい…!
- 成功するとボード上のオレンジのLED(「L」って書いてあるやつ)が、ぼやーんとソフトに点滅します
- 再度書き込む
これで直ると思います。
以降はこれまでどおり普通に使うことができます。
この操作は何?
RESETボタンを二度押しするとセットアップモードというのに入り、スケッチの実行が行われなくなるみたいです。なので旧スケッチのシリアル出力に邪魔されることなく書き込みができるようですね。
そもそもの原因はスケッチが大量のデータを送っていることにあるので、繰り返し起きる場合はプログラムを見直した方がよさそうです。
なお、この二度押しはそもそもボードが認識されなくなってしまった時も使えるようです。
参考:Arduino UNO R4に書き込めなくなったらDFUモードを使え | jh4vaj
上記ページによると、そのときは二度押し後に

この見慣れないアイコンのボードを選んでスケッチを書き込むと直るとのこと。対処法2の途中でもこのボードは表示されるので、興味がある人は試してみてもよいと思います(試しました)。
以上です。