M5Stick CがMacで認識しない

追記:いろいろやったけど、結論として

1) 最初に買ったM5Stickがショートしてて初期不良なので交換してもらった
2) M5Stickのファーム(ブートローダ?)をアップデートした(M5StickC and ATOM on MacOS Catalina can't upload programs solustion | M5Stack Community
3) MacのFTDIシリアルドライバ(/System/Library/FTDIUSBSerialDriver.kextと/Library/Extensions/FTDIKext.kext)を削除した。その結果、Appleの純正シリアルドライバ(com.apple.driver.driverkit.serial)が見に行くようになった

これでMac上のUIFlow Desktopから書き込めるようになった。しかし、依然としてUIFlowのファームウェアWindowsからでないと書き込めない。(Macから書き込むと液晶がONにならない)


以下は参考までに



m5stick cをMacbookのUSBポートにつなぐとUsing too much powerと出てイジェクトされてしまう。以下で紹介されているようなトラブルシューティングを試したが、改善しなかった。
https://raspberrypi.mongonta.com/m5stacktips/

1) 0Vと3V3を抵抗を介して接続する
2) G0とGNDを短絡する
3) BATとGNDを短絡する

そもそもショートしてるっぽいので交換してもらった。

交換後のM5stick Cを指すとMacではシリアルデバイスとして認識されていない。MacからはUSBデバイスとしては認識されている。Mac上のVMでWindows10を立ち上げてみると、Windows上ではCOMポートが見えている。ということはMacの問題らしい。

この記事を見つけたので、Updater_FW20200114_A2_BTV231を焼いてみることにした。
community.m5stack.com
このプログラムを実行してみたところ、途中でm5stick cデバイスが再起動した。このときWindowsVMを立ち上げていたため、Macとの通信が途切れて、ファームウェアの書き込みが失敗してしまった。MacでもWindowsでもシリアルデバイスが見えないという最悪の事態に。文鎮化してしまったか。
VMを終了してもういちど書き込みをしてみたところ、書き込み成功のメッセージは出てきた。しかし、Mac上では依然としてシリアルデバイスとして見えていない。VMを立ち上げてWindowsから見てみると、WindowsからはCOMポートが見えるようになった。ギリギリセーフ。

ところで、M5stick cがMacからFTDIデバイス(VID 0x0403, PID 0x6001)として見えていることに気づく。
f:id:seinzumtode:20200331144240p:plain
これって前もハマったFTDIのVCPとD2XXの問題なのでは?と思い、以下を実行した。→Silicon labsのVCPドライバを使うので、これは勘違いだった。

1)FTDIの最新のVCPドライバをインストール
https://www.ftdichip.com/Drivers/VCP.htm
2)FTDIのD2XXHelperをインストール
3)FTDIのD2XXドライバをインストール
https://www.ftdichip.com/Drivers/D2XX.htm

そうしたらMacで見えるようになった。
f:id:seinzumtode:20200331144442p:plain
と思ったら、VMを立ち上げてUSBデバイス(M5Stick C)をWindowsに接続したときにのみ、Macからシリアルデバイスとして見えるらしい。
f:id:seinzumtode:20200331145744p:plain
しかもMac上のArduinoでこのシリアルポートを指定してスケッチの書き込みを試みると、書き込めない(could not open port)。VM上のWindowsでも書き込めない(Timed outエラー)。
WindowsのVCPドライバを最新のものにしてみたが、書き込めない。
USB to UART Bridge VCP Drivers - Silicon Labs
以下のページを参考にWindowsで書き込み速度を960000から115200に変更したら書き込めた。しかし液晶がONにならない。
Error on downloading to M5StickC | M5Stack Community
ここで、Arduino IDEのデバイスをM5stick-Cではなく、M5stack C-CORE-ESP32にしていたことに気づく。ボードを正しく設定するとアップロードできたが、液晶はOFFのままである。

ここで趣向を変えて、uiflowのv1.4.5のファームウェアをM5burnerで書き込んでみたら、液晶がONになった。
UIFow Desktopをダウンロードしてためしてみたところ、WindowsからUSB経由で書き込む環境はセットアップできた。
あとはMacからの書き込みが確認できれば完璧である。

ここでSilicon labsのVCPドライバがロードされていないことに気づく。

$ kextstat | ag silab

以下を見てSilicon labsのVCPドライバを入れた。具体的には、SIPを無効にしてインストールし、kextloadした。
SIP無効化の方法は、⌘-Rを押しながら起動してリカバリーモードに入り、ターミナルから#csrutil disableを実行し、再起動する。
www.shangtian.tokyo
それでも認識されなかったので、/Library/Extensions/SiLabsUSBDriver.kext/Contents/Info.plistにM5stackをつくってPID(0x6001=24577)とVID(0x403=1027)を追記した。
f:id:seinzumtode:20200331212957p:plain
Macを再起動したらシリアルデバイスとして見えている。M5burnerからファームウェアを書き込んでみたが、起動しない。さらに、そうこうしているうちにシリアルデバイスとして見えなくなっていた。

(いろいろ試行錯誤)

kextutilを実行すると、untrusted kexts are not allowedとエラーが出て、/Library/Extensions/ 配下のkextの多くが読み込めないエラーを出している。
エラーが出てるものをすべて削除した。FTDIもAuthority=(unavailable)が原因のせいか、untrustedになっていた。試しに/System/Library/FTDIUSBSerialDriver.kextと/Library/Extensions/FTDIKext.kextを削除して再起動したら、Appleの純正ドライバ(com.apple.driver.driverkit.serial)がM5Stick-Cを見に行くようになって、UIFlow Desktopから書き込めるようになった。