ST Nucleo WB55RGをMatterデバイスとして動かしてみた

# はじめに

WB55RGをMatterデバイスとして動かしてみます。

前回の記事はこちら。

https://qiita.com/kitazaki/items/efb87dcea6103e039e3c

https://wiki.stmicroelectronics.cn/stm32mcu/wiki/Connectivity:Introduction_to_Matter

X-CUBE-MATTERにはSTM32WB5MM-DK向けMatterデバイスのサンプルアプリケーション(Lighting-AppとWindow-App)のバイナリファイルが含まれていますが、WB55RG向けは含まれていません。
WB55RGで動かす場合、stm32wb-matter-device-over-threadのGitHubからソースコードを取得してビルドする必要があります。

https://github.com/stm32-hotspot/stm32wb-matter-device-over-thread/

# ビルドツール

STM32用統合開発環境(STM32CubeIDE)をインストールします。

https://www.st.com/ja/development-tools/stm32cubeide.html

macOS版でもビルドできますが、Windows版の利用をおすすめします。
(ソースコードに含まれる.projectファイルからSTM32CubeIDEを起動できます。)

# ビルド手順

## Windows版

STM32CubeIDEを起動し、「Import projects」→「Import Projects from File System or Archive」を選択し、GitHubからダウンロードしたソースコードのフォルダを指定します。

![1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/0a359ee5-8d4d-08ff-7948-8fb229448c29.jpeg)

フォルダに含まれる.projectファイルを認識し、登録されます。
「Project」→「Build All」を選択します。![35.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/5f3cf666-d941-ecdd-531a-b0e7b4eb6303.jpeg)


![2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/5445f4bb-9740-47e5-9208-7a64012ca64e.jpeg)

WB55RGのLighting-AppのSTM32Cubeフォルダを指定して、個別にプロジェクトを登録することもできます。

![3.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/6ffe85b7-6257-eaba-ade7-eed98d11d3a5.jpeg)

ビルドでエラーが発生します。

![4.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/0a7d385d-6a86-3a59-93f8-9d531574891c.jpeg)

原因を調べると、「caddt_t is an obsolete typedef」とのことで、ワークアラウンドが示されていました。

https://community.st.com/t5/stm32cubeide-mcus/core-src-sysmem-c-38-1-error-unknown-type-name-caddr-t/td-p/56309

sysmem.cファイルに以下の1行を追加します。

```c:sysmem.c
#include <sys/types.h>
```

![5.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/4f0c0c5e-4b38-337b-207c-0314300f329c.jpeg)

再度ビルドを実行すると問題なく完了し、Lighting-App.bin、または、Window-App.binが出力されます。

バイナリファイルはこちらに置きました。

https://github.com/kitazaki/ST_Nucleo_WB55RG_Matter

## macOS版 (2024年6月2日追記)

Windows版と同じ手順でビルドできました。

STM32CubeIDEを起動し、「Import projects」→「Import Projects from File System or Archive」を選択し、GitHubからダウンロードしたソースコードのフォルダを指定します。

![31.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/8e2ee2e4-d083-ab6e-318c-d9d895da7349.jpeg)

![33.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/3d90dbe1-850d-80d0-c877-f24d71c52b8f.jpeg)

ビルド対象のプロジェクトを選択し、メニューから「Project」→「Build Project」を選択します。

![35.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/0feaf9f2-0fa6-0596-7fa9-c56d0e25d370.jpeg)

ビルドでエラーが発生します。(Windows版と同様)

![36.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/a718bf31-6c5b-a04d-d3cd-13dee2eea62b.jpeg)

sysmem.cファイルに以下の1行を追加し、再度ビルドを実行すると問題なく完了します。

```c:sysmem.c
#include <sys/types.h>
```

![37.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/9f152934-1afc-b547-cb29-b7ab9c8db337.jpeg)

「Debug」フォルダにLighting-App.bin、または、Window-App.binが出力されます。

![スクリーンショット 2024-06-02 11.21.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/a239c12d-b856-5f9a-cc3e-d36b2b046dbe.png)

