M5Stack BASIC 2.7(M5Core)にUSB Host Shield(M5STACK-M020)を接続したがUSBの初期化でエラー発生



  • M5Stack BASIC 2.7(M5Core)にUSB Host Shield(M5STACK-M020)を接続したがUSBの初期化でエラーが発生して機能しません。
    USB Host Shield(以降、UHS)の初期化はUsb.Init()であり、-1(エラー)を返してきます。
    解決方法をご存知の方、いらっしゃいませんか。

    • M5StackはBASIC 2.7以外にGRAYでも試したが、同様のエラーとなった(初期化エラー)

    • UHSはv1.6.2とv1.3.2を試したが、現象は変わらなかった(初期化エラー)

    • M5STACK-M020のINTはESP32の35に接続されているが、UHSでの定義は17だったため35に変えてみたが現象は変わらなかった(初期化エラー)

    • M5Stack.hではなくM5Unified.hをincludeしても現象は変わらなかった

    • 約2年前に取ってあったソースコードでもビルドして試してみたが、そのときは動作していたのに今は上記エラーとなる。UHSのソースは当時のものだが、M5Coreは随時updateされているため、当時のビルド環境を完全再現できていないところに不安要素はある

    • 当時、M5Core2でもM5STACK-M020を使っていて、そちらはモノは現存していて初期化は正常に行えている。(UHSはM5Core2用に修正されたものをダウンロードして利用)その基板を抜き取ってM5Stack BASIC2.7に挿してもエラーとなった。それを再度M5Core2に戻すと正常だった。ゆえにM5STACK-M020は故障していないことは判断できた。なお、当時のバイナリは持っていないため、あらためて今ビルドすると初期化エラーが発生する



  • その後の調査の結果、初期化エラーは物理的な接触不良が原因であることが判明しました。
    購入時にM5Stackの底面を固定するネジが付属していなかったので気にしていませんでしたが、USB Host Shield(M5STACK-M020)を挟んで独自のネジで固定したところ、Usb.init()が成功するようになりました。
    ご覧いただいた方々、大変失礼しました。ありがとうございました。