対策&復旧方法:MacからSeeeduino Xiaoが書き込めなくなる件

Seeeduino Xiao。小さくてライターもいらず便利ですよね。
ですが何度かからプログラムを書いているうちに、壊れてしまうXiaoがいくつも発生しました。

私の場合、Mac mini (Mid2018)から書き込みを行うと何度かに1回書き込みに失敗してXiaoが壊れました。

本記事は、自分なりに調べたりSeeeduinoのフォーラムで質問した結果を掲載しています。

Seeeduino Xiaoが壊れてしまう問題の原因

おそらくは書き込み時の電源変動が問題のように思います。
私の場合、Xiaoが死んでしまうのは必ずプログラム書き込み中でした。

問題の原因の一つはUSBハブのようでした。
バスパワードのUSBハブに他のUSB機器がつながっている状態で書き込みを行うとNG出やすいようでした。

MacからXiao書き込み時のエラー発生の対策方法

1つの改善策としてはUSBハブを使わずにPCに直結することです。

ですが、Xiaoに他の機器(例えばDCモーターなど)がつながっていると、これでも書き込みに失敗しXiaoが壊れてしまうことがあるようです

MacからSeeeduino Xiaoに書き込めなくなった時の修復方法

修復方法はXiaoの破損状況により2通りあります。

1:ホワンホワンLEDは点滅=ブートローダーは動いている場合の修復方法

この場合、まだブートローダーは動いています。

実はMac以外(Windows)からではプログラムの書き込みが可能です。
また、一度Mac以外で書き込みを行えばXiaoは復旧します。

下記の3パターンのいずれかを実行することで復旧が可能です。

A:Windowsで修復する

Macユーザーとしては元も子もないですが、Windows機からプログラム書き込みを行います。
書き込みを行う環境はArduinoIDEでもPlatformIOでも大丈夫です。

ただ1度、ブランクのコードを書き込めば、修理完了となります。
(以降、再びMacからも書き込みができるようになります)

B:Linux(ラズパイ)で修復する

Windows機を持っていない場合の次の手段としてはLinux(ラズパイで可)を使います。

RaspberryPi OS(32bit)からSeeeduino Xiaoへ書き込む場合、私の環境ではArduino IDEではエラーが出てしまい書き込みできませんでした。

Arduino IDEで書き込めない場合はPlatformIOで書き込んでみてください。

C:Macで修復する

最後はMacで修復する方法です。

この方法は私は未確認ですが、Seeed Folumで教えてもらいました。
方法は下記の通りです。
(https://forum.seeedstudio.com/t/cant-write-program-on-my-xiao/264846)

DeepL翻訳:

もう一つの復旧方法は、Nordicの無料のnRF ConnectとSegger J-link Edu-mini ($20)を使うことです。Seggerのedu-miniでは、ボードを消去した後、外部3.3Vを供給しないので、修正しようとするボードに外部3.3Vを供給することを確認する必要があります。Nordicはファームウェアを削除すると、チップがデフォルトで1.8Vになるようになっています。

nRF Connectの「プログラミング」で、左上のJ-link Deviceをクリックすると、右側に表示されます。右側のボックスに表示されます。左側のボックスにSeeedのファームウェアをロードします。次に “ERASE ALL “をクリックします。その後、”Erase and Write “をクリックすると、チップに書き込まれます。すべての配線をつなげば30秒程度で完了します。

https://forum.seeedstudio.com/t/cant-write-program-on-my-xiao/264846

注:Segger J-link Edu-miniは中華製のクローンが出回っていますが、nRF Connectはクローンのデバイスは認識しませんでした。正規版を用意してください。

2:ブートローダーが壊れている場合

リセットボタンを用いてもホワンホワンLED点滅しない場合は、Xiaoはブートローダごと壊れてしまっています。

ブートローダーの復旧をおこなった上で、上記1の「1:ホワンホワンLEDは点滅=ブートローダーは動いている場合の修復方法」を行うことで、復旧が可能です。

MacでSeeeduino Xiaoのブートローダーを復旧する方法

ブートローダーの復旧はJ-LinkかJ-Link Edu-mini(の中華クローン)が必要です。

J-Linkを用意したら、J-Linkの3.3vとGNDをXiaoに接続します。
SWDIOとSWCLKは接続の数秒つながっていれば大丈夫なので、書き込み中だけ指でピンヘッダなどで押し当てるだけでOKです。
(気になる方はハンダ付けしても良いですが、パッドの面積が小さいので、結構大変です。もしくはXiaoの拡張ボードを使う手もあります。)

ブートローダーのファイルは下記から入手できます。
bootloader-XIAO_m0-v3.7.0-33-g90ff611-dirty.bin

ブートローダーを修復してから修復方法1を実施することで、復旧できます。

まとめ

以上、macでseeeduino xiaoに書き込めなくなった場合の対策方法を2通り説明いたしました。

破損の程度によって、対応が少々面倒ですが、せっかく買ったSeeeduino xiaoをみすみす捨てずにすみます。ぜひお試しください。

それでは〜。

ぼのかば

最初にプログラムしたのは相撲ロボット用のZ80アセンブリ(Aki-80)。
以後,PICアセンブリ>PIC C と渡り歩く。

好きなICのタイプは8pinDIP。

一応、電気科卒
*ブログ内の情報はMacOSX上での操作に基づきます。

Seeeduino Xiao
PICを少々。