### 参考情報

Windows版も同様ですが、Progress Informationを確認すると、C/C++ Indexerの処理が途中で止まり、CPUの高負荷状態が継続しますので、処理を中止してください。(プロジェクトのビルドは並行して実行できます)

![41.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/b1e77df1-1320-569b-7767-b0f543f0f39a.jpeg)

# STM32CubeProgrammerで書き込み

書き込み手順はこちらです。

https://qiita.com/kitazaki/items/efb87dcea6103e039e3c

Wireless Coprocessor Binaryとアプリケーションを書き込むアドレスはこちらです。

STM32CubeWB firmware release V1.17.0

|Wireless Coprocessor Binary |STM32WB5xxG(1M) |Version
|---|---|---|
|stm32wb5x_FUS_fw.bin |0x080EC000 |V1.2.0
|stm32wb5x_BLE_Thread_ForMatter_fw.bin |0x08085000 |V1.1.1

|Application Binary |STM32WB5xxG(1M)
|---|---|
|Lighting-App.bin |0x08000000
|Window-App.bin |0x08000000

# 動作確認

デバイスへの書き込みが終わると、シリアルコンソールにログメッセージが出力されます。

```bash
[M4 APPLICATION] Matter Over Thread Window-App starting...
[M4 APPLICATION] Init CHIP stack
CHIP:DL: BLEManagerImpl::Init() complete
[M4 APPLICATION] 1- Initialisation of BLE Stack...
[M4 APPLICATION] 2- Initialisation of OpenThread Stack. FW info :
[M4 APPLICATION] **********************************************************
[M4 APPLICATION] WIRELESS COPROCESSOR FW:
[M4 APPLICATION] VERSION ID = 1.1.1
[M4 APPLICATION] FW Type : Dynamic Concurrent Mode BLE/Thread
[M4 APPLICATION] **********************************************************
[0000000000] [PLATFORM]   --> DebugLevel set to 1 

[0000000000] [PLATFORM]   IeeeEui64 = 0x0080e1fffebeccc2
[0000000000] [PLATFORM]   ----> EUID64 = 0x0080e1fffebeccc2
[0000000001] [PLATFORM]   [THREAD] Init_ThreadStack_Infrastructure
[0000000015] [PLATFORM]   Short_Addr=FFFE
[0000000022] [PLATFORM]   PANID=C14F
[0000000024] [REGION UNDEF] [I] Settings------: Read NetworkInfo {rloc:0x0803, extaddr:1264fd74d789a929, role:child, mode:0x0c, version:4, keyseq:0x0, ...
[0000000025] [REGION UNDEF] [I] Settings------: ... pid:0x7617402e, mlecntr:0x3eb, maccntr:0x54d93d9f, mliid:aa55283948705462}
[0000000026] [PLATFORM]   Short_Addr=803
[0000000027] [REGION UNDEF] [I] Settings------: Read ParentInfo {extaddr:ce03351bf55a4748, version:4}
[0000000027] [PLATFORM]   INIT Thread stack done 

[M4 APPLICATION] Start init matter
CHIP:-: Current Software Version: 1.1
```

ログメッセージに含まれるQRコード表示用のURLへブラウザからアクセスすると、コミッショニング用のQRコードが表示されます。

https://project-chip.github.io/connectedhomeip/qrcode.html?data=MT%3A4CT9142C00KA0648G00

![11.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/6f6308c0-a4a3-7ff9-e4ee-ce3e19b90ce0.jpeg)

Apple HOMEアプリでアクセサリを登録します。登録中(コミッショニング中)はLED1(青色)が点灯します。

![10.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/48ebb593-ae93-6d43-77fc-d36f426a880a.jpeg)

アクセサリの登録は無事に完了しますが、残念ながら実際に操作することはできませんでした。
(応答なし〜アップデート中の動作を繰り返す)

![IMG_6181.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/a1580df7-fa12-ed46-03b1-be9cb98a07e7.png)

![IMG_6182.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/ec03876c-aea7-15d5-8397-d975a34d43c3.png)