2022/01/06

M5StackでSDカードがやけに遅くなる

明けましておめでとうございます。

今年もどうぞよろしくお願いします。


本年ブログ一発目が、デモ直前で悪戦苦闘した内容のメモです。

2021年の夏に作ったM5Stackのスケッチが、リコンパイルでSDアクセスがやけに遅くなってハマりました。


原因は、ボードマネージャのバージョンの更新の模様(Ver.2系)


ArduinoIDEにて、ツール→Core Debug Level : Warn

にしてビルドしたスケッチを転送して、実行。

シリアルコンソールに、

Load INI file.
[   429][W][sd_diskio.cpp:174] sdCommand(): no token received
[   531][W][sd_diskio.cpp:174] sdCommand(): no token received
[   631][W][sd_diskio.cpp:174] sdCommand(): no token received
INI file [ /setup.ini ] exists
[   732][W][sd_diskio.cpp:174] sdCommand(): no token received
[   832][W][sd_diskio.cpp:174] sdCommand(): no token received
[   933][W][sd_diskio.cpp:174] sdCommand(): no token received


と、エラーが頻発して、SDカードアクセスが遅くなります。

このエラーの中で、sleep(200)が呼ばれているので、呼び出しの度に遅くなっていく模様。


ツール→ボードマネージャにて、M5Stackのバージョンを1系(1.0.9)にすることで、復活しました。(根本原因解決では無い)


ここにたどり着くまで、

  1. SDカードの交換やフォーマットのやり直し
  2. IniFileの更新確認
  3. M5stackのライブラリ更新確認
  4. ライブラリソースの解析・・・

と、右往左往でした。(ちょっとの確認のつもりが、4時間かかった…💦)


該当するエラーで表示されている、

[sd_diskio.cpp:174] sdCommand(): no token received

のソースパスは、

~Library/Arduino15/packages/m5stack/hardware/esp32/2.0.2/libraries/SD/src/sd_diskio.cpp

このソースは、ボードマネージャに付属するソースなのですね。(Mac版)


エラー表示だけだったので、ソースの在処が分から無かったです。


原因は判明したものの、現在のスケッチがVer.2系では動かないので今後どうしようかは要検討となりました。とりあえずデモに間に合ったのでOK。


更新にて、SDアクセスが遅くなっている方は確認してみてください。

面倒なのは、当該エラーのコンソール表示はWARN以上にしておかないと見えません。


Mac mini 2018 のWi-FiやBluetoothが途切れる場合の対処

Mac mini 2018以降で、Wi-FiやBluetoothが不安定な方向けです。 SEM-ITも例に漏れずBluetoothが非常に不安定で、キーボード利用中に切断されると、文字が入力されたままになるとか、Magic TrackPad2の触感がいきなり無くなって切断される…...