ESP32 ( ESP-WROOM-32 , M5Stack )自分的 トラブルシューティング まとめ

arduino_esp32_trouble00 ESP32 ( ESP-WROOM-32 )

【目次ページへ】

11.Arduino – ESP32 でコンパイルした時に、コンパイラメッセージ欄に「libraries\BLE に、無効なライブラリ 」と表示される場合の対処法

最新版 Arduino core for ESP32 をインストールして、新たにスケッチをコンパイルすると、コンパイルは通るのですが、IDE のコンパイラメッセージに下図の様に表示される場合があります。

C:\Users\USER-NAME\Documents\Arduino\hardware\espressif\esp32\libraries\BLE」に、無効なライブラリ「C:\Users\USER-NAME\Documents\Arduino\hardware\espressif\esp32\libraries\BLE」があります。

原因

2017/10/15頃、GitHub の Arduino core for ESP32 の Bluetooth ( BLE )ライブラリが新たに追加されました。
ただ、このライブラリだけ、別の GitHub ユーザーのリポジトリに存在するようになっていました。
ESP32 kolban books で有名な、kolbanさんが作っているようです。
その為、ZIPファイルをダウンロードしても BLE ライブラリフォルダがダウンロードされないようになってしまいました。
将来的には恐らく統合される可能性はあります。

対策

Bluetooth および BLE ライブラリを使わないのであれば、このメッセージは無視しても問題ありません。
コンパイル書き込みは実行されます。

どうしてもこのメッセージを消したければ、以下の記事の最後の方に方法を記述していますのでご参照ください。

Arduino core for the ESP32 のインストール方法

12.A fatal error occurred: Timed out waiting for packet content または Timed out waiting for packet header というメッセージが出て、コンパイルできない

まず、Arduino core for the ESP32 でコンパイルする時、A fatal error occurred というエラーが出て、コンパイル書き込みできない時があります。
この次のメッセージには私が知るところによると、3種類メッセージが出ました。
まず、特に、M5Stack を使った時に発生しやすい以下のメッセージです。

A fatal error occurred: Timed out waiting for packet header

原因その1

M5Stack の場合、シリアル通信系の GPIO に何かしらの通信ジャンパーワイヤーが接続されていると起こります。
私の場合は、GPIO #2 に SPI 通信用の CS を接続していました。
その状態でコンパイル書き込みしようとするとエラーになります。

対策その1

コンパイル書き込みするときだけ、その GPIO ピンを外すことです。
コンパイル書き込みが終了してから、再度接続して再起動してください。
GPIO #1~#3 はコンパイル書き込み時は外すか、そこにアサインしない方が無難と思われます。

その他、Arduino IDE に下図の様なメッセージが出て、コンパイル書き込みができない場合があります。

A fatal error occurred: Timed out waiting for packet content

原因その2

コンパイルは通っても、ESP-WROOM-32 ( ESP32 ) に USB シリアルで書き込みができないようです。
2017/09頃~12月頃までは特に問題無かったのですが、Arduino core for the ESP32 の以下のバージョンでは、このエラーが顕著に出るようになりました。

●Commits on Dec 19, 2017 バージョン
●Commits on Jan 18, 2018 バージョン
●Commits on Jan 19, 2018 バージョン
●Commits on Jan 23, 2018 バージョン

対策その2

1回目の書き込みは失敗しますが、再度続けてコンパイル書き込みを実行すれば問題ありません。

どうしてもこのメッセージが嫌な方は、もっと古いバージョンをインストールし直せば良いと思います。
旧バージョンのインストール方法については以下の記事を参照してください。

旧バージョン Arduino – ESP32 のインストール方法

また、ESP32 の Chip Revision が 最新のものでは 1 になっているので、それを使えばこのエラーは出ないかも知れません。

また、何回やってもこのエラーメッセージが出てコンパイルできない場合は、別の原因が考えられます。
以前、某雑誌の付録ボードを使った方がこのメッセージで悩んでおられました。
ボード側のUSB-シリアル変換回路の問題や、電源容量が足りない回路だった、などのように記憶しています。


原因その3

M5StackやM5Stack Fireの場合、M5Stack側のUSB-TypeCコネクタの上下を逆に挿していると、Arduino IDEでコンパイル書き込みする時に、以下の書き込みエラーが出る場合があります。

A fatal error occurred: Timed out waiting for packet content

対策その3

