はじめに
本記事はFlipper ZeroでWi-Fi Developer Boardを使用する方法について記載しています。
Wi-Fi Developer Boardを購入してセットアップを行なったところ、セットアップに癖がありました。
Geekの方の参考になれば幸いです。
Wi-Fi Developer Board
Wi-Fi Developer Board(以下、Developer Board)は、Flipper Zeroを拡張するためのESP32-S21モジュールに基づいたプリント基盤です。
機能
Developer Boardは、Flipper Zeroにデバッグ機能とファームウェア更新機能を追加します。
基本的には開発者向けのデバッグ機能を提供しますが、Wi-Fiを利用した侵入テストを行うこともできます。
なお、侵入テストに関する機能は標準では搭載されていないため、自分でビルドを行うか用意されたファームウェアを使用するなど環境構築が必要です。
仕様
Developer Boardは、Black Magic Debug2と、CMSIS-DAP3を組み込んだカスタムファームウェアを搭載し、ESP32-S2 MCUをベースにしたESP-IDF4を使用して構築されています。
Developer Boardのハードウェアに関する詳細については、以下公式ドキュメントより確認できます。
購入方法
Amazonなどでも出品されていますが、正規ルートであるMarketplaceからの購入をお勧めします。
Marketplaceからの購入方法については、以前書いた「Geekのためのマルチツール Flipper Zero」をご参照ください。
また、上記記事でも書いていますが、支払いの通貨の選択によって金額が異なります。筆者は少しでも安く買うために今回もUSDを選択しました。
セットアップ
Developer Boardを使用ために最低限必要な作業は、公式ドキュメントの「Get started with the Devboard」を踏まえて、以下の通りです。
- Flipper Zeroでデバッグモードを有効にする
- Developer Boardのファームウェアを更新する
- DevboardをFlipper Zeroに接続する
- コンピューターに接続する
Flipper Zeroでデバッグモードを有効にする
Flipper Zeroを操作して[Settings] → [System]に移動して、[Debug]を[ON]に設定します。
Developer Boardのファームウェアを更新する
最新の機能とバグ修正を適用するためには、Developer Boardを定期的に更新することが重要です。
micro Flipper Build Toolのインストール
はじめにDeveloper Boardへファームウェアのフラッシュなどを行うことができるuFBTをインストールします。
以下はMacの例です。
$ python3 -m pip install --upgrade ufbt
Collecting ufbt
Downloading ufbt-0.2.6-py3-none-any.whl.metadata (8.2 kB)
Collecting oslex>=0.1.3 (from ufbt)
Downloading oslex-0.1.3-py3-none-any.whl.metadata (1.7 kB)
Collecting mslex (from oslex>=0.1.3->ufbt)
Downloading mslex-1.3.0-py3-none-any.whl.metadata (4.2 kB)
Downloading ufbt-0.2.6-py3-none-any.whl (25 kB)
Downloading oslex-0.1.3-py3-none-any.whl (3.5 kB)
Downloading mslex-1.3.0-py3-none-any.whl (7.8 kB)
Installing collected packages: mslex, oslex, ufbt
Successfully installed mslex-1.3.0 oslex-0.1.3 ufbt-0.2.6
Developer BoardをPCに接続する
Developer Boardをブートローダモードに切り替えて、USB-CケーブルでPCに接続し、PCがDeveloper Boardを検出できる様にします。
以下のコマンドを実行して、PC接続後シリアルデバイスが認識されていることを確認します。
$ ls /dev/cu.*
/dev/cu.Bluetooth-Incoming-Port /dev/cu.debug-console /dev/cu.usbmodemblackmagic1 /dev/cu.usbmodemblackmagic3
Developer Boardをブートローダ モードに切り替えるためには、次の操作を行います。
- BOOTボタンを長押し
- BOOTボタンを押しながらRESETボタンを押す
- BOOTボタンを放す
ファームウェアのフラッシュ
ファームウェアをフラッシュするには、以下のコマンドを実行しますが、証明書の検証に失敗した場合は以下の様なメッセージが出力されます。
$ python3 -m ufbt devboard_flash
16:01:14.724 [I] Deploying SDK for f7
16:01:14.725 [I] Fetching version info for UpdateChannel.RELEASE from https://update.flipperzero.one/firmware/directory.json
16:01:14.812 [E] Failed to run operation: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1123)>. See --verbose for details
SDK is missing scripts distribution!
You might be trying to use an SDK in an outdated format.
You can clean up current state with `ufbt clean --purge`.
Run `ufbt update -h` for more information on SDK installation.
上記の様なメッセージが出力された場合は、以下のオプションを付与することで回避できます。
$ python3 -m ufbt --no-check-certificate update
16:09:35.449 [I] Deploying SDK for f7
16:09:35.450 [I] Fetching version info for UpdateChannel.RELEASE from https://update.flipperzero.one/firmware/directory.json
16:09:36.154 [I] Using version: 1.2.0
16:09:36.154 [I] uFBT SDK dir: /Users/flipper/.ufbt/current
16:09:36.835 [I] Deploying SDK
16:09:37.024 [I] SDK deployed.
再度、ファームウェアのフラッシュを行ったところ、今度は以下の様なエラーメッセージが出力されました。
$ python3 -m ufbt devboard_flash
Checking for tar..yes
Checking if downloaded toolchain tgz exists..no
Checking curl..yes
Downloading toolchain:
############################################################################################################################################################## 100.0%
done
Removing old toolchain..done
Unpacking toolchain to '/Users/flipper/.ufbt/toolchain':
##################################################################### 100.0%
linking toolchain to 'current'..done
Cleaning up..done
scons: Entering directory `/Users/flipper/.ufbt/current/scripts/ufbt'
fbt: warning: App folder '/Users/flipper': missing manifest (application.fam)
LoadAppManifest, line 130, in file "/Users/flipper/.ufbt/current/scripts/fbt_tools/fbt_apps.py"
python3 /Users/flipper/.ufbt/current/scripts/wifi_board.py
2025-02-24 16:12:22,183 [ERROR] WiFi board not found
2025-02-24 16:12:22,183 [INFO] Please connect WiFi board to your computer, hold down BOOT button and press RESET button
2025-02-24 16:12:22,183 [INFO] If you are using Linux, you may need to add udev rules to access the device
2025-02-24 16:12:22,183 [INFO] Check out 41-flipper.rules & README in scripts/debug folder
scons: *** [phony_devboard_flash] Error 1
PCから取り外し、再度接続を試みましたが、事象は解決できませんでした。
対応として、フォーラムの[ERROR] WiFi board not foundを参照して、以下の手順を実行することで解消できました。
- Wi-FiボードからUSB-Cを取り外す
- BOOTボタンを押しながら差し込む
- コマンドを実行
$ python3 -m ufbt devboard_flash
scons: Entering directory `/Users/flipper/.ufbt/current/scripts/ufbt'
fbt: warning: App folder '/Users/flipper': missing manifest (application.fam)
LoadAppManifest, line 130, in file "/Users/flipper/.ufbt/current/scripts/fbt_tools/fbt_apps.py"
python3 /Users/flipper/.ufbt/current/scripts/wifi_board.py
2025-02-24 18:27:14,528 [INFO] Downloading https://update.flipperzero.one/blackmagic-firmware/directory.json
2025-02-24 18:27:15,218 [INFO] Using channel 'release'
2025-02-24 18:27:15,218 [INFO] Using version '0.1.1'
2025-02-24 18:27:15,219 [INFO] Changelog:
2025-02-24 18:27:15,219 [INFO] ## What's Changed
2025-02-24 18:27:15,219 [INFO] * [readme] Add instructions on flashing firmware from source by @ide in https://github.com/flipperdevices/blackmagic-esp32-s2/pull/8
2025-02-24 18:27:15,219 [INFO] * [typo] fixed from credenitals to credentials by @GitAYYYer in https://github.com/flipperdevices/blackmagic-esp32-s2/pull/9
2025-02-24 18:27:15,219 [INFO] * Add schematic to README.md by @DrZlo13 in https://github.com/flipperdevices/blackmagic-esp32-s2/pull/10
2025-02-24 18:27:15,219 [INFO] * Update schematic to last version by @DrZlo13 in https://github.com/flipperdevices/blackmagic-esp32-s2/pull/11
2025-02-24 18:27:15,219 [INFO] * Update schematic link by @DrZlo13 in https://github.com/flipperdevices/blackmagic-esp32-s2/pull/12
2025-02-24 18:27:15,220 [INFO] * Fix the link that leads to schematics by @Alex-avia in https://github.com/flipperdevices/blackmagic-esp32-s2/pull/15
2025-02-24 18:27:15,220 [INFO] * add MDNS hostname as a config element by @0xDRRB in https://github.com/flipperdevices/blackmagic-esp32-s2/pull/17
2025-02-24 18:27:15,220 [INFO] * Dap-link support mode by @DrZlo13 in https://github.com/flipperdevices/blackmagic-esp32-s2/pull/18
2025-02-24 18:27:15,220 [INFO] * README: required version of esp-idf, development of the web interface by @DrZlo13 in https://github.com/flipperdevices/blackmagic-esp32-s2/pull/22
2025-02-24 18:27:15,220 [INFO] * Fix README esp-idf link by @DrZlo13 in https://github.com/flipperdevices/blackmagic-esp32-s2/pull/27
2025-02-24 18:27:15,220 [INFO] * Fix mDNS in AP mode by @Astrrra in https://github.com/flipperdevices/blackmagic-esp32-s2/pull/29
2025-02-24 18:27:15,220 [INFO] * Update blackmagic version by @DrZlo13 in https://github.com/flipperdevices/blackmagic-esp32-s2/pull/23
2025-02-24 18:27:15,220 [INFO] * Add indexer by @drunkbatya in https://github.com/flipperdevices/blackmagic-esp32-s2/pull/32
2025-02-24 18:27:15,221 [INFO] * Add compression by @drunkbatya in https://github.com/flipperdevices/blackmagic-esp32-s2/pull/33
2025-02-24 18:27:15,221 [INFO] ## New Contributors
2025-02-24 18:27:15,221 [INFO] * @ide made their first contribution in https://github.com/flipperdevices/blackmagic-esp32-s2/pull/8
2025-02-24 18:27:15,221 [INFO] * @GitAYYYer made their first contribution in https://github.com/flipperdevices/blackmagic-esp32-s2/pull/9
2025-02-24 18:27:15,221 [INFO] * @Alex-avia made their first contribution in https://github.com/flipperdevices/blackmagic-esp32-s2/pull/15
2025-02-24 18:27:15,221 [INFO] * @0xDRRB made their first contribution in https://github.com/flipperdevices/blackmagic-esp32-s2/pull/17
2025-02-24 18:27:15,221 [INFO] * @Astrrra made their first contribution in https://github.com/flipperdevices/blackmagic-esp32-s2/pull/29
2025-02-24 18:27:15,221 [INFO] * @drunkbatya made their first contribution in https://github.com/flipperdevices/blackmagic-esp32-s2/pull/32
2025-02-24 18:27:15,221 [INFO] **Full Changelog**: https://github.com/flipperdevices/blackmagic-esp32-s2/compare/0.0.2...0.1.1
2025-02-24 18:27:15,221 [INFO] Downloading https://update.flipperzero.one/builds/blackmagic-firmware/0.1.1/blackmagic-firmware-s2-full-0.1.1.tgz to /var/folders/9j/xp91vjk50y14w_m_lr_x1s3r0000gn/T/tmptfhyvs4z/blackmagic-firmware-s2-full-0.1.1.tgz
2025-02-24 18:27:15,351 [INFO] Unzipping /var/folders/9j/xp91vjk50y14w_m_lr_x1s3r0000gn/T/tmptfhyvs4z/blackmagic-firmware-s2-full-0.1.1.tgz
2025-02-24 18:27:15,372 [INFO] Running command: "python3 -m esptool -p /dev/cu.usbmodem01 -b 460800 --before default_reset --after no_reset_stub --chip esp32s2 write_flash --flash_mode dio --flash_freq 80m --flash_size 4MB 0x1000 bootloader.bin 0x10000 blackmagic.bin 0x8000 partition-table.bin" in "/var/folders/9j/xp91vjk50y14w_m_lr_x1s3r0000gn/T/tmptfhyvs4z"
2025-02-24 18:27:26,907 [INFO] WiFi board flashed successfully
2025-02-24 18:27:26,907 [INFO] Press RESET button on WiFi board to start it
また、ls /dev/cu.*
の出力結果も変わったことが確認できました。
/dev/cu.Bluetooth-Incoming-Port /dev/cu.debug-console /dev/cu.usbmodem01
インストールを完了する
インストール完了後、次の操作を行いファームウェアが正常に更新されたことを確認します。
- RESETボタンを押してDeveloper Boardを再起動する
- USB-Cケーブルを外して再度接続する
DevboardをFlipper Zeroに接続する
ファームウェアを更新後、Flipper Zeroに接続できますが、次の2点に留意します。
- Developer BoardをFlipper Zeroを接続する前に、Flipper Zeroの電源をオフにする
- Developer Boardが完全に挿入されていることを確認する
コンピューターに接続する
Developer Boardにワイヤレスで接続するには、次の2つの方法があります。
- Wi-Fi access point mode (default)
- 独自の Wi-Fi ネットワークを作成
- Wi-Fi client mode
- 既存のWi-Fiネットワークを介してDevboardに接続できるため、インターネット接続を失うことなくWi-Fi経由でDevboard Webインターフェースにアクセスし、デバッグを行なうことが可能
Developer BoardへのWi-Fi接続
Developer BoardをWi-Fi client modeで接続するには、次の手順を実行して、Wi-Fi ネットワークに接続するように構成する必要があります。
- Flipper Zero の電源をオフにして開発ボードを接続し、デバイスの電源を再度オンにして、Developer BoardをFlipper Zeroに接続する
- Wi-Fi access point modeでDeveloper Boardに接続する
- ブラウザでDeveloper BoardのWebインターフェイス(http://192.168.4.1 または http://blackmagic.local )にアクセスする
- STAモードを選択し、ネットワークのSSID (名前) とパスワードを入力(+ボタンをクリックすると、近くの2.4GHzネットワークのリストが表示される※5GHzネットワークはサポートされない)
以上で既存のWi-Fi ネットワーク経由でアクセスすることができます。
おわり
Flipper Zeroは好奇心をくすぐるのに最適なツールです。
Developer Boardを使用することで、低レイヤの開発について学ぶことができます。
参考
-
Wi-FiとBluetoothを内蔵する低消費電力なSoCのマイクロコントローラ ↩
-
Black Magic Probeの形式に基づきGNU DeBugger (GDB)サーバを実装する ↩
-
CoreSight Debug Access Port (DAP)へのアクセスをサポートするプロトコル仕様及びARMが提供するリファレンスファームウェアの実装 ↩
-
ESP32、ESP32-S、ESP32-C、ESP32-H シリーズのSoC向けEspressifの公式IoT開発フレームワーク ↩