nRF52840搭載ボードでCircuitPython 8.2.0以降を正常にインストールできない時の対処法
「CircuitPyrthonをインストールしたらCIRCUITPYドライブが消えた!」って症状、起きていませんか?
CircuitPython 8.2.0から、nRF52840を搭載したマイコンボードではUF2ブートローダのバージョン0.4.1以上が必須になりました。そのため、古いUF2ブートローダの入ったnRF52840ボードの場合、CircuitPython 8.2.0以降を正常にインストールできません。
私は気づかずにバージョン0.3.0のブートローダの載ったボードにCircuitPython 8.2.3をインストールしてしまい、CIRCUITPYドライブが消えてしまいました…(汗)
今回はAdafruitの公式ガイドにも明記されていない注意点と、UF2ブートローダのアップデートの手順について解説します。
主なnRF52840搭載マイコンボード
Adafruit CLUE
Adafruit Feather nRF52840 Express
Adafruit Feather nRF52840 Sense
Adafruit ItsyBitsy nRF52840 Express
Seeed Xiao BLE
現在のUF2ブートローダのバージョンを確認
ボードをPCに接続後、リセットボタンをダブルクリックしてブートローダモードに入ります。
ドライブの一つとして、<製品名>BOOTという名前のドライブが表示されます。(例えばAdafruit CLUEの場合はCLUEBOOTというドライブ名になります。)
このドライブの中のINFO_UF2.TXTを開くと現在のUF2ブートローダのバージョンを確認できます。
UF2 Bootloader 0.3.0 lib/nrfx (v2.0.0)
lib/tinyusb (legacy-1500-g23df777b) s140 6.1.1
Model: Adafruit Clue nRF52840
Board-ID: nRF52840-Clue-revA
Date: Jan 13 2020
ここで注意点です。
現在のUF2ブートローダのバージョンによって次からの更新方法が異なります。
現在のバージョンが0.4.0未満の場合
ちょーっと手がかかります。
私の場合は0.3.0だったのでこちらの方法で更新しました。
とはいえ、今回バージョン0.7.0に更新した後、将来さらに上のバージョンのUF2ブートローダを更新したい場合は、現在のバージョンが0.4.0以上の場合で説明している方法で簡単に更新ができるようになりますので安心してください。
1. adafruit-nrfutilをダウンロード
下記のリンクから adafruit-nrfutil ツールをダウンロードします。windows用のファイル名は adafruitnrfutil–0.5.3.post17-win.zip です。Macの場合はadafruitnrfutil–0.5.3.post17-macos.zipです。
https://github.com/adafruit/Adafruit_nRF52_nrfutil/releases/tag/0.5.3.post17
ダウンロードした後に、デスクトップに新しいフォルダを作成して、その中に zip を解凍してください。
解凍後のファイル名は adafruit-nrfutil(Macの場合adafruit-nrfutil-macos)です。
2. 新しいブートローダファイル(zip形式)をダウンロード
下記のリンクからブートローダの更新ファイル(zip 形式)をダウンロードします。
https://github.com/adafruit/Adafruit_nRF52_Bootloader/releases/tag/0.7.0
ファイル名は<製品名>_nrf52840_bootloader0.7.0_s140_6.1.1.zipです。(例えばAdafruit CLUE 用のブートローダ更新ファイルはclue_nrf52840_bootloader0.7.0_s140_6.1.1.zip です。)
このファイルは解凍せずに、adafruit-nrfutil を保存したのと同じフォルダにコピーしてきてください。
3. ボードが接続されているポートを調べる
ボードのリセットボタンをダブルクリックしてブートローダモードに入ってください。
Windowsの場合(COMポート)
Windowsキー+Xを押した後、Mキーを押してデバイスマネージャを開きます。「ポート(COMとLPT)」の下にUSB Serial Port (COM<数字>)と表示されています。この数字を覚えておいてください。
Macの場合(デバイスネーム)
ターミナルを開いて、ls /dev/cu.*と入力します。
/dev/cu.usbmodem411のようなデバイスネームが表示されますので、この名前を覚えておいてください。
4. UF2ブートローダを更新する
Windowsの場合
Win + Rキーを押した後、cmd と入力した後 Enter
キーを押してコマンドプロンプトを起動してください。
コマンドプロンプトで cd <デスクトップに作成したフォルダのパス>を入力してパスを移動してください。
次に、以下のコマンドを入力してください。
adafruit-nrfutil.exe --verbose dfu serial --package clue_nrf52840_bootloader0.7.0_s140_6.1.1.zip --port COM<COMポート番号> -b 115200 --singlebank --touch 1200
Macの場合
ターミナルに以下のコマンドを入力してください。
./adafruit-nrfutil-macos --verbose dfu serial --package feather_nrf52840_express_bootloader-0.2.9_s140_6.1.1.zip -p /dev/cu.<デバイスネーム> -b 115200 --singlebank --touch 1200
正常に実行されると以下のようなメッセージが表示されます。
C:<デスクトップに作成したフォルダのパス>\<製品名>_nrf52840_bootloader-0.7.0_s140_6.1.1.zip. Flow control is disabled, Single bank, Touch 1200
Touched serial port COM<ポート番号>
Opened serial port COM<ポート番号>
Starting DFU upgrade of type 3, SoftDevice size: 151016, bootloader size: 39000, application size: 0
Sending DFU start packet
Sending DFU init packet
Sending firmware file
########################################
########################################
########################################
########################################
########################################
########################################
########################################
########################################
########################################
############
Activating new firmware
正常に更新されると、INFO_UF2.TXTは以下のようになっています。
UF2 Bootloader 0.7.0 lib/nrfx (v2.0.0) lib/tinyusb (0.12.0-145-g9775e7691) lib/uf2 (remotes/origin/configupdate-9-gadbb8c7)
Model: Adafruit CLUE nRF52840
Board-ID: nRF52840-CLUE-revA
Date: Jul 13 2022
SoftDevice: S140 6.1.1
現在のバージョンが0.4.0以上の場合
ドラッグ&ドロップで簡単に更新ができます。
下記のリンクからブートローダの更新ファイル(UF2 形式)をダウンロードします。
https://github.com/adafruit/Adafruit_nRF52_Bootloader/releases/tag/0.7.0
update-<製品名>_nrf52840_bootloader-0.7.0_nosd.uf2というファイル名を探してダウンロードしてください。(例えばAdafruit CLUE 用のブートローダ更新ファイルは update-clue_nrf52840_bootloader-0.7.0_nosd.uf2 です。)
リセットボタンをダブルクリックしてブートローダモードに入った後で、ボード名のドライブ にダウンロードしてきた UF2 ファイルをドラッグ・ドロップしてください。
自動で再起動がかかり、UF2ブートローダが更新されます。