M5StackのUSB-TypeCコネクタには上下方向があるようです。
USB-TypeCコネクタを上下逆に挿して、再度コンパイル書き込みしてみてください。

原因その4

ESP32関連ボードでWiFiを使っていて、何度もコンパイル書き込みしていると、パソコンのUSBポートおよびUSBハブのポートが故障または不具合が起きる場合があるようです。
私の勝手な想像ですが、USBポートに大きな電流が流れて、USBポートの一部のパーツが故障したのかも知れません。

対策その4

USBポートを別のポートに変えてみる。
ただ、もしかすると将来的にそのポートも故障する可能性があるかも知れません。
また、大電流にも耐えられる信頼性の高いメーカーのUSBハブに交換すると良いかも知れません。

私の場合は、もう5年くらいESP32で一部のUSBポートを酷使したので、別のポートに変えたら書き込みできるようになりました。

13.A fatal error occurred: Invalid head of packet (‘F’) とメッセージが出て、コンパイルできない

Arduino core for the ESP32 で、コンパイルすると以下のようなメッセージが出てコンパイルできない場合があります。

A fatal error occurred: Invalid head of packet ('F')

同じようなエラーとして、以下の様な場合もあります。

A fatal error occurred: Failed to calculate md5sum (result was 8080)

原因

この原因も前項と殆ど同じです。
Arduino core for the ESP32 の以下のバージョンから、コンパイル書き込みが1回で成功できなくなりました。

●Commits on Dec 19, 2017 バージョン
●Commits on Jan 18, 2018 バージョン
●Commits on Jan 19, 2018 バージョン
●Commits on Jan 23, 2018 バージョン

これ以前の2017の9月頃からは特に問題無く書き込めていたのですが、バージョンアップして何かしら不具合が出たものと思われます。

対策

恐らく、コンパイルはできても、ESP32 への書き込みが出来ないだけだと思われます。
よって、もう一度コンパイル書き込みしてみてください。
2回目は成功すると思います。

14.「○○.h」に対して複数のライブラリが見つかりました。というメッセージが出て、コンパイルできない

例えば、Arduino IDE のコンパイルを実行して、

「WiFi.h」に対して複数のライブラリが見つかりました

というメッセージが出て、コンパイルできないことがあります。

原因

これは実は、ご自分のスケッチ(プログラム)の単なる記述ミスであることが殆どです。
Arduino UNO 用の WiFi ライブラリと、ESP32 用の WiFi ライブラリが重複したエラーと勘違いして、Arduino 純正 WiFi ライブラリを削除しても意味ありません。
何でこんなメッセージが出るのかは不明です。
どうしても知りたければ、Espressif Systemの Arduino core for ESP32 開発チームに問い合わせるしかありません。

対策

このメッセージの前に大抵、プログラム中のエラー個所がメッセージで表示されているはずです。
表示されていなければ、Arduino IDE の「ファイル」メニューの、「環境設定」を開いて下さい。
下図の様に、コンパイラの警告を「全て」にしてください。

こうすると、プログラム中のどこがエラーなのかが、詳細なメッセージで見えます。

例えば、

collect2.exe: error: ld returned 1 exit status

と出ていた場合、は以下を参照してください。
28.Arduino-ESP32で、collect2.exe: error というエラーが出てコンパイルできない

その部分を修正して、プログラムミスが無くなれば、「複数のライブラリが見つかりました」というメッセージは表示されずにコンパイルできると思います。

Arduino core for the ESP32 のライブラリと、Arduino 純正ライブラリとは競合しないように出来ていますので、勘違いしないようにしてください。

15.最新版 Arduino – ESP32 をインストールしたら、うまく動作しない(旧バージョンのインストール方法)

GitHub の 最新版 Arduino core for the ESP32 は、いろいろと動作不良の場合が多々あります。
オープンソース無保証なので、仕方ありません。

対策

正常に動作した旧バージョンの Arduino core for the ESP32 に再インストールし直すことです。
正常に動作したころの Arduino core for the ESP32 はパソコンに保存しておくことをお勧めします。

旧バージョンの Arduino core for the ESP32 のインストール方法は以下の記事を参照してください。

旧バージョン Arduino – ESP32 のインストール方法

【目次ページへ】

コメント

  1. H.W より:

    mgo-tecさん、H.Wです。
    本件記事中の’ESP32トラブルシューティング’の件で、以下ご教示下さい。

    M5stackで当初からスケッチの書込み時に’connecting…—…—…’が永遠に継続し、取りあえずその対処方法として、BOTTOM基板コネクタのRSTとGND間に1.5〜3.3μFのコンデンサを挿入し、この対処法で1ヶ月程継続対応して特に問題なかったのですが、ー昨日、スケッチ書込み時に突然画面が消え、その後リセットを何度繰り返しても全く再起動しなくなってしまいました。。。

    考えられる原因として、BOTTOM基盤の勘合が当初から多少緩く、接触不良or外れていた可能性があります。また、例のマグネット式USBケーブルの接触不良で書込み時の電圧が低下していた可能性もあります。

    目下、購入元のスイッチサイエンスにもこれ迄の経緯も含め、その旨対処方法を問い合わせ中ですが、目下のところ回答が貰えていません…

    この様な状態になってしまったら、ファームウェアを書き直す以外に方法はないのでしょうか?
    またファームウェアを書き直す場合、具体的な手順はどうしたらいいのでしょうか?

    ご多忙中、誠に申し訳ありませんが、ご教示頂けると幸いです。

    • mgo-tec mgo-tec より:

      H.Wさん

      それはそれは面倒なことになりましたね。
      私にも正直分かりませんが、H.Wさんがおそらくおっしゃる通り、スケッチ書き込み中に電源が落ちたということは、ファームが壊れた可能性大ですね。
      粗悪 USB ケーブルは思いのほかインピーダンスが高く、瞬時大電流で思いのほか電圧降下するので、それが原因の可能性もありますね。
      ファームの書き換え方法については私はよく知りませんが、ネットでは情報が沢山あると思います。
      早く治って欲しいですね。

      因みに、私の M5stack で Windows10 環境の場合、最近はUSB書込みに苦労することはありませんでした。
      もしかしたら、H.W さんの今までの書き込み不良はUSBケーブルだったということも考えらそうな気がします。

      ということで、あまりお役に立てる回答ができず申し訳ございません。

  2. H.W より:

    mgo-tecさん、
    早速のご連絡有難うございます。

    実は諸般の事情から、IDE用の基幹PCはWindows7を使用しており、一応USBシリアルドライバはCP2104の最新版とはなっていますが、スケッチ書込が上手く行かない主原因はこの環境のせいではないかと思っています。

    尚、ESP32のファームウェア書込みツール(flash_download_tooles_v3.6.4_0)を以前DLしていたことを思い出し、試しにGithubでM5cloud用のfirmwareは直ぐに見つかったので、これを上記ツールで書き込んで起動&リンクさせることはできましたので、少なくともCPUは死んでいないことは確認できました。

    しかし、どういう訳かm5stackの’工場出荷時firmware’が、思い付くリンクの何処をどう探しても見つかりません。
    (最初に出荷時状態をバックアップしておけばよかったのですが、それを怠ったことが悔やまれます。。。)

    尚、スイッチサイエンス側からは未だ回答がなく、どうも技術的なサポートはされない様なのでちょっと期待薄です。

    もし、工場出荷時firmwareの所在情報等でご存知な事がありましたら、宜しくお願い致します。

    • mgo-tec mgo-tec より:

      申し訳ございませんが、ファームのある場所は知りません。

      私の場合は、ESP32が起動しなくなった時、ファームを書き替えた経験はありませんので、やり方を知りません。
      私は、以下の記事
      ESP32 ( ESP-WROOM-32 , M5stack )自分的 トラブルシューティング まとめ
      の、9番項目の「原因その2」に書いてあるように、Flash の NVS領域を初期化して、最新版 Arduino – ESP32 を入れ直したら、いつの間にか起動できるようになっていた経験があります。
      あまり参考にならないかも知れません。

  3. H.W より:

    mgo-tecさん、
    ご多忙中、煩わしい問い合わせをしてしまい誠に申し訳ありません。

    取りあえずCPUが無事だったことは分かり、M5Cloudのfirmware導入でWeb上のIDEを経由してMicroPythonでプロジェクトが組めたり、既にご存知かもしれませんが、microSDに保存された複数のアプリを自由に切り替えて実行できる、’M5stack_MultiApp_Advance_Firmware’なる素晴しいファームがUPされている事も発見できましたので、結果オーライといったところです。
    (これで必ずしも元のfirmwareが必要ということは無くなりました。。。)

    尚、その後ハード面ではPROTO基板を手に入れ、
    1)RSTとGND間に電解コン(3.3μF)を追加。
    (多少容量が大きいですが、手元に実装できる小型コンデンサがこれしか無かったのと、経時変化で容量が最悪半減するだろう事を想定して良しとしました。)
    2)手持ちのLipo電池(860mAh)を裏側に追加。
    (並列接続するのはあまり良くないとされてますが、BOTTOM基板に実装されてる150mAhと合せて1100mAhまで増量。これで、5時間以上の連続動作が可能となりました。。。)
    3)バッテリーモニタ回路を追加。
    小型LED、チップTr(2SC2712)、チップ抵抗(470, 10k)、半固定ボリューム(5k)で回路を組み、本体側の既存穴からモニターできるようにしました。
    (Lipo電池が3.3Vまで低下したらLEDが消えるように、BE間のボリュームで輝度を微調整。尚、使用しない時は完全消灯できる様に小型SWも一応実装。)

    しかしながら、PROTO基板は高さ制約が厳しく、実質チップ部品でないと、自由な配置の回路実装はかなり難しいですね…

    • mgo-tec mgo-tec より:

      H.Wさん

      いえいえ、あまりお役に立てずスミマセン。
      私も思っていたのですが、必ずしも工場出荷時のファームは必要ないと思っています。
      ですから公開しているサイトが無いんでしょうね。
      CPUやその他の回路が生きてさえいれば、Arduinoスケッチが流し込めるのではないかと、個人的に勝手に思っています。

      バッテリーモニタはイイですね。
      私もいつかバッテリー監視ICで回路を組んで、マウントしたいと思っていました。
      というか、M5StackにはそのICが積まれているので、データシートを見れば、どこかにバッテリーモニター出力がありそうな気がします。

      ということで、いつもコメントありがとうございます。
      なにか面白いものができるといいですね。

  4. amisuke1701 より:

    初めまして、amisuke1701と言います。

    「9.今まで問題無かったのに、急に Wi-Fi ( WiFi )に繋がらなくなった」、大変参考になりました。私も突然wifi接続ができなくなり焦っておりました。残念ながらこちらの手順を試しても復旧せずあきらめていたところ、以下手順で復旧しましたので参考に掲載します。

    無線ルーター(Aterm WG2600HP)
    暗号モードをWPA/WPA2-PSK(AES) => WPA2-PSK(AES)に切り替える
    これで復旧しました。暗号モードを戻しても問題なくなりました。
    原因は不明で、復旧理由も不明ですw。

    以上、参考までに。

    • mgo-tec mgo-tec より:

      amisuke1701さん

      記事をご覧いただき、ありがとうございます。

      それは新しい手法ですね。
      これはルーターとのコネクションに何らかのバグがあるんでしょうか?
      いずれにしても、貴重な情報ありがとうございます。

      Twitter でもこの情報を流しておきますね。
      もしかしたら、悩んでいる方々の解決につながるかもしれません。

      有難うございました。
      m(_ _)m

  5. Masaki より:

    はじめまして!

    とても参考にさせていただいています。

    下記、私も同じ現象でした・・・
    このブログを見なかったら、意味がわからず途方にくれるところでした。


    M5Stack 側の USB-TypeC では、挿し込み方向によって、パソコン側がCOMポートとして認識しないことがあります。
    M5Stack 付属の USB-TypeC ケーブル、または M5Stack 側のUSB-TypeCポートの結線に問題がありそうです。
    (詳しく調べていませんが、私の場合、上下逆に挿し込むと認識しないことが確認されています。)

    • mgo-tec mgo-tec より:

      Masaki さん

      記事をご覧いただきありがとうございます。
      無事に動いて良かったですね!
      そう言っていただけると作った甲斐があり、嬉しいです。
      (^^)

  6. リュウ より:

    ——————————————————————-
    14.「○○.h」に対して複数のライブラリが見つかりました。というメッセージが出て、コンパイルできない
    例えば、Arduino IDE のコンパイルを実行して、

    「WiFi.h」に対して複数のライブラリが見つかりました
    というメッセージが出て、コンパイルできないことがあります。
    ——————————————————————-

    ⇒14番について、私も同じ現象でした。そちらのパタンに該当するかかどうかは分からないですが、一応情報共有させていただきます。
      「WiFi.h」に対して複数のライブラリが見つかりました

    僕はWINDOWS 10を使っています。
    最初僕はWindows Installer版しか使っていないです。何も問題ありません。その後、Windows app版をインストールすると、上記ライブラリ重複エラーが発生してしまいました。
    解決方法はWindows Installer版をアンインストールしかできないようです。(※Windows app版のアンインストールは解決出来ていなかったです)

    • mgo-tec mgo-tec より:

      リュウさん

      ブログにお越しいただき、ありがとうございます。

      Windows Installer版やapp版とは、Arduino IDEのことですか?

    • 通りすがりものです。 より:

      リュウさん
      私も全く同じ状態にハマり、ライブラリのincludeの重複が無いことも確認したのですがエラーが消えず、PCを再起動したらエラーはでなくなりました。
      原因不明で気持ち悪いですが、参考までに。

  7. とんかつ より:

    問題30.
    (Guru Meditation Error: Core 0 panic’ed (LoadProhibited). Exception was unhandled.)
    に関連して。
    こんにちは
    ESP-IDFで書込み、ESP32Webラジオを聴いています。
    プログラムの中に
    ホスト局のURLを記述してる「playlist」ファイルが有るのですが、
    この記述様式が、「デフォルト」状態の様式から逸脱していると
    このエラーが出る様です。
    ホストのURL追加したり削除したりするとき
    うっかりこの「様式」を外して仕舞う場合が有ります。
    この、「誤記」に気づけないと・・・
    make flash
    しても、中で再起動を繰り返してパニクり「訳が解らん・・」となりますが
    現象の直前の自分の行いとコマンドプロンプトのモニタ出力を
    観て、この「誤記」に気づき、修正で正常動作に戻りました。
    「グルの瞑想エラー」は、お遊びの「命名」らしいです。
    モニタでこの記述を観ると、『一瞬、何が起きたのか!』と
    思いますが・・私のケースでは
    その原因は、「playlist」ファイルの中の単なる「誤記」でした。

    • mgo-tec mgo-tec より:

      とんかつさん

      トラブル対処のコメントありがとうございます。
      悩んでいる読者の方々に助けになると思いますので、トラブルシューティングにコメントリンクという形で反映させて頂きますね。
      感謝、感謝です。
      m(_ _)m

  8. 通りすがり より:

    はじめまして。

    >以下の記事を参照して、Wire.begin関数を含めた全ての Wire関連関数を同じタスクに置いて下さい。

    これは過去の情報でしょうか。

    • mgo-tec mgo-tec より:

      通りすがりさん

      記事をご覧いただき、ありがとうございす。
      そのとおり、もう随分前の過去の情報です。
      この記事の1年くらい更新しておりません。
      スミマセン。
      m(_ _)m

  9. 通りすがりの開発初心者 より:

    こんにちは
    Compilation error: WiFi.h: No such file or directoryというえエラーが発生し、先に進むことができません。

    • mgo-tec mgo-tec より:

      通りすがりの開発初心者さん

      ブログをご覧いただきありがとうございます。

      ただ、頂いた情報だけでは私は何も判断できません。
      以下の情報を教えてください。

      1.使っているマイコンは何か?
      2.Arduino IDEのバージョン
      3.Arduino core for the ESP32 のバージョン
      4.何を実行した時にそのエラーが出現したか?

      あと、現在、このブログでのESP32やM5Stackの記事更新はしばらく停止中です。
      私自身もしばらく触っておりませんので、最近の情報は分らないことがあることをご了承ください。

  10. Polinky310 より:

    こんにちは
    急にESP32がWiFiに繋がらなくなり、予備機に交換したら動きます。
    当ESP32は故障で、販売元に文句を言って廃棄かな…と思っておりましたが、
    当記事を見つけてRTSのリセットをしてみました所、うまく動くようになりました。
    これで廃棄せずに済んだのと、今後も発生したであろう現象を回避することが
    できました。
    大変お世話になりました。ありがとうございました。

    • mgo-tec mgo-tec より:

      Polinky310さん

      記事をご覧いただき、ありがとうございます。

      現在はESP32やM5Stackは使っていなくて、この記事も更新しておらず、だいぶ古くなってしまいました。
      私はいろいろすっかり忘れてしまい、RTSって何だっけ? という状態でしたが、何はともあれ、廃棄せずに動いて良かったですね。
      この記事もそろそろオワコンで、削除しようかなと思っていたところです。
      おかげ様で、まだ利用がありそうなので、しばらくこのままにしておこうと思います。
      こちらこそコメント頂き、ありがとうございま~す!
      m(_ _)m

タイトルとURLをコピーしました