diff --git a/docs/ble_communication_overview.md b/docs/ble_communication_overview.md
index a58d7671..47a70cf0 100644
--- a/docs/ble_communication_overview.md
+++ b/docs/ble_communication_overview.md
@@ -13,15 +13,21 @@ original_id: ble_communication_overview
キューブは電源をいれると BLE ペリフェラル(Peripheral)として起動し、下記の情報をアドバタイズします。
-| 定義 | 値 |
-| ------------------------------------- | --------------------------------------------------- |
-| Flags | General Discoverable Mode, BR/EDR Not Supported |
-| Complete list of 128bit Service UUIDs | 10B20100-5B3B-4571-9508-CF3EFCD7BBAE |
-| Complete Local Name | toio Core Cube-XXX |
+| 定義 | 値 |
+| ---------------------------------------- | --------------------------------------------------- |
+| Flags | General Discoverable Mode, BR/EDR Not Supported |
+| Complete list of 128bit Service UUIDs | 10B20100-5B3B-4571-9508-CF3EFCD7BBAE |
+| Shortened Local Name | toio-XXX |
-### Complete Local Name について
+### Complete Local Name と Shortened Local Name について
+
+キューブのシステムソフトウェア v02.0006(BLE プロトコルバージョン v2.4.0)から、Complete Local Name の代わりに Shortened Local Name がアドバタイズに含まれます。
+Shortened Local Name は `toio-XXX` です。
+
+Complete Local Name はキューブのシステムソフトウェア v02.0006(BLE プロトコルバージョン v2.4.0)からアドバタイズ情報に含まれなくなりました。
+Complete Local Name は Generic Access サービスの Device Name 特性から読み出せます。
+Complete Local Name は `toio-XXX (toio Core Cube)` です。
-キューブのシステムソフトウェア v02.0005(BLE プロトコルバージョン v2.3.0)から、Complete Local Name が toio Core Cube-XXX に変更されました。
XXX にはキューブごとに固有の ID 文字列が入ります。 これは電源を入れなおしても不変な値のため、数十台同時にキューブを運用する際に個体識別の補助に役立ちます。
ID 文字列は、すべてのキューブで固有の値になることを保証するものではありません。 また、キューブに記載されたシリアル番号と同じ番号ではありません。
@@ -36,9 +42,14 @@ ID に使われる文字列は 3 桁の文字列で、アルファベット+
| Complete Local Name の例 |
| ------------------------ |
-| toio Core Cube-M0p |
-| toio Core Cube-a9R |
-| toio Core Cube-C3P |
+| toio-M0p |
+| toio-a9R |
+| toio-C3P |
+
+#### 旧バージョン(システムソフトウェア v02.0005, BLE プロトコルバージョン v2.3.0)での Local Name
+
+キューブのシステムソフトウェア v02.0005(BLE プロトコルバージョン v2.3.0)では、アドバタイズに Complete Local Name が含まれます。
+旧バージョンの Complete Local Name は `toio Core Cube-XXX` です。
## キューブの機能の利用
diff --git a/docs/configuration.md b/docs/configuration.md
index c2ecb550..b44fdf42 100644
--- a/docs/configuration.md
+++ b/docs/configuration.md
@@ -132,7 +132,7 @@ original_id: ble_configuration
| ---------- | ------------------- | ---------------- |
| 通知感度 | `0` 以上 `255` 以下 | `7`(70 ミリ秒) |
-### 磁気センサーの設定
+### 磁気センサーの設定
以下のデータを書き込むことで[磁気センサー](magnetic_sensor.md)の機能の有効化・無効化を設定します。デフォルトでは無効化されています。結果の取得方法は[磁気センサーの設定の応答](#磁気センサーの設定の応答)を参照してください。
@@ -153,7 +153,7 @@ original_id: ble_configuration
| `0x01` | 磁石の状態検出の有効化 |
| `0x02` | 磁力の検出の有効化 |
-#### 通知間隔
+#### 通知間隔
通知の間隔を設定します。単位は 20 ミリ秒です。`0` を設定した場合は通知無効となります。
高精度位傾き情報の通知間隔設定とは単位が異なるので注意してください。
@@ -162,7 +162,7 @@ original_id: ble_configuration
| ---------- | --------------------------------------- |
| 通知間隔 | `0` 以上 `255` 以下(0 は通知無効設定) |
-#### 通知条件
+#### 通知条件
通知の条件を設定します。`0x00` を設定した場合は変化がなくても通知間隔に従い通知を行います。
`0x01` を設定した場合は磁石の状態に変化があったときだけ通知を行います。ただし、変化が激しい場合でも上記の通知間隔設定より短い間隔で通知されることはありません。
@@ -189,7 +189,7 @@ original_id: ble_configuration
| `0x00` | 無効化(初期値) |
| `0x01` | 有効化 |
-### 姿勢角検出の設定
+### 姿勢角検出の設定
以下のデータを書き込むことで[姿勢角検出](high_precision_tilt_sensor.md)機能の有効化・無効化を設定します。デフォルトでは無効化されています。結果の取得方法は[姿勢角検出設定の応答](#姿勢角検出の設定の応答)を参照してください。
@@ -203,15 +203,11 @@ original_id: ble_configuration
通知内容の種類は以下のとおりです。
-| 通知内容の種類 | 意味 |
-| -------------- | ------------------ |
-| `0x01` | オイラー角での通知 |
-
-:::note
-
-現バージョンでは**オイラー角での通知**のみ利用可能となっています。
-
-:::
+| 通知内容の種類 | 意味 |
+| -------------- | ------------------------ |
+| `0x01` | オイラー角での通知 |
+| `0x02` | クォータニオンでの通知 |
+| `0x03` | 高精度オイラー角での通知 |
#### 通知間隔
@@ -232,7 +228,7 @@ original_id: ble_configuration
| `0x00` | 変化がなくても通知 |
| `0x01` | 変化があったときだけ通知 |
-### シリアライズ情報の通知設定
+### シリアライズ情報の通知設定
以下のデータを書き込むことで[シリアライズ情報](serialized_information.md)機能の有効化・無効化を設定します。デフォルトでは無効化されています。結果の取得方法は[シリアライズ情報の通知設定の応答](#シリアライズ情報の通知設定の応答)を参照してください。
@@ -261,6 +257,56 @@ original_id: ble_configuration
| `0x00` | 変化がなくても通知 |
| `0x01` | 変化があったときだけ通知 |
+### コネクションインターバル変更要求
+
+以下のデータを書き込むことでキューブからセントラル側へコネクションインターバルの変更を要求します。
+セントラル側が変更要求に応じた場合にはコネクションインターバルは変更されます。
+
+:::note
+
+コネクションインターバル値はセントラル側が決定権を持っています。
+キューブ側から要求した値とは別の値になる場合や、変更されない場合があります。
+セントラル側が受け入れられない値を要求した場合には、セントラルはBLE接続を切断することがあります。
+
+:::
+| データ位置 | タイプ | 内容 | 例 |
+| ---------- | ------ | ---------- | --------------------------------------------------------------------- |
+| 0 | UInt8 | 設定の種類 | `0x30`(コネクションインターバル変更要求) |
+| 1 | UInt8 | Reserved | `0x00` |
+| 2 | UInt16 | min値 | `0x0008`(10 ミリ秒) |
+| 4 | UInt16 | max値 | `0x0050`(100 ミリ秒) |
+
+#### min値 / max値
+
+コネクションインターバルの最小時間と最大時間を設定します。
+指定可能な値はBLE規格により定められています。
+0xFFFF(要求なし)または 0x0006 ~ 0x0C80 の間の値が指定できます。
+コネクションインターバル時間は、指定値✕1.25 [ms] です。
+
+### コネクションインターバル要求値の取得
+
+以下のデータを書き込むことで[コネクションインターバル変更要求](#コネクションインターバル変更要求-)から設定した要求値を取得します。
+この値は実際のコネクションインターバル値ではありません。
+
+[コネクションインターバル変更要求](#コネクションインターバル変更要求-)を行っていない状態でコネクションインターバル要求値を取得した場合は
+min に 0x08(10ミリ秒)、max に 0x50(100ミリ秒)が取得できます。
+
+| データ位置 | タイプ | 内容 | 例 |
+| ---------- | ------ | ---------- | ------------------------------------------------------------------------- |
+| 0 | UInt8 | 設定の種類 | `0x31`(コネクションインターバル要求値の取得) |
+| 1 | UInt8 | Reserved | `0x00` |
+
+### 現在のコネクションインターバル値の取得
+
+以下のデータを書き込むことでキューブとセントラル間の実際のコネクションインターバル値を取得できます。
+この値と[コネクションインターバル変更要求](#コネクションインターバル変更要求-)で設定した要求値を比較することで
+コネクションインターバルが要求どおりに変更できたかを確認できます。
+
+| データ位置 | タイプ | 内容 | 例 |
+| ---------- | ------ | ---------- | --------------------------------------------------------------------------- |
+| 0 | UInt8 | 設定の種類 | `0x32`(現在のコネクションインターバル値の取得) |
+| 1 | UInt8 | Reserved | `0x00` |
+
## 読み出し操作
### BLE プロトコルバージョンの取得
@@ -341,7 +387,7 @@ original_id: ble_configuration
| `0x00` | OK・設定成功 |
| `0x00` 以外 | NG・設定失敗 |
-### 姿勢角検出の設定の応答
+### 姿勢角検出の設定の応答
[姿勢角検出の設定](#姿勢角検出の設定)を書き込むと結果に応じて以下の応答を行います。
@@ -358,7 +404,7 @@ original_id: ble_configuration
| `0x00` | OK・設定成功 |
| `0x00` 以外 | NG・設定失敗 |
-### シリアライズ情報の通知設定の応答
+### シリアライズ情報の通知設定の応答
[シリアライズ情報の通知設定](#シリアライズ情報の通知設定)を書き込むと結果に応じて以下の応答を行います。
@@ -375,6 +421,45 @@ original_id: ble_configuration
| `0x00` | OK・設定成功 |
| `0x00` 以外 | NG・設定失敗 |
+### コネクションインターバル変更要求の応答
+
+[コネクションインターバル変更要求](#コネクションインターバル変更要求-)を書き込むと結果に応じて以下の応答を行います。
+
+| データ位置 | タイプ | 内容 | 例 |
+| ---------- | ------ | ---------- | ----------------------------------------------------------------------- |
+| 0 | UInt8 | 設定の種類 | `0xb0`コネクションインターバル変更要求の応答 |
+| 1 | UInt8 | Reserved | `0x00` |
+| 2 | UInt8 | 結果の値 | `0x00`(設定成功) |
+
+結果の値の意味は以下のとおりです。
+
+| 結果の値 | 意味 |
+| ----------- | ------------ |
+| `0x00` | OK・設定成功 |
+| `0x00` 以外 | NG・設定失敗 |
+
+### コネクションインターバル要求値の取得の応答
+
+[コネクションインターバル要求値の取得](#コネクションインターバル要求値の取得-)を書き込むと以下の応答を行います。
+
+| データ位置 | タイプ | 内容 | 例 |
+| ---------- | ------ | ---------- | --------------------------------------------------------------------------- |
+| 0 | UInt8 | 設定の種類 | `0xb1`コネクションインターバル要求値の取得の応答 |
+| 1 | UInt8 | Reserved | `0x00` |
+| 2 | UInt16 | min値 | `0x0008`(10 ミリ秒) |
+| 4 | UInt16 | max値 | `0x0050`(100 ミリ秒) |
+
+### 現在のコネクションインターバル値の取得の応答
+
+[現在のコネクションインターバル値の取得](#現在のコネクションインターバル値の取得-)を書き込むと以下の応答を行います。
+
+| データ位置 | タイプ | 内容 | 例 |
+| ---------- | ------ | ---------- | ----------------------------------------------------------------------------- |
+| 0 | UInt8 | 設定の種類 | `0xb2`現在のコネクションインターバル値の取得の応答 |
+| 1 | UInt8 | Reserved | `0x00` |
+| 2 | UInt16 | min値 | `0x0008`(10 ミリ秒) |
+| 4 | UInt16 | max値 | `0x0050`(100 ミリ秒) |
+
## 通知
[読み出し操作](#読み出し操作)で得られるデータは通知でも受け取ることが出来ます。
diff --git a/docs/hardware_magnet.md b/docs/hardware_magnet.md
index 98848aaa..3c23f14c 100644
--- a/docs/hardware_magnet.md
+++ b/docs/hardware_magnet.md
@@ -1,7 +1,7 @@
---
id: hardware_magnet
title: '磁気センサー'
-sidebar_label: '🔄 磁気センサー'
+sidebar_label: '磁気センサー'
original_id: hardware_magnet
---
@@ -44,7 +44,7 @@ original_id: hardware_magnet
![magnet layout specification](assets/hardware_magnet_layout.svg)
-## 2. 磁力の検出
+## 2. 磁力の検出
磁力の強さと向きを検出できます。
diff --git a/docs/hardware_other.md b/docs/hardware_other.md
index c0678919..94e3ae19 100644
--- a/docs/hardware_other.md
+++ b/docs/hardware_other.md
@@ -1,7 +1,7 @@
---
id: hardware_other
title: '各種性能'
-sidebar_label: '🔄 各種性能'
+sidebar_label: '各種性能'
original_id: hardware_other
---
diff --git a/docs/high_precision_tilt_sensor.md b/docs/high_precision_tilt_sensor.md
index e5b1f430..9418241f 100644
--- a/docs/high_precision_tilt_sensor.md
+++ b/docs/high_precision_tilt_sensor.md
@@ -24,7 +24,7 @@ original_id: ble_high_precision_tilt_sensor
| Properties | [Write](#書き込み操作), [Read](#読み出し操作--通知), [Notify](#読み出し操作--通知) |
| Descriptor | Sensor Information |
-## 書き込み操作
+## 書き込み操作
### 姿勢角検出の要求
@@ -37,17 +37,14 @@ original_id: ble_high_precision_tilt_sensor
通知内容の種類は以下のとおりです。
-| 通知内容の種類 | 意味 |
-| -------------- | ---------------------- |
-| `0x01` | オイラー角での通知 |
+| 通知内容の種類 | 意味 |
+| -------------------------- | ------------------------ |
+| `0x01` | オイラー角での通知 |
+| `0x02` | クォータニオンでの通知 |
+| `0x03` | 高精度オイラー角での通知 |
-:::note
-
-現バージョンでは**オイラー角での通知**のみ利用可能となっています。
-
-:::
-## 読み出し操作 / 通知
+## 読み出し操作 / 通知
キューブの姿勢角が変化すると、この特性は BLE セントラルに情報を通知します。
通知される情報は読み出し操作でも取得できます。
@@ -60,7 +57,7 @@ original_id: ble_high_precision_tilt_sensor
### 姿勢角情報の取得(オイラー角での通知)
-以下のデータが取得できます。
+通知内容の種類にオイラー角での通知を設定した場合には以下のデータが取得できます。
| データ位置 | タイプ | 内容 | 例 |
| ---------- | ------ | -------------------- | ------------------------------------------------------- |
@@ -72,14 +69,63 @@ original_id: ble_high_precision_tilt_sensor
#### 角度
-角度の範囲は Roll および Yaw は -179°(0xFF4D) から 180°(0x00B4) 、 Pitch は -90°(0xFFA6) から 90°(0x005A) です。
+角度の範囲は Roll および Yaw が -179°(0xFF4D) から 180°(0x00B4) 、 Pitch は -90°(0xFFA6) から 90°(0x005A) です。
+
+回転順序は Yaw(ヨー/Z 軸)、Pitch(ピッチ/Y 軸)、Roll(ロール/X 軸)の順です。
+ロール角とピッチ角は、キューブのタイヤ面を下面として水平に置いた状態が 0° です。ヨー角は、キューブが起動したときの向きが 0° です。
+
+#### 誤差
+
+Z 軸まわりの回転(オイラー角におけるヨー角)に対してはセンサーによる絶対値補正が行えないため誤差が蓄積されます。 以下はその影響の具体例です。
+
+- キューブを動かしていないのに、数秒に 1° 程度ヨー角がずれる
+- Z 軸を中心軸としてキューブを 1 回転させると、ヨー角が数 ° ずれる
+
+### 姿勢角情報の取得(クォータニオンでの通知)
+
+通知内容の種類にクォータニオンでの通知を設定した場合には以下のデータが取得できます。
+
+| データ位置 | タイプ | 内容 | 例 |
+| ---------- | ------- | -------------- | ----------------------------------------------------------- |
+| 0 | UInt8 | 情報の種類 | `0x03`(姿勢角検出) |
+| 1 | UInt8 | 通知内容の種類 | `0x02`(クォータニオンでの通知) |
+| 2 | Float32 | W | `0x0000803F`(1.0) |
+| 6 | Float32 | X | `0x00000000`(0.0) |
+| 10 | Float32 | Y | `0x00000000`(0.0) |
+| 14 | Float32 | Z | `0x00000000`(0.0) |
+
+#### 値
+
+W, X, Y, Z それぞれの値の範囲は -1.0 から +1.0 です。
+
+### 姿勢角情報の取得(高精度オイラー角での通知)
+
+通知内容の種類に高精度オイラー角での通知を設定した場合には以下のデータが取得できます。
+角度は単精度の浮動小数点で取得できます。
+
+| データ位置 | タイプ | 内容 | 例 |
+| ---------- | ------- | -------------------- | ----------------------------------------------------------- |
+| 0 | UInt8 | 情報の種類 | `0x03`(姿勢角検出) |
+| 1 | UInt8 | 通知内容の種類 | `0x02`(クォータニオンでの通知) |
+| 2 | Float32 | Roll(ロール/X 軸) | `0x00003443`(180.0°) |
+| 6 | Float32 | Pitch(ピッチ/Y 軸) | `0x00000000`(0.0°) |
+| 10 | Float32 | Yaw(ヨー/Z 軸) | `0x00000000`(0.0°) |
+
+#### [姿勢角情報の取得(オイラー角での通知)](ble_high_precision_tilt_sensor#姿勢角情報の取得オイラー角での通知)との違い
+
+[姿勢角情報の取得(オイラー角での通知)](ble_high_precision_tilt_sensor#姿勢角情報の取得オイラー角での通知)は整数での角度情報が通知されます。
+[姿勢角情報の取得(高精度オイラー角での通知)](ble_high_precision_tilt_sensor#姿勢角情報の取得高精度オイラー角での通知-)は単精度浮動小数点での角度情報が通知されます。
+
+#### 角度
+
+角度の範囲は -180° < Roll ≦ 180°、 -180° < Yaw ≦ 180° 、 -90° < Pitch ≦ 90° です。
回転順序は Yaw(ヨー/Z 軸)、Pitch(ピッチ/Y 軸)、Roll(ロール/X 軸)の順です。
ロール角とピッチ角は、キューブのタイヤ面を下面として水平に置いた状態が 0° です。ヨー角は、キューブが起動したときの向きが 0° です。
#### 誤差
-Z 軸まわりの回転(オイラー角におけるヨー角)に対しては重力加速度を使った補正を行えないため誤差が蓄積されます。 以下はその影響の具体例です。
+Z 軸まわりの回転(オイラー角におけるヨー角)に対してはセンサーによる絶対値補正が行えないため誤差が蓄積されます。 以下はその影響の具体例です。
- キューブを動かしていないのに、数秒に 1° 程度ヨー角がずれる
- Z 軸を中心軸としてキューブを 1 回転させると、ヨー角が数 ° ずれる
diff --git a/docs/how_to_update_cube.md b/docs/how_to_update_cube.md
index e30ae1fa..94abf7f1 100644
--- a/docs/how_to_update_cube.md
+++ b/docs/how_to_update_cube.md
@@ -24,6 +24,7 @@ original_id: how_to_update_cube
| v02.0003 | v2.1.0 |
| v02.0004 | v2.2.0 |
| v02.0005 | v2.3.0 |
+| v02.0006 | v2.4.0 |
## 技術仕様のアップデートについて
@@ -35,6 +36,27 @@ original_id: how_to_update_cube
## 主なアップデート内容
+### 2024/03/18
+
+キューブのシステムソフトウェア v02.0006(BLE プロトコルバージョン v2.4.0)に関する情報を追加しました。
+
+- [キューブの使い方](how_to_use_cube)
+ - [システム状態](how_to_use_cube#システム状態-)にtoio PlayGroundが追加されました。
+- [キューブの発見](ble_communication_overview#キューブの発見-)
+ - **後方互換性のない重要な変更:** [Local Name](ble_communication_overview#complete-local-name-と-shortened-local-name-について-)の仕様を変更しました。
+- [姿勢角検出](ble_high_precision_tilt_sensor)
+ - [姿勢角検検出の要求](ble_high_precision_tilt_sensor#姿勢角検出の要求)で指定可能な値が追加されました。
+ - [クォータニオンでの通知](ble_high_precision_tilt_sensor#姿勢角情報の取得クォータニオンでの通知-)が追加されました。
+ - [高精度オイラー角での通知](ble_high_precision_tilt_sensor#姿勢角情報の取得高精度オイラー角での通知-)が追加されました。
+- [設定](ble_configuration)
+ - [姿勢角検出の設定](ble_configuration#姿勢角検出の設定-)で指定可能な値が追加されました。
+ - [コネクションインターバル変更要求](ble_configuration#コネクションインターバル変更要求-)が追加されました。
+ - [コネクションインターバル要求値の取得](ble_configuration#コネクションインターバル要求値の取得-)が追加されました。
+ - [現在のコネクションインターバル値の取得](ble_configuration#現在のコネクションインターバル値の取得-)が追加されました。
+ - [コネクションインターバル変更要求の応答](ble_configuration#コネクションインターバル変更要求の応答-)が追加されました。
+ - [コネクションインターバル要求値の取得の応答](ble_configuration#コネクションインターバル要求値の取得の応答-)が追加されました。
+ - [現在のコネクションインターバル値の取得の応答](ble_configuration#現在のコネクションインターバル値の取得の応答-)が追加されました。
+
### 2023/12/14
キューブの[充電用端子](hardware_other.md#充電用端子)に関する情報を追加しました。
@@ -43,8 +65,8 @@ original_id: how_to_update_cube
キューブのシステムソフトウェア v02.0005(BLE プロトコルバージョン v2.3.0)に関する情報を追加しました。
-- シリアライズ情報に関する機能の追加
- - [シリアライズ情報に関する通信仕様](serialized_information.md)
+- シリアライズ情報に関する機能の追加
+ - [シリアライズ情報に関する通信仕様](serialized_information.md)
### 2023/09/29
@@ -58,60 +80,60 @@ original_id: how_to_update_cube
「[工作生物 ゲズンロイド](https://toio.io/titles/gesundroid.html)」に関する toio ID の情報を追加しました。
-- [工作生物 ゲズンロイド付属のプレイマット](info_position_id.md#工作生物nbspゲズンロイド付属のプレイマット)に関する情報を追加
+- [工作生物 ゲズンロイド付属のプレイマット](info_position_id.md#工作生物nbspゲズンロイド付属のプレイマット)に関する情報を追加
### 2021/04/21
キューブのシステムソフトウェア v02.0005(BLE プロトコルバージョン v2.3.0)に関する情報を追加しました。
-- アドバタイズ情報(Complete Local Name)の変更
- - [通信概要](ble_communication_overview.md#キューブの発見)
-- 姿勢角検出に関する機能の追加
- - [姿勢角検出の取得に関する通信仕様](high_precision_tilt_sensor.md)
-- 磁気センサーに関する機能の追加
- - [磁気センサー情報の取得に関する通信仕様](magnetic_sensor.md)
+- アドバタイズ情報(Complete Local Name)の変更
+ - [通信概要](ble_communication_overview.md#キューブの発見)
+- 姿勢角検出に関する機能の追加
+ - [姿勢角検出の取得に関する通信仕様](high_precision_tilt_sensor.md)
+- 磁気センサーに関する機能の追加
+ - [磁気センサー情報の取得に関する通信仕様](magnetic_sensor.md)
### 2020/09/30
キューブのシステムソフトウェア v02.0004(BLE プロトコルバージョン v2.2.0)に関する情報を追加しました。
-- [電池残量の確認方法](how_to_use_cube.md#電池残量の確認)の追加
-- 読み取りセンサーの通知頻度設定の追加
- - [読み取りセンサーの ID 通知設定](configuration.md#読み取りセンサーの-id-通知設定)
- - [読み取りセンサーの ID missed 通知設定](configuration.md#読み取りセンサーの-id-missed-通知設定)
-- [シェイク検出](sensor.md#シェイク検出)の追加
-- 磁気センサーに関する機能の追加
- - [磁気センサーに関するハードウェア仕様](hardware_magnet.md)
- - [磁気センサー情報の取得に関する通信仕様](magnetic_sensor.md)
- - [磁気センサーの有効化](configuration.md#磁気センサーの設定)
-- モーターの速度情報に関する機能の追加
- - [モーターの速度情報の取得](motor.md#モーターの速度情報の取得)
- - [モーターの速度情報の取得の有効化](configuration.md#モーターの速度情報の取得の設定)
-- toio ID の情報を通信仕様からハードウェア仕様へ移動
- - [Position ID 一覧](info_position_id.md)
- - [Standard ID 一覧](info_standard_id.md)
-- 「[トイオ・コレクション 拡張パック](https://toio.io/titles/toio-collection-extension.html)」「[おんがくであそぼう ピコトンズ](https://toio.io/titles/picotons.html)」に関する toio ID の情報を追加
- - [Standard ID 一覧 - トイオ・コレクション 拡張パック](info_standard_id.md#トイオ・コレクション-拡張パックに付属する読み取りマーク)
- - [Position ID 一覧 - おんがくであそぼう ピコトンズ](info_position_id.md#おんがくであそぼうnbspピコトンズ付属のマット)
+- [電池残量の確認方法](how_to_use_cube.md#電池残量の確認)の追加
+- 読み取りセンサーの通知頻度設定の追加
+ - [読み取りセンサーの ID 通知設定](configuration.md#読み取りセンサーの-id-通知設定)
+ - [読み取りセンサーの ID missed 通知設定](configuration.md#読み取りセンサーの-id-missed-通知設定)
+- [シェイク検出](sensor.md#シェイク検出)の追加
+- 磁気センサーに関する機能の追加
+ - [磁気センサーに関するハードウェア仕様](hardware_magnet.md)
+ - [磁気センサー情報の取得に関する通信仕様](magnetic_sensor.md)
+ - [磁気センサーの有効化](configuration.md#磁気センサーの設定)
+- モーターの速度情報に関する機能の追加
+ - [モーターの速度情報の取得](motor.md#モーターの速度情報の取得)
+ - [モーターの速度情報の取得の有効化](configuration.md#モーターの速度情報の取得の設定)
+- toio ID の情報を通信仕様からハードウェア仕様へ移動
+ - [Position ID 一覧](info_position_id.md)
+ - [Standard ID 一覧](info_standard_id.md)
+- 「[トイオ・コレクション 拡張パック](https://toio.io/titles/toio-collection-extension.html)」「[おんがくであそぼう ピコトンズ](https://toio.io/titles/picotons.html)」に関する toio ID の情報を追加
+ - [Standard ID 一覧 - トイオ・コレクション 拡張パック](info_standard_id.md#トイオ・コレクション-拡張パックに付属する読み取りマーク)
+ - [Position ID 一覧 - おんがくであそぼう ピコトンズ](info_position_id.md#おんがくであそぼうnbspピコトンズ付属のマット)
### 2020/04/23
toio コア キューブ(単体)に付属する簡易プレイマットと簡易カードに関する情報を追加しました。
-- toio ID の情報一覧を[Position ID 一覧](info_position_id.md)と[Standard ID 一覧](info_standard_id.md)に移動
-- toio コア キューブ(単体)に付属する[簡易プレイマット](info_position_id.md#toio-コア-キューブ(単体)付属の簡易プレイマット)と[簡易カード](info_standard_id.md#toio-コア-キューブ(単体)付属の簡易カード)に関する情報を追加
+- toio ID の情報一覧を[Position ID 一覧](info_position_id.md)と[Standard ID 一覧](info_standard_id.md)に移動
+- toio コア キューブ(単体)に付属する[簡易プレイマット](info_position_id.md#toio-コア-キューブ(単体)付属の簡易プレイマット)と[簡易カード](info_standard_id.md#toio-コア-キューブ(単体)付属の簡易カード)に関する情報を追加
### 2019/11/13
BLE プロトコルバージョン v2.1.0 では以下のような内容の変更・追加があります。
-- [ダブルタップ検出・姿勢検出](sensor.md#検出)の追加
-- [モーターの速度指示値](motor.md#モーターの速度指示値)の有効範囲の拡大
- - 速度指示値の最大値が`100`から`115`になり、より速い動作が可能になります
- - 速度指示値の最小値が`10`から`8`になり、よりゆっくりとした動作が可能になります
-- モーター制御のバリエーションの追加
- - [目標指定付きモーター制御](motor.md#目標指定付きモーター制御)
- - [複数目標指定付きモーター制御](motor.md#複数目標指定付きモーター制御)
- - [加速度指定付きモーター制御](motor.md#加速度指定付きモーター制御)
+- [ダブルタップ検出・姿勢検出](sensor.md#検出)の追加
+- [モーターの速度指示値](motor.md#モーターの速度指示値)の有効範囲の拡大
+ - 速度指示値の最大値が`100`から`115`になり、より速い動作が可能になります
+ - 速度指示値の最小値が`10`から`8`になり、よりゆっくりとした動作が可能になります
+- モーター制御のバリエーションの追加
+ - [目標指定付きモーター制御](motor.md#目標指定付きモーター制御)
+ - [複数目標指定付きモーター制御](motor.md#複数目標指定付きモーター制御)
+ - [加速度指定付きモーター制御](motor.md#加速度指定付きモーター制御)
詳しい仕様はこのサイトで記載していますが、[toio blog](https://toio.io/blog/) でも一部解説していく予定ですのでそちらも参考にしてください。
diff --git a/docs/how_to_use_cube.md b/docs/how_to_use_cube.md
index 59c3edee..daefafda 100644
--- a/docs/how_to_use_cube.md
+++ b/docs/how_to_use_cube.md
@@ -1,7 +1,7 @@
---
id: how_to_use_cube
title: 'キューブの使い方'
-sidebar_label: 'キューブの使い方'
+sidebar_label: '🔄 キューブの使い方'
original_id: how_to_use_cube
---
@@ -24,19 +24,32 @@ original_id: how_to_use_cube
キューブとの通信に関しては[通信概要 - キューブとの通信について](ble_communication_overview.md#キューブとの通信について)をご覧ください。
-## システム状態
+## システム状態
![Light of cube](assets/cube_basics_light.svg)
キューブのシステム状態に関して、ランプの色と音で通知します。条件は以下のとおりです。
-| キューブの状態 | ランプ | 音 |
-| -------------- | ---------------------------------------------- | -------- |
-| 起動 | 赤色・青色・緑色・白色を順に 1 回づつ点滅 | ○ 音あり |
-| 接続待ち | 青色点滅 | ☓ 音なし |
-| 接続 | 消灯 | ○ 音あり |
-| 切断 | 消灯 | ○ 音あり |
-| 終了 | 消灯 | ○ 音あり |
+| キューブの状態 | ランプ | 音 |
+| --------------- | ---------------------------------------------- | -------- |
+| 起動 | 赤色・青色・緑色・白色を順に 1 回づつ点滅 | ○ 音あり |
+| 接続待ち | 青色点滅 | ☓ 音なし |
+| 接続 | 消灯 | ○ 音あり |
+| 切断 | 消灯 | ○ 音あり |
+| 終了 | 消灯 | ○ 音あり |
+| toio PlayGround | 黄色点滅 | ○ 音あり |
+
+### toio PlayGround(黄色点滅)について
+
+キューブが[toio PlayGround](https://toio.io/titles/playground.html)(黄色点滅)の状態では、キューブは外部からのBluetooth接続を受け入れません。
+
+#### toio PlayGround への遷移
+
+キューブが接続待ち(青色点滅)の状態でボタンを長押しすると[toio PlayGround](https://toio.io/titles/playground.html)に遷移します。
+
+#### toio PlayGround からの復帰
+
+[toio PlayGround](https://toio.io/titles/playground.html)から通常の接続可能状態に戻るには、キューブの電源を一度オフにしてから再度オンしてください。
## 電池残量の確認
diff --git a/docs/info_position_id.md b/docs/info_position_id.md
index 8161724e..527d10cf 100644
--- a/docs/info_position_id.md
+++ b/docs/info_position_id.md
@@ -1,7 +1,7 @@
---
id: hardware_position_id
title: 'Position ID 一覧'
-sidebar_label: '🔄 Position ID 一覧'
+sidebar_label: 'Position ID 一覧'
original_id: hardware_position_id
---
@@ -68,7 +68,7 @@ original_id: hardware_position_id
| ----------- | ----------- | ----------- | ----------- |
| 98 | 142 | 402 | 358 |
-## 工作生物 ゲズンロイド付属のプレイマット
+## 工作生物 ゲズンロイド付属のプレイマット
利用にはシステムソフトウェア v02.0004 以降へのアップデートが必要です。
システムソフトウェアバージョンとアップデート方法については[はじめに-アップデートについて](./how_to_update_cube.md)を参照してください。
diff --git a/docs/magnetic_sensor.md b/docs/magnetic_sensor.md
index 3975fae9..15c56f1f 100644
--- a/docs/magnetic_sensor.md
+++ b/docs/magnetic_sensor.md
@@ -1,7 +1,7 @@
---
id: ble_magnetic_sensor
title: '磁気センサー'
-sidebar_label: '🔄 磁気センサー'
+sidebar_label: '磁気センサー'
original_id: ble_magnetic_sensor
---
@@ -31,7 +31,7 @@ original_id: ble_magnetic_sensor
| ---------- | ------ | ---------- | ----------------------------------------------------------- |
| 0 | UInt8 | 情報の種類 | `0x82` (磁気センサー情報の要求) |
-## 読み出し操作 / 通知
+## 読み出し操作 / 通知
キューブの磁気センサーの情報が変化すると、この特性は BLE セントラルに情報を通知します。
通知される情報は読み出し操作でも取得できます。
@@ -42,7 +42,7 @@ original_id: ble_magnetic_sensor
:::
-### 磁気センサー情報の取得
+### 磁気センサー 情報の取得
| データ位置 | タイプ | 内容 | 例 |
| ---------- | ------ | ------------------ | ----------------------------------------------------- |
@@ -59,7 +59,7 @@ original_id: ble_magnetic_sensor
未装着もしくは[ハードウェア仕様 - 磁気センサー](hardware_magnet.md)で定義されている 6 つのパターン、合わせて 7 つのパターン以外の磁力を検出した場合は情報を更新しません。
-#### 磁力の検出
+#### 磁力の検出
キューブに磁石を近づけると、キューブは磁力を検出して応答を返します。
diff --git a/docs/motor.md b/docs/motor.md
index 7aba88ed..1423ef38 100644
--- a/docs/motor.md
+++ b/docs/motor.md
@@ -281,7 +281,7 @@ Position ID 上での角度や回転方向については[読み取りセンサ
モーターを動かす時間を`0`以上`255`以下の範囲で指定します。`0`は「時間制限無し」を意味し、次の書き込み操作が行われるまでモーターは指定した速度で動きづづけます。`1`以上`255`以下の範囲では x10 ミリ秒モーターは動いたあと停止します。
-## 読み出し操作 / 通知
+## 読み出し操作 / 通知
この特性は BLE セントラルに情報を通知します。通知される情報は読み出し操作でも取得でき、以下のようにデータの先頭の値で内容を判別できます。
diff --git a/docs/sensor.md b/docs/sensor.md
index 3efdb222..baef2553 100644
--- a/docs/sensor.md
+++ b/docs/sensor.md
@@ -1,7 +1,7 @@
---
id: ble_sensor
title: 'モーション検出'
-sidebar_label: '🔄 モーション検出'
+sidebar_label: 'モーション検出'
original_id: ble_sensor
---
@@ -25,7 +25,7 @@ original_id: ble_sensor
| ---------- | ------ | ---------- | ------------------------------------------------------------- |
| 0 | UInt8 | 情報の種類 | `0x81` (モーション検出情報の要求) |
-## 読み出し操作 / 通知
+## 読み出し操作 / 通知
キューブのモーションセンサーの情報が変化すると、この特性は BLE セントラルに情報を通知します。通知される情報は読み出し操作でも取得できます。
diff --git a/docs/serialized_information.md b/docs/serialized_information.md
index bb576241..97262967 100644
--- a/docs/serialized_information.md
+++ b/docs/serialized_information.md
@@ -1,7 +1,7 @@
---
id: ble_serialized_information
title: 'シリアライズ情報'
-sidebar_label: '🆕 シリアライズ情報'
+sidebar_label: 'シリアライズ情報'
original_id: ble_serialized_information
---
@@ -25,7 +25,7 @@ original_id: ble_serialized_information
シリアライズ情報に使用する書き込み操作はありません。
-## 読み出し操作 / 通知
+## 読み出し操作 / 通知
この特性は BLE セントラルに情報を通知します。
通知される情報は読み出し操作でも取得できます。
diff --git a/website/i18n/en/code.json b/website/i18n/en/code.json
index 08d79b00..d18bc590 100644
--- a/website/i18n/en/code.json
+++ b/website/i18n/en/code.json
@@ -180,11 +180,11 @@
"description": "The ARIA label for documentation menu"
},
"theme.docs.versions.unreleasedVersionLabel": {
- "message": "This is unreleased documentation for {siteTitle} {versionLabel} version.",
+ "message": "This is unreleased documentation for toio™ Core Cube Specifications {versionLabel} version.",
"description": "The label used to tell the user that he's browsing an unreleased doc version"
},
"theme.docs.versions.unmaintainedVersionLabel": {
- "message": "This is documentation for {siteTitle} {versionLabel}, which is no longer actively maintained.",
+ "message": "This is documentation for toio™ Core Cube Specifications {versionLabel}, which is no longer actively maintained.",
"description": "The label used to tell the user that he's browsing an unmaintained doc version"
},
"theme.docs.versions.latestVersionSuggestionLabel": {
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/current b/website/i18n/en/docusaurus-plugin-content-docs/current
index 68fd28dc..c7df07aa 120000
--- a/website/i18n/en/docusaurus-plugin-content-docs/current
+++ b/website/i18n/en/docusaurus-plugin-content-docs/current
@@ -1 +1 @@
-version-2.3.0
\ No newline at end of file
+version-2.4.0
\ No newline at end of file
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/current.json b/website/i18n/en/docusaurus-plugin-content-docs/current.json
index 4ce25e89..d5d98ed0 120000
--- a/website/i18n/en/docusaurus-plugin-content-docs/current.json
+++ b/website/i18n/en/docusaurus-plugin-content-docs/current.json
@@ -1 +1 @@
-version-2.3.0.json
\ No newline at end of file
+version-2.4.0.json
\ No newline at end of file
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0.json b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0.json
new file mode 100644
index 00000000..e7c60262
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0.json
@@ -0,0 +1,22 @@
+{
+ "version.label": {
+ "message": "2.4.0",
+ "description": "The label for version 2.4.0"
+ },
+ "sidebar.docs.category.はじめに": {
+ "message": "About",
+ "description": "The label for category はじめに in sidebar docs"
+ },
+ "sidebar.docs.category.ハードウェア仕様": {
+ "message": "Hardware specifications",
+ "description": "The label for category ハードウェア仕様 in sidebar docs"
+ },
+ "sidebar.docs.category.通信仕様": {
+ "message": "Communication specifications",
+ "description": "The label for category 通信仕様 in sidebar docs"
+ },
+ "sidebar.docs.category.各種機能": {
+ "message": "Functions",
+ "description": "The label for category 各種機能 in sidebar docs"
+ }
+}
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/about.md b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/about.md
new file mode 100644
index 00000000..07bc66a8
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/about.md
@@ -0,0 +1,49 @@
+---
+id: about
+title: About this site
+sidebar_label: About this site
+---
+
+## Purpose
+
+This website covers the technical specifications of the toio Core Cube (hereafter referred to as "the cube") for those who look to use toio for expert programming. We hope the information published on this website will help in the discovery and creation of and create new ways to use and enjoy the cube and expand the world of toio.
+
+Visit the [official toio website](https://toio.io) for an overview of toio products and how to purchase these products. Before using toio for the first time, please also see the [manuals](https://toio.io/manual).
+
+## Help
+
+The following resources can be used for troubleshooting depending on the issue.
+
+### toio support site
+
+For questions about toio products and toio format titles available, please see the [toio support website](https://support.toio.io/).
+
+### GitHub Issue
+
+If corrections such as typos or errors need to be made to the website content, please create an Issue on our [GitHub repository](https://github.com/toio/toio-spec).
+
+### Stack Overflow
+
+For general questions, please see or create questions tagged "toio" on Stack Overflow.
+
+- [Frequent 'toio' Questions \- Stack Overflow](https://stackoverflow.com/questions/tagged/toio?sort=frequent)
+
+## License
+
+All documents on this site are licensed under the [Creative Commons Attribution 4.0 International Public License](https://creativecommons.org/licenses/by/4.0/). All illustrations and 3D data on this site are licensed under the [Creative Commons Attribution-ShareAlike 4.0 International Public License](https://creativecommons.org/licenses/by-nd/4.0/). Under these licenses users are free to use the contents of this website as they wish. Please include the following notation when reusing the content on this website.
+
+```text
+Original document by Sony Interactive Entertainment Inc. is licensed under CC BY 4.0.
+https://github.com/toio/toio-spec
+https://creativecommons.org/licenses/by/4.0/
+```
+
+```text
+Original image and 3D data by Sony Interactive Entertainment Inc. is licensed under CC BY-ND 4.0.
+https://github.com/toio/toio-spec
+https://creativecommons.org/licenses/by-nd/4.0/
+```
+
+## Caution
+
+Specifications and appearance of the cube are subject to change without notice. Illustrations on this website also may not represent the details of the actual product. The numerical values published on this website are based on our own measurements and specifications, and may vary depending on actual usage conditions and environments.
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/Gesundroid-mat-for-public.svg b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/Gesundroid-mat-for-public.svg
new file mode 100644
index 00000000..c334551e
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/Gesundroid-mat-for-public.svg
@@ -0,0 +1,1655 @@
+
+
+
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/configuration_flat_status_threshold_pitch.svg b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/configuration_flat_status_threshold_pitch.svg
new file mode 100644
index 00000000..849aa300
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/configuration_flat_status_threshold_pitch.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/configuration_flat_status_threshold_roll.svg b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/configuration_flat_status_threshold_roll.svg
new file mode 100644
index 00000000..3d808895
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/configuration_flat_status_threshold_roll.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/cube_basics_charging.svg b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/cube_basics_charging.svg
new file mode 100644
index 00000000..0c4ef6d6
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/cube_basics_charging.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/cube_basics_light.svg b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/cube_basics_light.svg
new file mode 100644
index 00000000..8d07100c
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/cube_basics_light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/cube_basics_power_on_off.svg b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/cube_basics_power_on_off.svg
new file mode 100644
index 00000000..ef300573
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/cube_basics_power_on_off.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/favicon.png b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/favicon.png
new file mode 100644
index 00000000..7f823914
Binary files /dev/null and b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/favicon.png differ
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/hardware_components.svg b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/hardware_components.svg
new file mode 100644
index 00000000..4182d5b0
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/hardware_components.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/hardware_magnet.svg b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/hardware_magnet.svg
new file mode 100644
index 00000000..dce889d1
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/hardware_magnet.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/hardware_magnet_layout.svg b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/hardware_magnet_layout.svg
new file mode 100644
index 00000000..e06e9f2e
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/hardware_magnet_layout.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/hardware_other_polarity.svg b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/hardware_other_polarity.svg
new file mode 100644
index 00000000..666efd9a
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/hardware_other_polarity.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/hardware_size_bottom_view.svg b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/hardware_size_bottom_view.svg
new file mode 100644
index 00000000..3734c93a
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/hardware_size_bottom_view.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/hardware_size_mount.svg b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/hardware_size_mount.svg
new file mode 100644
index 00000000..608f86b0
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/hardware_size_mount.svg
@@ -0,0 +1,147 @@
+
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/hardware_size_side_view.svg b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/hardware_size_side_view.svg
new file mode 100644
index 00000000..473e787c
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/hardware_size_side_view.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id-tce-answer.svg b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id-tce-answer.svg
new file mode 100644
index 00000000..3eb9aca1
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id-tce-answer.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id-tce-baton.svg b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id-tce-baton.svg
new file mode 100644
index 00000000..6c0e02b7
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id-tce-baton.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id-tce-color.svg b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id-tce-color.svg
new file mode 100644
index 00000000..93111ae2
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id-tce-color.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id-tce-dash.svg b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id-tce-dash.svg
new file mode 100644
index 00000000..257e72f3
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id-tce-dash.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id-tce-dnd_normal.svg b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id-tce-dnd_normal.svg
new file mode 100644
index 00000000..fa863c86
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id-tce-dnd_normal.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id-tce-dnd_rodeo.svg b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id-tce-dnd_rodeo.svg
new file mode 100644
index 00000000..352ab7f1
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id-tce-dnd_rodeo.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id-tce-kaiju.svg b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id-tce-kaiju.svg
new file mode 100644
index 00000000..9a6ffe4d
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id-tce-kaiju.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id-tce-laser_challenge.svg b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id-tce-laser_challenge.svg
new file mode 100644
index 00000000..517402b5
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id-tce-laser_challenge.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id-tce-laser_create.svg b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id-tce-laser_create.svg
new file mode 100644
index 00000000..285ff67e
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id-tce-laser_create.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id-tce-music_1.svg b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id-tce-music_1.svg
new file mode 100644
index 00000000..a0ca1970
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id-tce-music_1.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id-tce-music_2.svg b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id-tce-music_2.svg
new file mode 100644
index 00000000..e477130e
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id-tce-music_2.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id-tce-music_3.svg b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id-tce-music_3.svg
new file mode 100644
index 00000000..f888c694
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id-tce-music_3.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id-tce-music_4.svg b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id-tce-music_4.svg
new file mode 100644
index 00000000..47f5527f
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id-tce-music_4.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id-tce-pullback.svg b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id-tce-pullback.svg
new file mode 100644
index 00000000..1c3d84d4
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id-tce-pullback.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id-tce-skunk_2p.svg b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id-tce-skunk_2p.svg
new file mode 100644
index 00000000..6f810f85
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id-tce-skunk_2p.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id-tce-skunk_cpu.svg b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id-tce-skunk_cpu.svg
new file mode 100644
index 00000000..7e55230e
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id-tce-skunk_cpu.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id-tce-watchout_2p.svg b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id-tce-watchout_2p.svg
new file mode 100644
index 00000000..f217c7d1
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id-tce-watchout_2p.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id-tce-watchout_cpu.svg b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id-tce-watchout_cpu.svg
new file mode 100644
index 00000000..87038f01
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id-tce-watchout_cpu.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id-tce-watchout_free.svg b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id-tce-watchout_free.svg
new file mode 100644
index 00000000..37a52bc2
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id-tce-watchout_free.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_card_auto_tackle.svg b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_card_auto_tackle.svg
new file mode 100644
index 00000000..5be3d20a
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_card_auto_tackle.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_card_auto_tackle_back.svg b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_card_auto_tackle_back.svg
new file mode 100644
index 00000000..1e727f21
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_card_auto_tackle_back.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_card_automatic_chasing.svg b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_card_automatic_chasing.svg
new file mode 100644
index 00000000..d57cd4d1
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_card_automatic_chasing.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_card_automatic_chasing_back.svg b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_card_automatic_chasing_back.svg
new file mode 100644
index 00000000..2131616b
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_card_automatic_chasing_back.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_card_random.svg b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_card_random.svg
new file mode 100644
index 00000000..93242d88
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_card_random.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_card_random_back.svg b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_card_random_back.svg
new file mode 100644
index 00000000..f9835aae
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_card_random_back.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_card_rush.svg b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_card_rush.svg
new file mode 100644
index 00000000..6945b4e0
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_card_rush.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_card_rush_back.svg b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_card_rush_back.svg
new file mode 100644
index 00000000..01059593
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_card_rush_back.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_card_side_attack.svg b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_card_side_attack.svg
new file mode 100644
index 00000000..513ef78f
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_card_side_attack.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_card_side_attack_back.svg b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_card_side_attack_back.svg
new file mode 100644
index 00000000..e6227787
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_card_side_attack_back.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_card_swing_attack_power_up.svg b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_card_swing_attack_power_up.svg
new file mode 100644
index 00000000..138d456d
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_card_swing_attack_power_up.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_card_swing_attack_power_up_back.svg b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_card_swing_attack_power_up_back.svg
new file mode 100644
index 00000000..bbaa4df4
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_card_swing_attack_power_up_back.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_card_tackle_power_up.svg b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_card_tackle_power_up.svg
new file mode 100644
index 00000000..9536c76a
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_card_tackle_power_up.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_card_tackle_power_up_back.svg b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_card_tackle_power_up_back.svg
new file mode 100644
index 00000000..5970e747
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_card_tackle_power_up_back.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_card_typhoon.svg b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_card_typhoon.svg
new file mode 100644
index 00000000..a258702e
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_card_typhoon.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_card_typhoon_back.svg b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_card_typhoon_back.svg
new file mode 100644
index 00000000..01f660b2
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_card_typhoon_back.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_illust_card_sticker.svg b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_illust_card_sticker.svg
new file mode 100644
index 00000000..27062c96
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_illust_card_sticker.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_illust_cube_card.png b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_illust_cube_card.png
new file mode 100644
index 00000000..83ea560b
Binary files /dev/null and b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_illust_cube_card.png differ
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_illust_cube_playmat.png b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_illust_cube_playmat.png
new file mode 100644
index 00000000..b78c5628
Binary files /dev/null and b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_illust_cube_playmat.png differ
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_illust_mat.png b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_illust_mat.png
new file mode 100644
index 00000000..2d9b78a5
Binary files /dev/null and b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_illust_mat.png differ
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_mark_craft_fighter.svg b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_mark_craft_fighter.svg
new file mode 100644
index 00000000..14b898b0
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_mark_craft_fighter.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_mark_finger_strike.svg b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_mark_finger_strike.svg
new file mode 100644
index 00000000..1e0e69bd
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_mark_finger_strike.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_mark_finger_strike_1p.svg b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_mark_finger_strike_1p.svg
new file mode 100644
index 00000000..8365fd97
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_mark_finger_strike_1p.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_mark_free_move.svg b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_mark_free_move.svg
new file mode 100644
index 00000000..55639577
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_mark_free_move.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_mark_rhythm_and_go.svg b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_mark_rhythm_and_go.svg
new file mode 100644
index 00000000..3ad1b498
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_mark_rhythm_and_go.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_mark_skunk_chaser.svg b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_mark_skunk_chaser.svg
new file mode 100644
index 00000000..1a9724b0
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_mark_skunk_chaser.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_position_id-picotons_autoplay.svg b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_position_id-picotons_autoplay.svg
new file mode 100644
index 00000000..cf1f9d4d
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_position_id-picotons_autoplay.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_position_id-picotons_control.svg b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_position_id-picotons_control.svg
new file mode 100644
index 00000000..dd91b829
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_position_id-picotons_control.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_position_id-picotons_play_back.svg b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_position_id-picotons_play_back.svg
new file mode 100644
index 00000000..d195fe99
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_position_id-picotons_play_back.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_position_id-picotons_play_front.svg b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_position_id-picotons_play_front.svg
new file mode 100644
index 00000000..421f0563
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_position_id-picotons_play_front.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_position_id_angle.svg b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_position_id_angle.svg
new file mode 100644
index 00000000..33819985
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_position_id_angle.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_position_id_coordinate.png b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_position_id_coordinate.png
new file mode 100644
index 00000000..0c4be152
Binary files /dev/null and b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_position_id_coordinate.png differ
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_rhythm_back.svg b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_rhythm_back.svg
new file mode 100644
index 00000000..27256ab9
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_rhythm_back.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_rhythm_front.svg b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_rhythm_front.svg
new file mode 100644
index 00000000..f87d801c
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_rhythm_front.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_rhythm_go.svg b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_rhythm_go.svg
new file mode 100644
index 00000000..e2ba01af
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_rhythm_go.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_rhythm_left.svg b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_rhythm_left.svg
new file mode 100644
index 00000000..71f4ebf1
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_rhythm_left.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_rhythm_right.svg b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_rhythm_right.svg
new file mode 100644
index 00000000..04c6f18e
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_rhythm_right.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_skunk_blue.svg b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_skunk_blue.svg
new file mode 100644
index 00000000..584b0b09
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_skunk_blue.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_skunk_brown.svg b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_skunk_brown.svg
new file mode 100644
index 00000000..61b14c8d
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_skunk_brown.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_skunk_green.svg b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_skunk_green.svg
new file mode 100644
index 00000000..0e1a98c9
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_skunk_green.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_skunk_orange.svg b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_skunk_orange.svg
new file mode 100644
index 00000000..b3840232
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_skunk_orange.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_skunk_red.svg b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_skunk_red.svg
new file mode 100644
index 00000000..9f3f441b
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_skunk_red.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_skunk_yellow.svg b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_skunk_yellow.svg
new file mode 100644
index 00000000..91977643
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_skunk_yellow.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_sticker_panic.svg b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_sticker_panic.svg
new file mode 100644
index 00000000..320d5fbf
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_sticker_panic.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_sticker_shock.svg b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_sticker_shock.svg
new file mode 100644
index 00000000..28dbd652
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_sticker_shock.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_sticker_speed_down.svg b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_sticker_speed_down.svg
new file mode 100644
index 00000000..3db8dea7
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_sticker_speed_down.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_sticker_speed_up.svg b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_sticker_speed_up.svg
new file mode 100644
index 00000000..4a265858
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_sticker_speed_up.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_sticker_spin.svg b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_sticker_spin.svg
new file mode 100644
index 00000000..2bc97bc9
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_sticker_spin.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_sticker_wobble.svg b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_sticker_wobble.svg
new file mode 100644
index 00000000..36370fa2
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_sticker_wobble.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_tce_baton-mark.o.svg b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_tce_baton-mark.o.svg
new file mode 100644
index 00000000..b1f79ee3
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/id_tce_baton-mark.o.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/magnet_coordinate_system.svg b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/magnet_coordinate_system.svg
new file mode 100644
index 00000000..f3547e06
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/magnet_coordinate_system.svg
@@ -0,0 +1,181 @@
+
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/magnet_prox_dir.svg b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/magnet_prox_dir.svg
new file mode 100644
index 00000000..0881f79c
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/magnet_prox_dir.svg
@@ -0,0 +1,124 @@
+
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/motor_cube_direction.svg b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/motor_cube_direction.svg
new file mode 100644
index 00000000..046b892c
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/motor_cube_direction.svg
@@ -0,0 +1,72 @@
+
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/motor_movement_type.svg b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/motor_movement_type.svg
new file mode 100644
index 00000000..c6965ce5
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/motor_movement_type.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/motor_wheel_speed.svg b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/motor_wheel_speed.svg
new file mode 100644
index 00000000..dc105daf
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/motor_wheel_speed.svg
@@ -0,0 +1,264 @@
+
+
+
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/motor_wheel_speed_v2.0.0.svg b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/motor_wheel_speed_v2.0.0.svg
new file mode 100644
index 00000000..dfc90f19
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/motor_wheel_speed_v2.0.0.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/motor_wheel_speed_v2.1.0.svg b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/motor_wheel_speed_v2.1.0.svg
new file mode 100644
index 00000000..7f15e9ca
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/motor_wheel_speed_v2.1.0.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/sensor_cube_axis.svg b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/sensor_cube_axis.svg
new file mode 100644
index 00000000..18bc3ea1
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/sensor_cube_axis.svg
@@ -0,0 +1,125 @@
+
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/sensor_posture_front_back.svg b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/sensor_posture_front_back.svg
new file mode 100644
index 00000000..43fcef8c
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/sensor_posture_front_back.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/sensor_posture_left_right.svg b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/sensor_posture_left_right.svg
new file mode 100644
index 00000000..408c97b1
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/sensor_posture_left_right.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/sensor_posture_normal_up.svg b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/sensor_posture_normal_up.svg
new file mode 100644
index 00000000..b466dbbf
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/sensor_posture_normal_up.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/sequential_operation.svg b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/sequential_operation.svg
new file mode 100644
index 00000000..381f2f81
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/sequential_operation.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/social_image.png b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/social_image.png
new file mode 100644
index 00000000..584d4e68
Binary files /dev/null and b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/social_image.png differ
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/top_hardware.svg b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/top_hardware.svg
new file mode 100644
index 00000000..c096463f
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/top_hardware.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/top_software.svg b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/top_software.svg
new file mode 100644
index 00000000..b123f204
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/assets/top_software.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/battery.md b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/battery.md
new file mode 100644
index 00000000..8b0677a0
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/battery.md
@@ -0,0 +1,30 @@
+---
+id: ble_battery
+title: Battery
+sidebar_label: Battery
+---
+
+The following characteristics can be used to view the remaining battery level of the cube.
+
+| Property | Value |
+| ------------------- | -------------------------------------------------- |
+| Characteristic UUID | 10B20108-5B3B-4571-9508-CF3EFCD7BBAE |
+| Properties | [Read](#read-operations), [Notify](#notifications) |
+| Descriptor | Battery Information |
+
+## Read operations
+
+The configuration data below can be used to obtain the remaining battery level of the cube.
+
+| Data location | Type | Content | Example |
+| ------------- | ----- | ----------------------- | ------------------- |
+| 0 | UInt8 | Remaining battery level | `0x50` (80 percent) |
+
+#### Remaining battery level
+
+The remaining battery level is obtained in values ranging between 0 and 100 in increments of 10. These values are in percentages.
+
+## Notifications
+
+At intervals of about 5 seconds, this characteristic sends information to the BLE central.
+The type of information and structure of data being sent is the same as that for the [Read operations](#read-operations).
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/ble_communication_overview.md b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/ble_communication_overview.md
new file mode 100644
index 00000000..7103e514
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/ble_communication_overview.md
@@ -0,0 +1,66 @@
+---
+id: ble_communication_overview
+title: Communication Overview
+sidebar_label: 🔄 Communication Overview
+---
+
+## Communication with the cube
+
+Communication with the cube is done via Bluetooth® standard Ver. 4.2 (Bluetooth® Low Energy, hereafter BLE).
+
+## Discovering the cube
+
+When the cube is turned on, it runs as a BLE peripheral and advertises the following information.
+
+| Definition | Value |
+| ---------------------------------------- | --------------------------------------------------- |
+| Flags | General Discoverable Mode, BR/EDR Not Supported |
+| Complete list of 128bit Service UUID | 10B20100-5B3B-4571-9508-CF3EFCD7BBAE |
+| Shortened Local Name | toio-XXX |
+
+### Complete Local Name and Shortened Local Name
+
+Since v02.0006 (BLE protocol version v2.4.0), the shortened local name is used in the advertisement packet instead of the complete local name.
+The shortened local name is `toio-XXX`.
+
+The complete local name has changed from v02.0006 (BLE protocol version v2.4.0), to `toio-XXX (toio Core Cube)`.
+Complete local name is read by the device name characteristic of the generic access.
+
+XXX is a unique cube ID string. Because this remains the same even after the cube is reset, it is useful for identifying individual cubes when dozens of cubes are being operated simultaneously.
+The ID string is not guaranteed to be a unique to every cube. It is also not the same number as the serial number printed on the cube.
+
+The string used for the ID is a string of 3 alphanumeric characters consisting of a letter + number + letter in that order.
+
+The letter can be uppercase or lowercase.
+The following letters are not used.
+
+| Letters not used in ID |
+| --------------------------------------- |
+| l,I,o,O,g,q,s,S,v,V,u,U,w,W,x,X,y,Y,z,Z |
+
+| Examples of shortened local names |
+| --------------------------------- |
+| toio-M0p |
+| toio-a9R |
+| toio-C3P |
+
+#### Complete Local name of the previous version (system software v02.0005, BLE protocol version v2.3.0)
+
+The complete local name of v02.0005 (BLE protocol version v2.3.0) is `toio Core Cube-XXX`.
+
+## Using the cube's functions
+
+Each type of function can be viewed or controlled through the following services and the characteristics under these services.
+
+| Property | Value |
+| --------------- | ----------------------------------------------- |
+| Type | Primary Service |
+| Service UUID | 10B20100-5B3B-4571-9508-CF3EFCD7BBAE |
+| Characteristics | [ID Information / Identification sensor](id.md) |
+| | [Sensor Information / Motion Sensor](sensor.md) |
+| | [Button Information / Button](button.md) |
+| | [Battery Information / Battery](battery.md) |
+| | [Motor Control / Motor](motor.md) |
+| | [Light Control / Indicator](light.md) |
+| | [Sound Control / Sound](sound.md) |
+| | [Configuration](configuration.md) |
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/button.md b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/button.md
new file mode 100644
index 00000000..2fd9b427
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/button.md
@@ -0,0 +1,41 @@
+---
+id: ble_button
+title: Button
+sidebar_label: Button
+---
+
+There is one function button located at the bottom of the cube (see [Parts](hardware_components.md)).
+
+The state of the button can be obtained using the following characteristics.
+
+| Property | Value |
+| ------------------- | -------------------------------------------------- |
+| Characteristic UUID | 10B20107-5B3B-4571-9508-CF3EFCD7BBAE |
+| Properties | [Read](#read-operations), [Notify](#notifications) |
+| Descriptor | Button Information |
+
+## Read operations
+
+The configuration data below can be used to obtain the state of the button.
+
+| Data location | Type | Content | Example |
+| ------------- | ----- | --------------- | ------------------------------------------- |
+| 0 | UInt8 | Button ID | `0x01` (Function button) |
+| 1 | UInt8 | State of button | `0x80` (Pressed) |
+
+Button ID
+
+The ID and corresponding button are as follows (see: [Parts](hardware_components.md)).
+
+| Button ID | Button |
+| --------- | --------------- |
+| `0x01` | Function button |
+
+#### State of button
+
+The value for the state of the button is `0x80` when pressed and `0x00` when released.
+
+## Notifications
+
+When the state of the button changes, this characteristic notifies the BLE central of this.
+The type of information and structure of data being sent are the same as for the [Read operations](#read-operations).
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/configuration.md b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/configuration.md
new file mode 100644
index 00000000..3c677a40
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/configuration.md
@@ -0,0 +1,426 @@
+---
+id: ble_configuration
+title: Configuration
+sidebar_label: 🔄 Configuration
+---
+
+The cube's information, such as communication specification version numbers and configuration information, is stored on the cube.
+This information can be obtained and modified using the following characteristic.
+
+| Property | Value |
+| ------------------- | ------------------------------------------------------------------------------ |
+| Characteristic UUID | 10B201FF-5B3B-4571-9508-CF3EFCD7BBAE |
+| Properties | [Write](#write-operations), [Read](#read-operations), [Notify](#notifications) |
+| Descriptor | Configuration |
+
+## Write operations
+
+:::note
+
+While the different setting values can be changed depending on the write operation used, if connection to the cube is interrupted, all changes are discarded and the cube is returned to default values.
+
+:::
+
+### Requesting the BLE protocol version
+
+The BLE protocol version of the cube can be requested by writing the following data. See [Obtaining the BLE protocol version](#obtaining-the-ble-protocol-version) for how to obtain the response.
+
+| Data location | Type | Content | Example |
+| ------------- | ----- | ------------------ | ---------------------------------------------------------------- |
+| 0 | UInt8 | Configuration type | `0x01` (BLE protocol version request) |
+| 1 | UInt8 | Reserved | `0x00` |
+
+### Horizontal detection threshold settings
+
+Horizontal detection value obtained through the [Motion detection](sensor.md) becomes `0x00` (not horizontal) if the angle between the bottom of the cube and the horizontal plane (θ in the figure below) exceeds the threshold. This threshold can be changed by writing the following data.
+
+| Data location | Type | Content | Example |
+| ------------- | ----- | ------------------ | --------------------------------------------------------------------------- |
+| 0 | UInt8 | Configuration type | `0x05` (Horizontal detection threshold settings) |
+| 1 | UInt8 | Reserved | `0x00` |
+| 2 | UInt8 | Threshold | `0x0A` (10 degrees) |
+
+The threshold apply to both the roll and pitch orientation of rotation. The threshold range and default value are as follows
+
+**Roll orientation**
+![Flat Status Threshold - Roll](assets/configuration_flat_status_threshold_roll.svg)
+
+**Pitch orientation**
+![Flat Status Threshold - Pitch](assets/configuration_flat_status_threshold_pitch.svg)
+
+| Property | Range | Default value |
+| --------- | -------------------- | -------------- |
+| Threshold | `1` - `45` (degrees) | `45` (degrees) |
+
+### Collision detection threshold settings
+
+Collision detection value obtained through the [Motion detection](sensor.md) becomes `0x01` (collision) if the force of the collision applied to the cube exceeds the threshold. This threshold can be changed by writing the following data.
+
+| Data location | Type | Content | Example |
+| ------------- | ----- | ------------------ | -------------------------------------------------------------------------- |
+| 0 | UInt8 | Configuration type | `0x06` (Collision detection threshold settings) |
+| 1 | UInt8 | Reserved | `0x00` |
+| 2 | UInt8 | Threshold | `0x0A` (Level 10) |
+
+The threshold range and default value are as follows. These values represent the magnitude of the collision.
+
+| Property | Range | Default value |
+| --------- | ------------------ | ------------- |
+| Threshold | `1` - `10` (Level) | `7` (Level) |
+
+### Double-tap detection time interval settings
+
+Double-tap detection obtained through the [Motion detection](sensor.md) becomes `1` (with double-tap) if the cube is tapped once and then tapped again within the specified time interval. The time interval between the two taps can be changed by writing the following data.
+
+| Data location | Type | Content | Example |
+| ------------- | ----- | ------------------ | ------------------------------------------------------------------------------- |
+| 0 | UInt8 | Configuration type | `0x17` (Double-tap detection time interval settings) |
+| 1 | UInt8 | Reserved | `0x00` |
+| 2 | UInt8 | Time interval | `0x07` (Level 7) |
+
+The threshold range and default value for the time interval are as follows. The larger the value, the longer the time interval will be.
+
+| Property | Range | Default value |
+| ------------- | ----------------- | ------------- |
+| Time interval | `0` - `7` (Level) | `5` (Level) |
+
+### Identification sensor ID notification settings
+
+Set the notification frequency for the [Position ID](id.md#position-id) and [Standard ID](id.md#standard-id) from the identification sensor. **Notifications are sent when both the [Minimum Notification Interval] and [Notification Conditions] are met**. See [Responses to identification sensor ID notification settings](#responses-to-identification-sensor-id-notification-settings) for how to obtain the response.
+
+| Data location | Type | Content | Example |
+| ------------- | ----- | ----------------------------- | ---------------------------------------------------------------------------------- |
+| 0 | UInt8 | Configuration type | `0x18` (Identification sensor ID notification settings) |
+| 1 | UInt8 | Reserved | `0x00` |
+| 2 | UInt8 | Minimum notification interval | `0x01` (10 msec) |
+| 3 | UInt8 | Notification condition | `0x01` (Notifications for changes only) |
+
+#### Minimum notification interval
+
+Sets the minimum interval between notifications. The range and default value are as follows. This is set in multiples of 10 milliseconds intervals. For example, setting `5` will send notifications at intervals of 50 milliseconds or longer. This is only the minimum value for the notification interval, and does not guarantee constant intervals between notifications. Please note that the notification interval may vary depending on the status of the central unit.
+
+| Property | Range | Default value |
+| ----------------------------- | ----------- | --------------------- |
+| Minimum notification interval | `0` - `255` | `1` (10 milliseconds) |
+
+#### Notification conditions
+
+Select one of the following three types of conditions for notifications to be sent. The default value is `0xff`.
+
+| Notification condition | Content |
+| ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ |
+| `0x00` | Notifications are sent even if there is no change in the notification content. |
+| `0x01` | Notifications are sent when there is a change of 2 or more coordinates and 3 or more degrees in angle. |
+| `0xff` | Notifications are stopped for 300 milliseconds if there is no change in coordinates or angle, otherwise notifications continue to be sent. |
+
+### Identification sensor ID missed notification settings
+
+Set the [Position ID missed](id.md#position-id-missed) and [Standard ID missed](id.md#standard-id-missed) notification sensitivity of the identification sensor. See [Responses to identification sensor ID missed notification settings](#responses-to-identification-sensor-id-missed-notification-settings) for how to obtain setting results.
+
+| Data location | Type | Content | Example |
+| ------------- | ----- | ------------------------ | ----------------------------------------------------------------------------------------- |
+| 0 | UInt8 | Configuration type | `0x19` (Identification sensor ID missed notification settings) |
+| 1 | UInt8 | Reserved | `0x00` |
+| 2 | UInt8 | Notification sensitivity | `0x0A` (100ms) |
+
+#### Notification sensitivity
+
+Set the notification sensitivity when the cube is removed from the top of something on which a Position ID or Standard ID is printed. The range and default value are as follows. This is set in multiples of 10 millisecond intervals. For example, if `5`, is set, "missed" notifications are sent when the cube is removed from the mat or card for 50 milliseconds or longer. If the cube is put back on the mat or card within 50 milliseconds after it is removed, no notifications are sent.
+
+| Property | Range | Default value |
+| ------------------------ | ----------- | --------------------- |
+| Notification sensitivity | `0` - `255` | `7` (70 milliseconds) |
+
+### Magnetic sensor settings
+
+Write the following data to enable or disable the [Magnetic sensor](magnetic_sensor.md) function. This function is disabled by default. See [Responses to magnetic sensor settings](#responses-to-magnetic-sensor-settings) for how to obtain setting results.
+
+| Data location | Type | Content | Example |
+| ------------- | ----- | ---------------------- | --------------------------------------------------------------------- |
+| 0 | UInt8 | Configuration type | `0x1b` (Magnetic sensor function settings) |
+| 1 | UInt8 | Reserved | `0x00` |
+| 2 | UInt8 | Function settings | `0x01` (Activation of magnet state detection) |
+| 3 | UInt8 | Notification interval | `0x01` (20 milliseconds) |
+| 4 | UInt8 | Notification condition | `0x01` (Notifications for changes only) |
+
+The setting values are as follows.
+Magnet status detection and magnetic force detection cannot be enabled at the same time.
+
+| Function Setting | Definition |
+| ---------------- | ------------------------------- |
+| `0x00` | Disable (default value) |
+| `0x01` | Enable magnet state detection |
+| `0x02` | Enable magnetic force detection |
+
+#### Notification interval
+
+Sets the interval for notifications. This is set in multiples of 20 milliseconds. If `0` is set, notifications are disabled.
+Note that this is set in multiples different from that of the notification interval settings for high-precision position and tilt information.
+
+| Property | Range |
+| --------------------- | -------------------------------------- |
+| Notification interval | `0` - `255` (0 disables notifications) |
+
+#### Notification conditions
+
+Sets the conditions for notifications to be sent. When `0x00` is set, notifications are sent according to the notification interval even if there is no change.
+When `0x01` is set, notifications are sent only when there is change in the magnet state. However, even if there are great changes, notifications are not sent at intervals shorter than that of the above notification interval settings.
+
+| Function Setting | Definition |
+| ---------------- | ----------------------------------------- |
+| `0x00` | Notifications even if there is no change |
+| `0x01` | Notifications only when there are changes |
+
+### Motor speed information acquisition settings
+
+Enable or disable [Motor - Obtaining motor speed information](motor.md#obtaining-motor-speed-information) by writing the following data. Motor speed information acquisition is disabled by default. See [Responses to motor speed information acquisition settings](#responses-to-motor-speed-information-acquisition-settings) for how to obtain setting results.
+
+| Data location | Type | Content | Example |
+| ------------- | ----- | ------------------ | -------------------------------------------------------------------------------- |
+| 0 | UInt8 | Configuration type | `0x1c` (Motor speed information acquisition settings) |
+| 1 | UInt8 | Reserved | `0x00` |
+| 2 | UInt8 | Setting value | `0x01` (Enable) |
+
+The setting values are as follows
+
+| Setting value | Meaning |
+| ------------- | ------------------------ |
+| `0x00` | Disabled (default value) |
+| `0x01` | Enabled |
+
+### Posture angle detection settings
+
+Write the following data to enable or disable the [Posture Angle detection](high_precision_tilt_sensor.md) function. The posture angle detection function is disabled by default. See [Responses to posture angle detection settings](#responses-to-posture-angle-detection-settings) for how to obtain setting results.
+
+| Data location | Type | Content | Example |
+| ------------- | ----- | ---------------------------- | -------------------------------------------------------------------- |
+| 0 | UInt8 | Configuration type | `0x1d` (Posture angle detection settings) |
+| 1 | UInt8 | Reserved | `0x00` |
+| 2 | UInt8 | Type of notification content | `0x01` (Euler angle) |
+| 3 | UInt8 | Notification interval | `0x01` (10 milliseconds) |
+| 4 | UInt8 | Notification condition | `0x01` (Notifications only where there are changes) |
+
+The types of notifications are as follows.
+
+| Type of notifications | Definition |
+| -------------------------- | -------------------------------------------- |
+| `0x01` | Notifications in Euler angles |
+| `0x02` | Notifications in quaternions |
+| `0x03` | Notifications in high precision Euler angles |
+
+#### Notification interval
+
+Sets the interval for notifications. This is set in multiples of 10 milliseconds. If `0` is set, notifications are disabled.
+Note that this is set in multiples different from that of the magnetic sensor notification interval settings.
+
+| Property | Range |
+| --------------------- | -------------------------------------- |
+| Notification interval | `0` - `255` (0 disables notifications) |
+
+#### Notification conditions
+
+Sets the conditions for notifications to be sent. If `0x00` is set, notifications are sent according to the notification interval even if there is no change.
+When `0x01` is set, notifications are sent only when there is change in the tilt status. However, even if there are great changes, notifications are not sent at intervals shorter than that of the above notification interval settings.
+
+| Function Setting | Definition |
+| ---------------- | ----------------------------------------- |
+| `0x00` | Notifications even if there is no change |
+| `0x01` | Notifications only when there is a change |
+
+
+### Request to change connection interval
+
+The cube requests the Central device to change the connection interval by writing the following data.
+If the Central device accepts the change request, the connection interval is changed.
+If the Central device responds to the change request, the connection interval is changed.
+
+:::note
+
+The connection interval value is determined by the central device.
+It may be a different value than the one requested by the cube side, or it may not be changed.
+Central device may disconnect the BLE connection if the Central side requests an unacceptable value.
+
+:::
+
+| Data location | Type | Content | Example |
+| ------------- | ------ | ------------------ | ------------------------------------------------------------------------- |
+| 0 | UInt8 | Configuration type | `0x30` (Request to change connection interval) |
+| 1 | UInt8 | Reserved | `0x00` |
+| 2 | UInt16 | minimum value | `0x0008` (10 milliseconds) |
+| 4 | UInt16 | maximum value | `0x0050` (100 milliseconds) |
+
+#### minimum / maximum value
+
+Sets the minimum and maximum connection interval time.
+Allowed values are defined by the BLE specifications.
+Possible values are 0xFFFF (no requested value) or values from 0x0006 to 0x0C80.
+The connection interval time is the specified value x1.25 [ms].
+
+
+### Obtaining the requested connection interval value
+
+Get the requested value set in "Connection Interval Change Request" by writing the following data.
+This value is not the actual connection interval value.
+
+If the requested connection interval value is obtained without a
+[Request to change connection interval](#Request-to-change-connection-interval-),
+0x08 (as minimum value) and 0x50 (as maximum value) can be obtained.
+
+| Data location | Type | Content | Example |
+| ------------- | ----- | ------------------ | ------------------------------------------------------------------------------------- |
+| 0 | UInt8 | Configuration type | `0x31` (Obtaining the requested connection interval value) |
+| 1 | UInt8 | Reserved | `0x00` |
+
+### Obtaining the actual connection interval value
+
+Get the actual connection interval value between the cube and the central device by writing the following data.
+
+You can check if the connection interval was changed as requested by comparing this value with the requested value set in the
+[Request to change connection interval](#Request-to-change-connection-interval-).
+
+| Data location | Type | Content | Example |
+| ------------- | ----- | ------------------ | ----------------------------------------------------------------------------------- |
+| 0 | UInt8 | Configuration type | `0x32` (Obtaining the actual connection interval value) |
+| 1 | UInt8 | Reserved | `0x00` |
+
+
+## Read operations
+
+### Obtaining the BLE protocol version
+
+See [Requesting the BLE protocol version](#requesting-the-ble-protocol-version) for the request method.
+
+| Data location | Type | Contents | Example |
+| ------------- | ------ | ------------------------------------ | ---------------------------------------------------------------------- |
+| 0 | UInt8 | Configuration type | `0x81` (Obtaining the BLE protocol version) |
+| 1 | UInt8 | Reserved | `0x00` |
+| 2 | String | BLE protocol version (5 bytes utf-8) | |
+
+### Responses to identification sensor ID notification settings
+
+If [Identification sensor ID notification settings](#identification-sensor-id-notification-settings) is written, the following responses are obtained depending on the results of the identification sensor ID notification settings.
+
+| Data location | Type | Content | Example |
+| ------------- | ----- | ------------------ | ----------------------------------------------------------------------------------------------- |
+| 0 | UInt8 | Configuration type | `0x98` (Responses to identification sensor ID notification settings) |
+| 1 | UInt8 | Reserved | `0x00` |
+| 2 | UInt8 | Resulting value | `0x00` (Set successfully) |
+
+The definitions of the result values are as follows.
+
+| Result value | Definition |
+| ----------------------- | ------------------- |
+| `0x00` | OK/Set successfully |
+| Value other than `0x00` | NG/Setting failed |
+
+### Responses to identification sensor ID missed notification settings
+
+If [Identification sensor ID missed notification settings](#identification-sensor-id-missed-notification-settings) is written, the following responses are obtained depending on the results of the identification sensor missed ID notification settings.
+
+| Data location | Type | Content | Example |
+| ------------- | ----- | ------------------ | ------------------------------------------------------------------------------------------------------ |
+| 0 | UInt8 | Configuration type | `0x99` (Responses to identification sensor missed ID notification settings) |
+| 1 | UInt8 | Reserved | `0x00` |
+| 2 | UInt8 | Resulting value | `0x00` (Set successfully) |
+
+The definitions of the result values are as follows.
+
+| Result value | Definition |
+| ----------------------- | ------------------- |
+| `0x00` | OK/Set successfully |
+| Value other than `0x00` | NG/Setting failed |
+
+### Responses to magnetic sensor settings
+
+If [Magnetic sensor settings](#magnetic-sensor-settings) is written, the following responses are obtained depending on the setting results.
+
+| Data location | Type | Content | Example |
+| ------------- | ----- | ------------------ | ------------------------------------------------------------------------- |
+| 0 | UInt8 | Configuration type | `0x9b` (Responses to magnetic sensor settings) |
+| 1 | UInt8 | Reserved | `0x00` |
+| 2 | UInt8 | Resulting value | `0x00` (Set successfully) |
+
+The definitions of the result values are as follows.
+
+| Result value | Definition |
+| ----------------------- | ------------------- |
+| `0x00` | OK/Set successfully |
+| Value other than `0x00` | NG/Setting failed |
+
+### Responses to motor speed information acquisition settings
+
+If [Motor speed information acquisition settings](#motor-speed-information-acquisition-settings) is written, the following responses are obtained depending on the result.
+
+| Data location | Type | Content | Example |
+| ------------- | ----- | ------------------ | --------------------------------------------------------------------------------------------- |
+| 0 | UInt8 | Configuration type | `0x9c` (Responses to motor speed information acquisition settings) |
+| 1 | UInt8 | Reserved | `0x00` |
+| 2 | UInt8 | Resulting value | `0x00` (Set successfully) |
+
+The definitions of the result values are as follows.
+
+| Result value | Definition |
+| ----------------------- | ------------------- |
+| `0x00` | OK/Set successfully |
+| Value other than `0x00` | NG/Setting failed |
+
+### Responses to posture angle detection settings
+
+If [Posture angle detection settings](#posture-angle-detection-settings) is written, the following responses are obtained depending on the result.
+
+| Data location | Type | Content | Example |
+| ------------- | ----- | ------------------ | --------------------------------------------------------------------------------- |
+| 0 | UInt8 | Configuration type | `0x9d` (Responses to posture angle detection settings) |
+| 1 | UInt8 | Reserved | `0x00` |
+| 2 | UInt8 | Resulting value | `0x00` (Set successfully) |
+
+The definitions of the result values are as follows.
+
+| Result value | Definition |
+| ----------------------- | ------------------- |
+| `0x00` | OK/Set successfully |
+| Value other than `0x00` | NG/Setting failed |
+
+
+### Responses to request to change connection interval
+
+If [Request to change connection interval](#Request-to-change-connection-interval-) is written, the following responses are obtained depending on the result.
+
+| Data location | Type | Content | Example |
+| ------------- | ----- | ------------------ | -------------------------------------------------------------------------------------- |
+| 0 | UInt8 | Configuration type | `0xb0` (Responses to request to change connection interval) |
+| 1 | UInt8 | Reserved | `0x00` |
+| 2 | UInt8 | Resulting value | `0x00` (Set successfully) |
+
+The definitions of the result values are as follows.
+
+| Result value | Definition |
+| ----------------------- | ------------------- |
+| `0x00` | OK/Set successfully |
+| Value other than `0x00` | NG/Setting failed |
+
+### Responses to obtain the requested connection interval value
+
+If [Obtaining the requested connection interval value](#Obtaining-the-requested-connectionr-interval-value-) is written, the following responses are obtained depending on the result.
+
+| Data location | Type | Content | Example |
+| ------------- | ------ | ------------------ | ----------------------------------------------------------------------------------------------- |
+| 0 | UInt8 | Configuration type | `0xb1` (Responses to obtain the requested connection interval value) |
+| 1 | UInt8 | Reserved | `0x00` |
+| 2 | UInt16 | minimum value | `0x0008` (10 milliseconds) |
+| 4 | UInt16 | maximum value | `0x0050` (100 milliseconds) |
+
+### Responses to obtain the actual connection interval value
+
+If [Obtaining the actual connection interval value](#Obtaining-the-actual-connection-interval-value-) is written, the following responses are obtained depending on the result.
+
+| Data location | Type | Content | Example |
+| ------------- | ------ | ------------------ | -------------------------------------------------------------------------------------------- |
+| 0 | UInt8 | Configuration type | `0xb2` (Responses to obtain the actual connection interval value) |
+| 1 | UInt8 | Reserved | `0x00` |
+| 2 | UInt16 | minimum value | `0x0008` (10 milliseconds) |
+| 4 | UInt16 | maximum value | `0x0050` (100 milliseconds) |
+
+## Notifications
+
+The data obtained from [Read operations](#read-operations) can also be received through notifications.
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/hardware_components.md b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/hardware_components.md
new file mode 100644
index 00000000..b6bd97c4
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/hardware_components.md
@@ -0,0 +1,17 @@
+---
+id: hardware_components
+title: Name of each part
+sidebar_label: Name of each part
+---
+
+The following are the names of the parts of the cube and the communication specifications for using them.
+
+![Core Cube Hardware Components](assets/hardware_components.svg)
+
+| Number | Name | Corresponding function/communication specification |
+| ------ | ------------------------- | -------------------------------------------------- |
+| 1 | Wheel (right) | [Motor](motor.md) |
+| 2 | Wheel (left) | [Motor](motor.md) |
+| 3 | Power button | - |
+| 4 | Identification sensor | [Identification sensor](id.md) |
+| 5 | Function button/indicator | [Button](button.md) / [Indicator](light.md) |
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/hardware_magnet.md b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/hardware_magnet.md
new file mode 100644
index 00000000..0ed3a7d0
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/hardware_magnet.md
@@ -0,0 +1,57 @@
+---
+id: hardware_magnet
+title: Magnetic sensor
+sidebar_label: Magnetic sensor
+---
+
+Two functions are available using the cube's 3-axis magnetic sensor: "magnet state detection" and "magnetic force detection".
+
+"Magnet state detection" is available with version v02.0004 (BLE protocol version v2.2.0) of the cube system software.
+With version v02.0005 (BLE protocol version v2.3.0) of the cube system software, "Magnetic force detection" is also available.
+
+For information on the system software versions and how to update your software, please see [About - How to update](how_to_update_cube.md).
+
+For the communication specifications, see [Communication specifications - Magnetic sensors](magnetic_sensor.md).
+
+:::caution
+
+- The use of strong magnets may prevent the cube from operating normally or lead to malfunction. Please be careful when using strong magnets around the cube.
+- When handling magnets, please read the magnet manufacturer's instruction manual carefully, follow the safety instructions, and have a knowledgeable person handle the magnets responsibly.
+
+:::
+
+## 1. Magnet status detection
+
+Magnets placed in preestablished positions and magnetic force can detect six different conditions.
+Because the detection of magnetic flux density is limited to a certain range, these conditions will not be detected correctly once outside of this range. Before using the cube, please be sure to test the magnets on the cube in the actual environment where the cube will be used.
+
+### Magnet specifications
+
+The specifications of the magnets are as follows
+
+![Magnet specifications](assets/hardware_magnet.svg)
+
+| Item | Content |
+| --------------------------- | ---------------------------------- |
+| Size | 4 x 4 x 2 [mm] |
+| Material | Sintered neodymium magnet N40 |
+| Direction of magnetic force | 2mm in the perpendicular direction |
+
+### Magnet layout specifications
+
+The following six conditions can be detected due to the positioning of the magnets and the direction of the magnetic forces.
+
+![Magnet layout specifications](assets/hardware_magnet_layout.svg)
+
+## 2. Magnetic force detection
+
+The strength and direction of the magnetic force can be detected.
+
+The strength of the magnetic force is always expressed as a positive value, regardless of the polarity of the magnet.
+
+The direction of the magnetic force is the direction in which the magnetic flux pass through the cube, expressed as a three-dimensional vector with X, Y, and Z components.
+The length of this 3D vector remains the same (approximately 10), regardless of the strength of the magnetic force.
+
+The magnetic coordinate system for the cube is shown in the figure below, with the direction of the arrow being the positive direction.
+
+![Magnetic coordinate system](assets/magnet_coordinate_system.svg)
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/hardware_other.md b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/hardware_other.md
new file mode 100644
index 00000000..d13fe943
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/hardware_other.md
@@ -0,0 +1,48 @@
+---
+id: hardware_other
+title: Other specifications
+sidebar_label: Other specs
+---
+
+## Speed
+
+The maximum speed for horizontal movement with nothing on the cube is as follows.
+
+| State | Speed |
+| -------------------- | ------------ |
+| Straight line motion | 350 mm/sec |
+| Rotation | 1500 deg/sec |
+
+## Loading weight
+
+The maximum loading weight is 200 grams. However, even if the weight is less than 200 grams, the cube may not run properly depending on the center of gravity of this weight.
+
+## Battery
+
+| Item | Value |
+| ---------------- | --------------------------- |
+| Type | Lithium-ion Polymer Battery |
+| Nominal Voltage | 3.7 V |
+| Nominal Capacity | 260 mAh |
+
+## Charging connector
+
+### Polarity
+
+![Polarity of charging connector](assets/hardware_other_polarity.svg)
+
+The longer pin is GND.
+
+### Input voltage / Input current
+
+| Item | Value |
+| ------------- | ------ |
+| Input voltage | DC 5 V |
+| Input current | 0.3 A |
+
+### Compatible receptacle connector
+
+| Item | Value |
+| ------------ | ------------------------------- |
+| Manufacturer | Foxconn Interconnect Technology |
+| Part number | BBRC2H1-B9603-7H |
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/hardware_shape.mdx b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/hardware_shape.mdx
new file mode 100644
index 00000000..e94b504a
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/hardware_shape.mdx
@@ -0,0 +1,45 @@
+---
+id: hardware_shape
+title: Shape and size
+sidebar_label: Shape and size
+---
+
+This section introduces the shape and size of the cube. All measurements are in millimeters.
+
+## 3D Model
+
+The 3D model data of the cube is available for download below.
+
+import { ModelDownloadButtonGroup } from '@site/src/components/ModelDownloadButtonGroup'
+
+
+
+import { Cube3DView } from '@site/src/components/Cube3DView'
+
+
+
+
+
+:::note
+
+The 3D model data are licensed under the [Creative Commons Attribution-ShareAlike 4.0 International Public License](https://creativecommons.org/licenses/by-nd/4.0/). Please check [here](about.md#license) for details.
+
+:::
+
+## Protruding shapes for block attachment
+
+The protrusions on the top of the cube can be used to attach standard toy blocks.
+
+![Hardware size of the mount](assets/hardware_size_mount.svg)
+
+## Sides
+
+The following figure indicates the size of the cube body as seen from the side, including when the top plate is attached.
+
+![Hardware size in side view](assets/hardware_size_side_view.svg)
+
+## Bottom
+
+The layout of the parts on the bottom of the cube is indicated in the figure below.
+
+![Hardware size in bottom view](assets/hardware_size_bottom_view.svg)
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/high_precision_tilt_sensor.md b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/high_precision_tilt_sensor.md
new file mode 100644
index 00000000..b8290843
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/high_precision_tilt_sensor.md
@@ -0,0 +1,130 @@
+---
+
+id: ble_high_precision_tilt_sensor
+title: Posture Angle detection
+sidebar_label: 🔄 Posture Angle detection
+--- .
+
+![Cube coordinate system](assets/sensor_cube_axis.svg)
+
+Using a posture estimation algorithm, the posture angle (estimated value) is calculated based on the output from the cube's motion sensor (6-axis detection system).
+Because this posture angle is not a raw value from the motion sensor but a value calculated in the cube with the acceleration and angular velocity, it always contains a certain amount of error or drift.
+
+:::note
+
+This feature is **disabled** by default. It becomes operational only once enabled in [Configuration - Posture angle detection settings](configuration.md#posture-angle-detection-settings).
+
+:::
+
+Posture angle detection can be obtained using the following characteristics. These characteristics are the same for [Motion Detection](sensor.md) and [Magnetic Sensor](magnetic_sensor.md).
+
+| Property | Value |
+| ------------------- | -------------------------------------------------------------------------------------------------------------- |
+| Characteristic UUID | 10B20106-5B3B-4571-9508-CF3EFCD7BBAE |
+| Properties | [Write](#write-operations), [Read](#read-operations--notifications), [Notify](#read-operations--notifications) |
+| Descriptor | Sensor Information |
+
+## Write operations
+
+### Requesting posture angle detection
+
+Posture angle information can be requested by writing the following data. Once the cube receives a request, it makes a notification on the posture angle once.
+
+| Data location | Type | Content | Example |
+| ------------- | ----- | ----------------- | ----------------------------------------------------------------------- |
+| 0 | UInt8 | Information type | `0x83` (Request for posture angle detection) |
+| 1 | UInt8 | Notification type | `0x01` (Notifications in Euler angles) |
+
+The types of notifications are as follows
+
+| Type of notification content | Definition |
+| ---------------------------- | -------------------------------------------- |
+| `0x01` | Notifications in Euler angles |
+| `0x02` | Notifications in quaternions |
+| `0x03` | Notifications in high precision Euler angles |
+
+## Read operations / Notifications
+
+When the posture angle of the cube changes, this characteristic notifies the BLE central of this information.
+The notified information can also be obtained through read operations.
+
+:::note
+
+This characteristic is the same for [Motion detection](sensor.md) and [Magnetic sensor](magnetic_sensor.md). Since this information is also obtained, please also see [Motion detection - Read operations / Notifications](sensor.md#read-operations--notifications) and [Magnetic sensor - Read operations / Notifications](magnetic_sensor.md#read-operations--notifications) when using this characteristic.
+
+:::
+
+### Obtaining posture angle information (notifications in Euler angles)
+
+The following data can be obtained when the type of notification content is set to Euler angle notifications.
+
+| Data location | Type | Content | Example |
+| ------------- | ----- | ----------------- | ----------------------------------------------------------------- |
+| 0 | UInt8 | Information type | `0x03` (Posture angle detection) |
+| 1 | UInt8 | Notification type | `0x01` (Notifications in Euler angles) |
+| 2 | Int16 | Roll (X axis) | `0x00B4` (180 degree) |
+| 4 | Int16 | Pitch (Y axis) | `0x0000` (0 degree) |
+| 6 | Int16 | Yaw (Z axis) | `0xFF4E` (-178 degree) |
+
+#### Angles
+
+Euler angle format is integer.
+
+The angle range is -179°(0xFF4D) to 180°(0x00B4) for roll and yaw, and -90°(0xFFA6) to 90°(0x005A) for pitch.
+
+The rotation order is yaw (Z axis), pitch (Y axis), roll (X axis).
+The roll angle and pitch angle are 0° when the cube is placed horizontally on a surface with the wheel side on the bottom. The yaw angle is 0° when the cube is facing the direction it faced when it was turned on.
+
+#### Errors
+
+Because rotation around the Z axis (yaw angle in Euler angles) cannot be corrected with acceleration sensor, errors will accumulate. The following is a concrete example of this effect.
+
+- The yaw angle shifts by about 1° every few seconds even though the cube is not moving.
+- The yaw angle shifts by several degrees when the cube rotates by one rotation with the Z axis as the central axis.
+
+### Obtaining posture angle information (notifications in quaternions)
+
+When the notification content type is set to notifications in quaternions, the following data can be obtained.
+
+| Data location | Type | Content | Example |
+| ------------- | ------- | ----------------- | ---------------------------------------------------------------- |
+| 0 | UInt8 | Information type | `0x03` (Posture angle detection) |
+| 1 | UInt8 | Notification type | `0x02` (Notifications in quaternions) |
+| 2 | Float32 | w | `0x0000803F` (1.0) |
+| 4 | Float32 | x | `0x00000000` (0.0) |
+| 6 | Float32 | y | `0x00000000` (0.0) |
+| 8 | Float32 | z | `0x00000000` (0.0) |
+
+#### Value range
+
+The value range is -1.0 to 1.0.
+
+### Obtaining posture angle information (notifications in high precision Euler angles)
+
+The following data can be obtained when the type of notification content is set to high precision Euler angle notifications.
+
+| Data location | Type | Content | Example |
+| ------------- | ------- | ----------------- | ----------------------------------------------------------------- |
+| 0 | UInt8 | Information type | `0x03` (Posture angle detection) |
+| 1 | UInt8 | Notification type | `0x01` (Notifications in Euler angles) |
+| 2 | Float32 | Roll (X axis) | `0x00003443` (180.0 degree) |
+| 4 | Float32 | Pitch (Y axis) | `0x00000000` (0.0 degree) |
+| 6 | Float32 | Yaw (Z axis) | `0x00000000` (0.0 degree) |
+
+#### Angles
+
+Euler angle format is float32.
+
+The roll and yaw angle range is greater than -180 and less than or equal to 180 degree.
+
+the pitch angle range is greater than -90 and less than or equal t0 90 degree.
+
+The rotation order is yaw (Z axis), pitch (Y axis), roll (X axis).
+The roll angle and pitch angle are 0° when the cube is placed horizontally on a surface with the wheel side on the bottom. The yaw angle is 0° when the cube is facing the direction it faced when it was turned on.
+
+#### Errors
+
+Because rotation around the Z axis (yaw angle in Euler angles) cannot be corrected with acceleration sensor, errors will accumulate. The following is a concrete example of this effect.
+
+- The yaw angle shifts by about 1° every few seconds even though the cube is not moving.
+- The yaw angle shifts by several degrees when the cube rotates by one rotation with the Z axis as the central axis.
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/how_to_communicate.md b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/how_to_communicate.md
new file mode 100644
index 00000000..28e5e9ed
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/how_to_communicate.md
@@ -0,0 +1,49 @@
+---
+id: ble_how_to_communicate
+title: Function usage
+sidebar_label: Function usage
+---
+
+The functions of the cube can be obtained and controlled by using characteristics. Each characteristic supports one of the Write, Read, or Notify properties, and can be used in the following ways.
+
+| Properties | How to use |
+| ---------- | ---------------------------------------------------------------------------------------------------- |
+| Write | Writes data to a characteristic, and controls the cube according to the data content. |
+| Read | Reads data from a characteristic to obtain information about the cube contained in the data. |
+| Notify | Received whenever information that can be retrieved by "reading" data is changed by "notifications". |
+
+## Data structures
+
+The structure of the data to which "Write", "Read", and "Notify" operations are applied is explained in the following pages.
+
+| Data location | Type | Content | Example |
+| ------------- | ---- | ------- | ------- |
+
+#### Data location
+
+The location of data in buffers starting with 0.
+
+#### Type
+
+The type of data, such as `UInt8` or `String`. All byte orders are **little endian**.
+
+#### Content
+
+Indicates the content of the data in words.
+
+#### Example
+
+A concrete example is given in the following manner.
+
+- 0x00: Fixed data (only the indicated value is valid or exists)
+- `0x00`: An example of non-fixed data
+
+## Write operation errors
+
+For write operations, the following cases are determined errors.
+When there is an error, the write operation is discarded and does not affect the operation of the cube.
+
+- When the full data length is different from the specified length
+- When the data value is out side the specified range
+
+If there are other cases of errors, they are listed as notes for each characteristic.
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/how_to_update_cube.md b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/how_to_update_cube.md
new file mode 100644
index 00000000..48985ecc
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/how_to_update_cube.md
@@ -0,0 +1,131 @@
+---
+id: how_to_update_cube
+title: How to update
+sidebar_label: 🔄 How to update
+---
+
+## Updating the cube
+
+Updating the cube's system software will add new features and improve stability, primarily for the communication specifications. For details on how to update the system software, please see the [toio System Software Update Guide](https://toio.io/update).
+
+### BLE protocol version
+
+The communication specifications of the cube is versioned with the BLE protocol version. The BLE protocol version of your cube can be seen in [Configuration - Requesting the BLE protocol version](configuration.md#requesting-the-ble-protocol-version).
+
+### Version combinations
+
+The system software version corresponds to the BLE protocol version as follows.
+
+| System Software | BLE Protocol Version |
+| --------------- | -------------------- |
+| v02.0000 | v2.0.0 |
+| v02.0001 | v2.1.0 |
+| v02.0003 | v2.1.0 |
+| v02.0004 | v2.2.0 |
+| v02.0005 | v2.3.0 |
+| v02.0006 | v2.4.0 |
+
+## Updating the technical specifications
+
+The technical specifications for each BLE protocol version can be viewed on this website. The number in the upper right corner of the page indicates the BLE protocol version that corresponds to the specifications displayed. You can change the version by clicking on this number.
+
+### Displaying updated items
+
+For the version displayed, any feature that has changed since the previous version will be marked with an update symbol (🔄) in the sidebar. In addition, items on each page are marked with a symbol such as an arrow for the user's reference.
+
+## Major updates
+
+### 2024/03/18
+
+Added information on the cube's system software v02.0006 (BLE protocol version v2.4.0).
+
+- [How to use the cube](how_to_use_cube)
+ - Added toio PlayGround state to [the system state](how_to_use_cube#system-state-)
+- [Communication overview](ble_communication_overview)
+ - **BREAKING CHANGE:** Changed [the local name specifications](ble_communication_overview#complete-local-name-and-shortened-local-name-)
+- [Posture Angle detection](ble_high_precision_tilt_sensor)
+ - Added specifiable values to [request posture angle detection](ble_high_precision_tilt_sensor#requesting-posture-angle-detection)
+ - Added [the notification by quaternion](ble_high_precision_tilt_sensor#obtaining-posture-angle-information-notifications-in-quaternions)
+ - Added [the notification by high precision Euler angle](ble_high_precision_tilt_sensor#obtaining-posture-angle-information-notifications-in-high-precision-euler-angles)
+- [Configuration](ble_configuration)
+ - Added specifiable values to [posture angle detection settings](ble_configuration#posture-angle-detection-settings-)
+ - Added the operation to [request to change connection interval](ble_configuration#request-to-change-connection-interval-)
+ - Added the operation to [obtain the requested connection interval value](ble_configuration#obtaining-the-requested-connection-interval-value-)
+ - Added the operation to [obtain the actual connection interval value](ble_configuration#obtaining-the-actual-connection-interval-value-)
+ - Added the [responses to request to change connection interval](ble_configuration#responses-to-request-to-change-connection-interval-)
+ - Added the [responses to obtain the requested connection interval value](ble_configuration#responses-to-obtain-the-requested-connection-interval-value-)
+ - Added the [responses to obtain the actual connection interval value](ble_configuration#responses-to-obtain-the-actual-connection-interval-value-)
+
+### 2023/12/14
+
+Added cube's [Charging connector](hardware_other.md#charging-connector) information.
+
+### 2023/09/29
+
+Added cube's [Battery](hardware_other.md#battery) information.
+
+### 2022/04/27
+
+Added cube's [3D model data](hardware_shape.md#3d-model) and information about [shapes of block attachment](hardware_shape.md#protruding-shapes-for-block-attachment).
+
+### 2021/07/19
+
+Added "[Papercraft Creatures - Gesundroid](https://toio.io/titles/gesundroid.html)" toio ID information.
+
+- Added information on [Play mat included with Papercraft Creatures - Gesundroid](info_position_id.md#play-mat-included-with-papercraft-creatures---gesundroid)
+
+### 2021/04/21
+
+Added information on the cube's system software v02.0005 (BLE protocol version v2.3.0).
+
+- Changed advertising packet (Complete Local Name)
+ - [Communication overview - Discovering the cube](ble_communication_overview.md#discovering-the-cube)
+- Added posture angle detection functions
+ - [Communication specifications for acquisition of posture angle detection](high_precision_tilt_sensor.md)
+- Added magnetic sensor functions
+ - [Communication specifications for acquisition of magnetic sensor information](magnetic_sensor.md)
+
+### 2020/09/30
+
+Added information about the cube's system software v02.0004 (BLE protocol version v2.2.0).
+
+- Added [How to view remaining battery level](how_to_use_cube.md#checking-the-remaining-battery-level)
+- Added identification sensor notification frequency settings
+ - [Identification sensor ID notification settings](configuration.md#identification-sensor-id-notification-settings)
+ - [Identification sensor ID missed notification settings](configuration.md#identification-sensor-id-missed-notification-settings)
+- Added [Shake detection](sensor.md#shake-detection)
+- Added magnetic sensor functions
+ - [Magnetic sensor hardware specifications](hardware_magnet.md)
+ - [Communication specifications for magnetic sensor information acquisition](magnetic_sensor.md)
+ - [Enabling magnetic sensor](configuration.md#magnetic-sensor-settings)
+- Added motor speed information functions
+ - [Acquisition of motor speed information](motor.md#obtaining-motor-speed-information)
+ - [Enabling acquisition of motor speed information](configuration.md#motor-speed-information-acquisition-settings)
+- toio ID information moved from communication specifications to hardware specifications.
+ - [Position ID](info_position_id.md)
+ - [Standard ID](info_standard_id.md)
+- Added "[toio COLLECTION Expansion Pack](https://toio.io/titles/toio-collection-extension.html)" and "[PICOTONS](https://toio.io/titles/picotons.html)" toio ID information
+ - [Standard ID - toio COLLECTION Expansion Pack](info_standard_id.md#scanning-marks-included-with-the-toio-collection-extension-pack)
+ - [Position ID - PICOTONS](info_position_id.md#mats-included-with-picotons)
+
+### 2020/04/23
+
+Added information on the simple play mat and simple card included with the toio Core Cube (single package).
+
+- Moved toio ID information to [Position ID](info_position_id.md) and [Standard ID](info_standard_id.md).
+- Added information on the [Simple play mat](info_position_id.md#simple-play-mat-included-with-the-toio-core-cube-single-package) and [Simple card](info_standard_id.md#simple-card-included-with-the-toio-core-cube-single-package) included with the toio Core Cube (single package)
+
+### 2019/11/13
+
+The following changes and additions have been made with BLE protocol version v2.1.0.
+
+- Added [Double-tap detection/position detection](sensor.md)
+- Expanded valid range for [Motor speed command values](motor.md#motor-speed-command-values)
+ - The maximum value for speed commands increased from `100` to `115` to allow for faster movement.
+ - The minimum value for speed commands decreased from `10` to `8` to allow for slower movement.
+- Added variations to motor controls
+ - [Motor control with target specified](motor.md#motor-control-with-target-specified)
+ - [Motor control with multiple targets specified](motor.md#motor-control-with-multiple-targets-specified)
+ - [Motor control with acceleration specified](motor.md#motor-control-with-acceleration-specified)
+
+The detailed specifications are described on this website as well as partially explained on the [toio blog](https://toio.io/blog/). Please also refer to the blog for the specification details.
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/how_to_use_cube.md b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/how_to_use_cube.md
new file mode 100644
index 00000000..15fca738
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/how_to_use_cube.md
@@ -0,0 +1,62 @@
+---
+id: how_to_use_cube
+title: How to use the cube
+sidebar_label: 🔄 How to use the cube
+---
+
+## How to charge
+
+![How to charge](assets/cube_basics_charging.svg)
+
+The cube can be charged by placing it on the console charger or the charger for toio Core Cube. For detailed instructions and how to check the remaining battery level of the cube, please refer to the [manuals](https://toio.io/manual).
+
+## How to power on and off
+
+![How to power on off](assets/cube_basics_power_on_off.svg)
+
+There is a power button on the bottom of the cube. Press the power button to turn on the cube.
+Pressing and holding the power button turns it off.
+
+## Auto power off function
+
+Communication with the cube is done via Bluetooth Low Energy (BLE). If the cube is not connected to any other device via BLE for 15 minutes, it will automatically turn off. An audible alert will also sound every 3 minutes while the cube is not connected to another device via BLE.
+
+For more information on communication with the cube, please see [Communication Overview - Communication with the cube](ble_communication_overview.md#communication-with-the-cube).
+
+## System state
+
+![Indicator of cube](assets/cube_basics_light.svg)
+
+The state of the cube's system is notified through colors of the indicator and sound alerts. The different states are as follows.
+
+| cube state | Indicator | Audible alert |
+| --------------- | -------------------------------------------- | -------------------- |
+| Startup | Flashes once in red, blue, green, then white | ○ With audible alert |
+| Connecting | Flashes in blue | No audible alert |
+| Connected | Indicator turns off | ○ With audible alert |
+| Disconnected | Indicator turns off | ○ With audible alert |
+| Shutdown | Indicator turns off | ○ With audible alert |
+| toio PlayGround | Flashes in yellow | ○ With audible alert |
+
+### toio PlayGround
+
+When flashing yellow, toio PlayGround is in operation.
+At this time, the cube does not accept external Bluetooth connections.
+
+#### Transition to toio PlayGround
+
+When the button is pressed and held while the cube is waiting for connection (blinking blue), it transitions to toio PlayGround.
+
+#### Return from toio PlayGround
+
+To return to the normal connectivity state from toio PlayGround, turn the cube off and on again.
+
+## Checking the remaining battery level
+
+When the power button is pressed while the cube is on, the approximate remaining battery level is indicated through the color of the indicator and audible alerts. The remaining battery level and the corresponding condition of the indicator are shown below. Audible alerts are sounded as the indicator flashes.
+
+| Remaining battery level | Indicator | Audible alert |
+| --------------------------- | ---------------------------- | -------------------------------------------- |
+| Battery level is sufficient | Flashes in green three times | Sounds three times as the indicator flashes |
+| Battery level is low | Flashes in yellow twice | Sounds twice as the indicator flashes |
+| Almost no battery left | Flashes in red once | Sounds once with each flash of the indicator |
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/id.md b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/id.md
new file mode 100644
index 00000000..0ec51cd4
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/id.md
@@ -0,0 +1,111 @@
+---
+id: ble_id
+title: Identification sensor
+sidebar_label: Identification sensor
+---
+
+The "Play mat" and "Various Cards/Sheets" included in the [toio COLLECTION](https://toio.io/titles/toio-collection.html) and the "Simple play mat" and "Simple card" included with the [toio Core Cube (single package)](https://toio.io/cube) are printed with special patterns. These patterns are called "toio ID".
+The "Identification sensor" on the bottom of the cube scans the unique information from the pattern and identifies its position on the object with the pattern printed (absolute position detection).
+
+The information that the identification sensor scans from the toio ID can be obtained by using the following characteristics.
+
+| Property | Value |
+| ------------------- | -------------------------------------------------- |
+| Characteristic UUID | 10B20101-5B3B-4571-9508-CF3EFCD7BBAE |
+| Properties | [Read](#read-operations), [Notify](#notifications) |
+| Descriptor | ID Information |
+
+## toio ID types
+
+There are two types of toio ID, Position ID and Standard ID, and the information that can be obtained from each differs as shown below. For details, please refer to the respective pages.
+
+- [Hardware Specifications - Position ID](info_position_id.md)
+- [Hardware Specifications - Standard ID](info_standard_id.md)
+
+| toio ID type | Example of object with printed pattern | Information that can be obtained |
+| ------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------- |
+| Position ID | Play mat included with the toio COLLECTION ![toio COLLECTION Play mat](assets/id_illust_mat.png) Simple play mat included with toio Core Cube (single package)
![toio Core Cube (single package) Simple play mat](assets/id_illust_cube_playmat.png) | Position and angle of the cube |
+| Standard ID | Various Cards and Sheets included in the toio COLLECTION ![toio COLLECTION Cards and Sheets](assets/id_illust_card_sticker.svg) Simple card included with the toio Core Cube (single package)
![toio Core Cube (single package) Simple card](assets/id_illust_cube_card.png) | Unique values and angle of cube |
+
+## Read operations
+
+### Position ID
+
+The information that the cube receives from the Position ID can be obtained with the following configuration data.
+The interval and conditions for the notifications can be changed under [Configuration - Identification sensor ID notification settings](configuration.md#identification-sensor-id-notification-settings).
+
+| Data location | Type | Content | Example |
+| ------------- | ------ | ----------------------------------------------- | ----------------------------------------------- |
+| 0 | UInt8 | Information type | `0x01` (Position ID) |
+| 1 | UInt16 | X coordinate value of the center of the cube | `0x02c5` (709) |
+| 3 | UInt16 | Y coordinate value of the center of the cube | `0x017f` (383) |
+| 5 | UInt16 | Y coordinate value of the center of the cube | `0x0132` (306 degrees) |
+| 7 | UInt16 | X coordinate value of the identification sensor | `0x02bc` (700) |
+| 9 | UInt16 | Y coordinate value of the identification sensor | `0x0182` (386) |
+| 11 | UInt16 | Y coordinate value of the identification sensor | `0x0132` (306 degrees) |
+
+:::note
+
+Byte order is little-endian. For other ways the data structures are expressed see [Function usage - Data structures](how_to_communicate.md#data-structures).
+
+:::
+
+#### Coordinates (X coordinate, Y coordinate)
+
+The X and Y coordinates indicate the cube's position at the Position ID.
+They are uniquely defined by toio ID, and are **not expressed in millimeters**.
+Refer to [Hardware Specifications - Position ID](info_position_id.md) for the actual coordinates that can be obtained.
+
+#### Angle
+
+The angle is the orientation of the cube atop the Position ID. In the following figure, the X-axis direction is 0 degrees and clockwise is the positive direction.
+The range of values is 0 to 360 degrees.
+
+![ID detection angle](assets/id_position_id_angle.svg)
+
+### Standard ID
+
+The information that the cube receives from the Standard ID can be obtained with the following configuration data. The interval and conditions for the notifications can be changed under [Configuration - Identification sensor ID notification settings](configuration.md#identification-sensor-id-notification-settings).
+
+| Data location | Type | Content | Example |
+| ------------- | ------ | ----------------- | ----------------------------------------------- |
+| 0 | UInt8 | Information type | `0x02` (Standard ID) |
+| 1 | UInt32 | Standard ID value | `0x00380000` (3670016: Typhoon) |
+| 5 | UInt16 | cube angle | `0x0015` (21 degrees) |
+
+:::note
+
+Byte order is little-endian. For other ways the data structures are expressed see [Function usage - Data structures](how_to_communicate.md#data-structures).
+
+:::
+
+#### Standard ID values
+
+A unique value that does not depend on the position of the cube can be obtained from the Standard ID. This value can be used to determine the item on which the cube is placed. See [Hardware Specifications - Standard ID](info_standard_id.md) for the actual values that can be obtained.
+
+#### Angle of cube
+
+The angle of the cube is the orientation of the cube atop the Standard ID. Values range from 0 to 360 degrees.
+
+### Position ID missed
+
+Information indicating that the cube has been removed from atop the Position ID can be obtained with the following configuration data.
+The notification sensitivity can be changed under [Configuration - Identification sensor ID missed notification settings](configuration.md#identification-sensor-id-missed-notification-settings).
+
+| Data location | Type | Content | Example |
+| ------------- | ----- | ---------------- | ------------------------------------------------------ |
+| 0 | UInt8 | Information type | `0x03` (Position ID missed) |
+
+### Standard ID missed
+
+Information indicating that the cube has been removed from atop the Standard ID can be obtained with the following configuration data.
+The notification sensitivity can be changed under [Configuration - Identification sensor ID missed notification settings](configuration.md#identification-sensor-id-missed-notification-settings).
+
+| Data location | Type | Content | Example |
+| ------------- | ----- | ---------------- | ------------------------------------------------------ |
+| 0 | UInt8 | Information type | `0x04` (Standard ID missed) |
+
+## Notifications
+
+When the information scanning by the identification sensor changes, this property notifies the BLE central of this information.
+The notified information and data structure are the same as those obtained using the [Read operations](#read-operations).
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/info_position_id.md b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/info_position_id.md
new file mode 100644
index 00000000..1f47379e
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/info_position_id.md
@@ -0,0 +1,76 @@
+---
+id: hardware_position_id
+title: Position ID
+sidebar_label: Position ID
+---
+
+The following products have Position ID printed on them.
+
+- Play mat included with the [toio COLLECTION](https://toio.io/titles/toio-collection.html)
+- Play mat and "Control/Autoplay" mat included with [PICOTONS™](https://toio.io/titles/picotons.html)
+- Simple play mat included with the [toio Core Cube (single package)](https://toio.io/cube/)
+- Play mat included with [Papercraft Creatures - Gesundroid](https://toio.io/titles/gesundroid.html)
+
+The detailed information on each are as follows. For information on how to scan information using BLE, please refer to [Identification sensor](./id.md)
+
+## Play mat included with the toio COLLECTION
+
+![ID detection coordinate system](assets/id_position_id_coordinate.png)
+
+| | Top-left X coordinate | Top-left Y coordinate | Bottom-right X coordinate | Bottom-right Y coordinate |
+| ----------------------- | --------------------- | --------------------- | ------------------------- | ------------------------- |
+| Side with ring | 45 | 45 | 455 | 455 |
+| Side with colored tiles | 545 | 45 | 955 | 455 |
+
+## Mats included with PICOTONS
+
+### Play mat (front)
+
+![Play mat (front)](assets/id_position_id-picotons_play_front.svg)
+
+| Top-left X coordinate | Top-left Y coordinate | Bottom-right X coordinate | Bottom-right Y coordinate |
+| --------------------- | --------------------- | ------------------------- | ------------------------- |
+| 59 | 2088 | 437 | 2285 |
+
+### Play mat (back)
+
+![Play mat (back)](assets/id_position_id-picotons_play_back.svg)
+
+| Top-left X coordinate | Top-left Y coordinate | Bottom-right X coordinate | Bottom-right Y coordinate |
+| --------------------- | --------------------- | ------------------------- | ------------------------- |
+| 59 | 2303 | 437 | 2499 |
+
+### Control mat
+
+![Control mat](assets/id_position_id-picotons_control.svg)
+
+| Top-left X coordinate | Top-left Y coordinate | Bottom-right X coordinate | Bottom-right Y coordinate |
+| --------------------- | --------------------- | ------------------------- | ------------------------- |
+| 764 | 2093 | 953 | 2290 |
+
+### Autoplay mat
+
+![Autoplay mat](assets/id_position_id-picotons_autoplay.svg)
+
+| Top-left X coordinate | Top-left Y coordinate | Bottom-right X coordinate | Bottom-right Y coordinate |
+| --------------------- | --------------------- | ------------------------- | ------------------------- |
+| 554 | 2093 | 742 | 2290 |
+
+## Simple play mat included with the toio Core Cube (single package)
+
+![toio Core Cube (single package) Simple play mat](assets/id_illust_cube_playmat.png)
+
+| Top-left X coordinate | Top-left Y coordinate | Bottom-right X coordinate | Bottom-right Y coordinate |
+| --------------------- | --------------------- | ------------------------- | ------------------------- |
+| 98 | 142 | 402 | 358 |
+
+## Play mat included with Papercraft Creatures - Gesundroid
+
+To use the play mat, the system software needs to be updated to v02.0004 or later.
+For information on the system software versions and how to update your software, please see [Introduction – About updates](./how_to_update_cube.md).
+
+![Papercraft Creatures - Gesundroid: Play Mat](assets/Gesundroid-mat-for-public.svg)
+
+| Top-left X coordinate | Top-left Y coordinate | Bottom-right X coordinate | Bottom-right Y coordinate |
+| --------------------- | --------------------- | ------------------------- | ------------------------- |
+| 1050 | 45 | 1460 | 455 |
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/info_standard_id.md b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/info_standard_id.md
new file mode 100644
index 00000000..5f431c8f
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/info_standard_id.md
@@ -0,0 +1,130 @@
+---
+id: hardware_standard_id
+title: Standard ID
+sidebar_label: Standard ID
+---
+
+The following products have Standard ID printed on them.
+
+- Various cards and sheets included with the [toio COLLECTION](https://toio.io/titles/toio-collection.html)
+- Scan marks included with the [toio COLLECTION Extension Pack](https://toio.io/titles/toio-collection-extension.html)
+- Simple card included with the [toio Core Cube (single package)](https://toio.io/cube/)
+
+The details of each are described below. For information on how to scan information using BLE, see [Identification sensor](./id.md)
+
+## Cards and sheets included with the toio COLLECTION
+
+The various items and their corresponding Standard ID values are as follows.
+
+| Name | Card/Sticker | Value | Value (hexadecimal) |
+| ------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- | ------- | ------------------- |
+| Typhoon | ![Typhoon](assets/id_card_typhoon.svg)![Typhoon, back](assets/id_card_typhoon_back.svg) | 3670016 | 0x00380000 |
+| Rush | ![Rush](assets/id_card_rush.svg)![Rush, back](assets/id_card_rush_back.svg) | 3670054 | 0x00380026 |
+| Auto-Tackle | ![Auto Tackle](assets/id_card_auto_tackle.svg)![Auto Tackle, back](assets/id_card_auto_tackle_back.svg) | 3670018 | 0x00380002 |
+| Random | ![Random](assets/id_card_random.svg)![Random, back](assets/id_card_random_back.svg) | 3670056 | 0x00380028 |
+| Powered Up Strike | ![Powered Up Strike](assets/id_card_tackle_power_up.svg)![Powered Up Strike, back](assets/id_card_tackle_power_up_back.svg) | 3670020 | 0x00380004 |
+| Powered Up Slap | ![Powered Up Slap](assets/id_card_swing_attack_power_up.svg)![Powered Up Slap, back](assets/id_card_swing_attack_power_up_back.svg) | 3670058 | 0x0038002a |
+| Side Attack | ![Side Attack](assets/id_card_side_attack.svg)![Side Attack, Back](assets/id_card_side_attack_back.svg) | 3670022 | 0x00380006 |
+| Easy Mode | ![Easy Mode](assets/id_card_automatic_chasing.svg)![Easy Mode, back](assets/id_card_automatic_chasing_back.svg) | 3670060 | 0x0038002c |
+| Left | ![Left](assets/id_rhythm_left.svg) | 3670024 | 0x00380008 |
+| Right | ![Right](assets/id_rhythm_right.svg) | 3670062 | 0x0038002e |
+| Forward | ![Forward](assets/id_rhythm_front.svg) | 3670026 | 0x0038000a |
+| Back | ![Back](assets/id_rhythm_back.svg) | 3670064 | 0x00380030 |
+| GO | ![GO](assets/id_rhythm_go.svg) | 3670028 | 0x0038000c |
+| Skunk (Blue) | ![Skunk (Blue)](assets/id_skunk_blue.svg) | 3670078 | 0x0038003e |
+| Skunk (Green) | ![Skunk (Green)](assets/id_skunk_green.svg) | 3670042 | 0x0038001a |
+| Skunk (Yellow) | ![Skunk (Yellow)](assets/id_skunk_yellow.svg) | 3670080 | 0x00380040 |
+| Skunk (Orange) | ![Skunk (Orange)](assets/id_skunk_orange.svg) | 3670044 | 0x0038001c |
+| Skunk (Red) | ![Skunk (Red)](assets/id_skunk_red.svg) | 3670082 | 0x00380042 |
+| Skunk (Brown) | ![Skunk (Brown)](assets/id_skunk_brown.svg) | 3670046 | 0x0038001e |
+| Speed Up | ![Speed Up](assets/id_sticker_speed_up.svg) | 3670066 | 0x00380032 |
+| Slow Down | ![Slow Down](assets/id_sticker_speed_down.svg) | 3670030 | 0x0038000e |
+| Wobble | ![Wobble](assets/id_sticker_wobble.svg) | 3670068 | 0x00380034 |
+| Panic | ![Panic](assets/id_sticker_panic.svg) | 3670032 | 0x00380010 |
+| Spin | ![Spin](assets/id_sticker_spin.svg) | 3670070 | 0x00380036 |
+| Shock | ![Shock](assets/id_sticker_shock.svg) | 3670034 | 0x00380012 |
+| Craft Fighter | ![Craft Fighter](assets/id_mark_craft_fighter.svg) | 3670048 | 0x00380020 |
+| Rhythm & Go | ![Rhythm & Go](assets/id_mark_rhythm_and_go.svg) | 3670052 | 0x00380024 |
+| Skunk Chaser | ![Skunk Chaser](assets/id_mark_skunk_chaser.svg) | 3670086 | 0x00380046 |
+| Finger Strike | ![Finger Strike](assets/id_mark_finger_strike.svg) | 3670050 | 0x00380022 |
+| Finger Strike for single player | ![Finger Strike for single player](assets/id_mark_finger_strike_1p.svg) | 3670088 | 0x00380048 |
+| Free Move | ![Free Move](assets/id_mark_free_move.svg) | 3670084 | 0x00380044 |
+
+## Scanning marks included with the toio COLLECTION Extension Pack
+
+| Name | Scanning mark | Value | Value (hexadecimal) |
+| ---------------------- | ------------------------------------------------------------ | ------- | ------------------- |
+| Quick Skunk (2P) | ![Quick Skunk 2P](assets/id-tce-skunk_2p.svg) | 3670092 | 0x0038004C |
+| Quick Skunk (CPU) | ![Quick Skunk CPU](assets/id-tce-skunk_cpu.svg) | 3670094 | 0x0038004E |
+| Kaiju Busters | ![Kaiju Busters](assets/id-tce-kaiju.svg) | 3670096 | 0x00380050 |
+| Watch Out (free) | ![Watch Out (Free)](assets/id-tce-watchout_free.svg) | 3670098 | 0x00380052 |
+| Watch Out (2P) | ![Watch Out (2P)](assets/id-tce-watchout_2p.svg) | 3670100 | 0x00380054 |
+| Watch Out (CPU) | ![Watch Out (CPU)](assets/id-tce-watchout_cpu.svg) | 3670102 | 0x00380056 |
+| Color Memory | ![Color Memory](assets/id-tce-color.svg) | 3670104 | 0x00380058 |
+| Laser Beam (challenge) | ![Laser Beam (challenge)](assets/id-tce-laser_challenge.svg) | 3670106 | 0x0038005A |
+| Laser Beam (create) | ![Laser Beam (create)](assets/id-tce-laser_create.svg) | 3670108 | 0x0038005C |
+| Baton | ![Baton](assets/id-tce-baton.svg) | 3670110 | 0x0038005E |
+| Pull Back | ![Pull Back](assets/id-tce-pullback.svg) | 3670112 | 0x00380060 |
+| Dash | ![Dash](assets/id-tce-dash.svg) | 3670114 | 0x00380062 |
+| Don't Disturb (Normal) | ![Don't Disturb (Normal)](assets/id-tce-dnd_normal.svg) | 3670116 | 0x00380064 |
+| Don't Disturb (Rodeo) | ![Don't Disturb (Rodeo)](assets/id-tce-dnd_rodeo.svg) | 3670118 | 0x00380066 |
+| Answer | ![Answer](assets/id-tce-answer.svg) | 3670120 | 0x00380068 |
+| Music (Song 1) | ![Music Song 1](assets/id-tce-music_1.svg) | 3670122 | 0x0038006A |
+| Music (Song 2) | ![Music Song 2](assets/id-tce-music_2.svg) | 3670124 | 0x0038006C |
+| Music (Song 3) | ![Music Song 3](assets/id-tce-music_3.svg) | 3670126 | 0x0038006E |
+| Music (Song 4) | ![Music song 4](assets/id-tce-music_4.svg) | 3670128 | 0x00380070 |
+
+## Simple card included with the toio Core Cube (single package)
+
+The marks (numbers, alphabets, and symbols) on the simple card and the corresponding Standard ID values are as follows. Numbers (0 to 9) and letters (A to Z) are listed in order.
+
+| Mark | Value | Value (hexadecimal) |
+| -------- | ------- | ------------------- |
+| 0 | 3670320 | 0x00380130 |
+| 1 | 3670321 | 0x00380131 |
+| 2 | 3670322 | 0x00380132 |
+| 3 | 3670323 | 0x00380133 |
+| 4 | 3670324 | 0x00380134 |
+| 5 | 3670325 | 0x00380135 |
+| 6 | 3670326 | 0x00380136 |
+| 7 | 3670327 | 0x00380137 |
+| 8 | 3670328 | 0x00380138 |
+| 9 | 3670329 | 0x00380139 |
+| A | 3670337 | 0x00380141 |
+| B | 3670338 | 0x00380142 |
+| C | 3670339 | 0x00380143 |
+| D | 3670340 | 0x00380144 |
+| E | 3670341 | 0x00380145 |
+| F | 3670342 | 0x00380146 |
+| G | 3670343 | 0x00380147 |
+| H | 3670344 | 0x00380148 |
+| I | 3670345 | 0x00380149 |
+| J | 3670346 | 0x0038014a |
+| K | 3670347 | 0x0038014b |
+| L | 3670348 | 0x0038014c |
+| M | 3670349 | 0x0038014d |
+| N | 3670350 | 0x0038014e |
+| O | 3670351 | 0x0038014f |
+| P | 3670352 | 0x00380150 |
+| Q | 3670353 | 0x00380151 |
+| R | 3670354 | 0x00380152 |
+| S | 3670355 | 0x00380153 |
+| T | 3670356 | 0x00380154 |
+| U | 3670357 | 0x00380155 |
+| V | 3670358 | 0x00380156 |
+| W | 3670359 | 0x00380157 |
+| X | 3670360 | 0x00380158 |
+| Y | 3670361 | 0x00380159 |
+| Z | 3670362 | 0x0038015a |
+| ! | 3670305 | 0x00380121 |
+| ↑ | 3670366 | 0x0038015e |
+| ? | 3670335 | 0x0038013f |
+| + | 3670315 | 0x0038012b |
+| − | 3670317 | 0x0038012d |
+| = | 3670333 | 0x0038013d |
+| ← | 3670332 | 0x0038013c |
+| ↓ | 3670367 | 0x0038015f |
+| → | 3670334 | 0x0038013e |
+| × | 3670314 | 0x0038012a |
+| ÷ | 3670319 | 0x0038012f |
+| % | 3670309 | 0x00380125 |
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/light.md b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/light.md
new file mode 100644
index 00000000..f77631d1
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/light.md
@@ -0,0 +1,113 @@
+---
+id: ble_light
+title: Indicator
+sidebar_label: Indicator
+---
+
+![Indicator of cube](assets/cube_basics_light.svg)
+
+The cube has one indicator on the bottom (see [Parts](hardware_components.md)).
+The color for this indicator can be specified and the indicator can be turned on and off using the following characteristics.
+
+| Property | Value |
+| ------------------- | ------------------------------------ |
+| Characteristic UUID | 10B20103-5B3B-4571-9508-CF3EFCD7BBAE |
+| Properties | [Write](#write-operations) |
+| Descriptor | Light Control |
+
+## Write operations
+
+### Turning the indicator on and off
+
+The indicator can be turned on and off by writing the following configuration data.
+For the example, the indicator is turned on in red for 160 milliseconds then turned off.
+
+| Data location | Type | Content | Example |
+| ------------- | ----- | -------------------------------- | --------------------------------------------------------------- |
+| 0 | UInt8 | Control type | `0x03` (indicator on, indicator off) |
+| 1 | UInt8 | Duration indicator is controlled | `0x10` (160 milliseconds) |
+| 2 | UInt8 | Number of indicators controlled | `0x01` |
+| 3 | UInt8 | ID of the indicator controlled | `0x01` |
+| 4 | UInt8 | Value for red indicator | `0xFF` |
+| 5 | UInt8 | Value for green indicator | `0x00` |
+| 6 | UInt8 | Value for blue indicator | `0x00` |
+
+#### Duration indicator is controlled
+
+The duration in which the indicator is controlled is specified with a value range between `0` to `255`. A value of `0` creates no time limit, so the indicator stays on or off until the next write operation is performed. For values `1` to `255`, the indicator turns on or off for 10 times the specified value in milliseconds, then turns off.
+
+#### Number of indicators controlled ID of indicator controlled
+
+Specifies the number or ID of the indicators being controlled. Only one indicator can be controlled, and both are set to `1`.
+
+#### Red/Green/Blue values for the indicator
+
+Each indicator color can be specified with a value range between `0` and `255`. If all of them are set to `0`, the indicator is turned off.
+
+### Repeated turning on and off of indicator
+
+The indicator can be turned on and off repeatedly by writing the following configuration data.
+The indicator is blinking repeatedly in green and blue every 300 milliseconds in the example.
+
+| Data location | Type | Content | Example |
+| ------------- | ----- | -------------------------------- | --------------------------------------------------------------- |
+| 0 | UInt8 | Control type | `0x04` (Repeatedly turns on and off) |
+| 1 | UInt8 | Number of repetitions | `0x00` (Infinite) |
+| 2 | UInt8 | Number of operations | `0x02` (Two operations) |
+| 3 | UInt8 | Duration indicator is controlled | `0x1E` (300 milliseconds) |
+| 4 | UInt8 | Number of indicators controlled | `0x01` |
+| 5 | UInt8 | ID of the indicator controlled | `0x01` |
+| 6 | UInt8 | Value for red indicator | `0x00` |
+| 7 | UInt8 | Value for green indicator | `0xFF` |
+| 8 | UInt8 | Value for blue indicator | `0x00` |
+| 9 | UInt8 | Duration indicator is controlled | `0x1E` (300 milliseconds) |
+| 10 | UInt8 | Number of indicators controlled | `0x01` |
+| 11 | UInt8 | ID of the indicator controlled | `0x01` |
+| 12 | UInt8 | Value for red indicator | `0x00` |
+| 13 | UInt8 | Value for green indicator | `0x00` |
+| 14 | UInt8 | Value for blue indicator | `0xFF` |
+
+#### Data Structure and Operation
+
+The data for this write operation has a structure with a variable length as shown in the figure below.
+
+![Indicator Scenario Data Structure](assets/sequential_operation.svg)
+
+Operation is made up of the following six items written with the [Turning the indicator on and off](#turning-the-indicator-on-and-off) data.
+
+- Duration indicator is controlled
+- Number of indicators controlled
+- ID of indicator controlled
+- Value for red indicator
+- Value for green indicator
+- Value for blue indicator
+
+#### Number of repetitions
+
+The number of times operations are repeated is specified with a value ranging between `0` and `255`. `0` repeats operations for an infinite number of times, meaning that the repetition of operations does not end until the next write operation is performed. For values `1` to `255`, the indicator turns off after finishing the specified number of repetitions.
+
+#### Number of Operations
+
+The number of operations is specified with a value range of `1` to `29`. If the value specified is smaller than the number of operations that follow, only the number of operations specified are repeated. If the value specified is greater than the number of operations that follow, an error occurs and the write operation is discarded.
+
+#### Duration indicator is controlled
+
+The duration the indicator is controlled is specified with a value range of `1` to `255`. In the range between `1` and `255`, the indicator turns on and off for 10 times the value specified in milliseconds.
+
+### Turn off all indicators.
+
+All indicators are turned off by writing the following configuration data.
+
+| Data location | Type | Content | Example |
+| ------------- | ----- | ------------ | ----------------------------------------------------------- |
+| 0 | UInt8 | Control type | `0x01` (Turn off all indicators) |
+
+### Turn off a specific indicator.
+
+A specific indicator can be turned off by writing the following configuration data.
+
+| Data location | Type | Content | Example |
+| ------------- | ----- | ------------------------------- | ----------------------------------------------------------------- |
+| 0 | UInt8 | Control type | `0x02` (Turn off a specific indicator) |
+| 1 | UInt8 | Number of indicators controlled | `0x01` |
+| 2 | UInt8 | ID of indicator controlled | `0x01` |
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/magnetic_sensor.md b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/magnetic_sensor.md
new file mode 100644
index 00000000..7439656e
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/magnetic_sensor.md
@@ -0,0 +1,79 @@
+---
+id: ble_magnetic_sensor
+title: Magnetic sensor
+sidebar_label: Magnetic sensor
+---
+
+The cube can use magnetic sensors to detect the type (predefined layout patterns) or magnetic force with the magnet located at the top of a cube. For the hardware specifications of these, see [Hardware specifications - Magnetic sensor](hardware_magnet.md).
+
+:::note
+
+This feature is **disabled** by default. It can only be used after it is enabled under [Configuration - Magnetic sensor settings](configuration.md#magnetic-sensor-settings).
+
+:::
+
+Magnetic sensor information can be obtained using the following characteristics. The characteristics are the same for [Motion detection](sensor.md) and [Posture Angle detection](high_precision_tilt_sensor.md).
+
+| Property | Value |
+| ------------------- | -------------------------------------------------------------------------------------------------------------- |
+| Characteristic UUID | 10B20106-5B3B-4571-9508-CF3EFCD7BBAE |
+| Properties | [Write](#write-operations), [Read](#read-operations--notifications), [Notify](#read-operations--notifications) |
+| Descriptor | Sensor information |
+
+## Write operations
+
+### Requests for magnetic sensor information
+
+Magnetic sensor information can be requested by writing the following data. When the cube receives a request, it sends one notification with the magnetic sensor information.
+
+| Data location | Type | Content | Example |
+| ------------- | ----- | ---------------- | ----------------------------------------------------------------------- |
+| 0 | UInt8 | Information type | `0x82` (Magnetic sensor information request) |
+
+## Read operations / Notifications
+
+When the cube's magnetic sensor information changes, this property notifies the BLE central of this information.
+The notified information can also be obtained with a read operation.
+
+:::note
+
+The characteristics are the same for [Motion detection](sensor.md) and [Posture Angle detection](high_precision_tilt_sensor.md). As this information is also obtained, please also see [Motion detection - Read operations / Notifications](sensor.md#read-operations--notifications) and [Posture Angle detection - Read operations / Notifications](high_precision_tilt_sensor.md#read-operations--notifications) when using.
+
+:::
+
+### Obtaining magnetic sensor information
+
+| Data location | Type | Content | Example |
+| ------------- | ----- | --------------------------------- | --------------------------------------------------------------- |
+| 0 | UInt8 | Information type | `0x02` (Magnetic sensor information) |
+| 1 | UInt8 | Magnet state | `0x00` (Not installed or function disabled) |
+| 2 | UInt8 | Magnetic force strength | `0x00` (Not detected or function disabled) |
+| 3 | Int8 | Magnetic force direction (X axis) | `0x00` (Not detected or function disabled) |
+| 4 | Int8 | Magnetic force direction (Y axis) | `0x00` (Not detected or function disabled) |
+| 5 | Int8 | Magnetic force direction (Z axis) | `0x00` (Not detected or function disabled) |
+
+#### Magnet state
+
+This is the ID of the state of the magnet located at the top of the cube (uninstalled or predefined layouts). The ID is `0x00` when no magnets are installed, and when there are magnets installed, the ID ranges between `0x01` and `0x06` for each of the 6 layout patterns. For the specifications of the layout patterns, see [Hardware specifications - Magnetic sensor](hardware_magnet.md).
+
+The information is not be updated if the sensor detects a state other than these 7 different layout patterns (no magnets installed or one of the 6 layout patterns) defined in [Hardware specifications - Magnetic sensor](hardware_magnet.md).
+
+#### Magnetic force detection
+
+When magnet is placed near the cube, the cube detects the magnetic force and makes a response.
+
+##### Magnetic force strength
+
+The magnetic force strength is the strength of the magnetic force detected by the cube.
+This magnetic force strength is expressed in values ranging between 0 and 255. The higher the value, the stronger the magnetic force.
+
+##### Magnetic force direction
+
+The magnetic force direction indicates the direction of the magnetic force lines relative to the cube.
+The values for each axis range between -10 and 10. When there is no magnetic force detected, the value is 0.
+The length of the magnetic force direction 3D vector is not proportional to the magnetic force strength.
+When magnetic force is detected, the length of the vector is almost constant (about 10).
+
+![Vector composition](assets/magnet_prox_dir.svg)
+
+For how the direction of the cube corresponds to the direction of the magnetic force lines, see [Hardware specifications - Magnetic sensor](hardware_magnet.md#2-magnetic-force-detection).
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/motor.md b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/motor.md
new file mode 100644
index 00000000..5d701542
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/motor.md
@@ -0,0 +1,368 @@
+---
+id: ble_motor
+title: Motor
+sidebar_label: Motor
+---
+
+![Cube direction](assets/motor_cube_direction.svg)
+
+The cube has two motors, with one connected to the left wheel and one to the right wheel (see [Parts](hardware_components.md)).
+These motors can be controlled using the following characteristics.
+
+| Property | Value |
+| ------------------- | ------------------------------------------------------------------------------------------------------------------------------- |
+| Characteristic UUID | 10B20102-5B3B-4571-9508-CF3EFCD7BBAE |
+| Properties | [Write without response](#write-operations), [Read](#read-operations--notifications), [Notify](#read-operations--notifications) |
+| Descriptor | Motor Control |
+
+## Write operations
+
+### Motor Control
+
+The motor can be controlled by writing the following configuration data. The motors continue to run at the specified speed until the next write operation is performed.
+
+| Data location | Type | Content | Example |
+| ------------- | ----- | -------------------------- | ------------------------------------------------- |
+| 0 | UInt8 | Control type | `0x01` (Motor control) |
+| 1 | UInt8 | ID of motor controlled | `0x01` (Left) |
+| 2 | UInt8 | Motor rotation direction | `0x01` (Forward) |
+| 3 | UInt8 | Motor speed command values | `0x64` (100) |
+| 4 | UInt8 | ID motor controlled | `0x02` (Right) |
+| 5 | UInt8 | Motor rotation direction | `0x02` (Backward) |
+| 6 | UInt8 | Motor speed command values | `0x14` (20) |
+
+#### ID motor controlled
+
+Specifies the ID of the motor being controlled. The ID of the left motor is `1` and the ID of the right motor is `2`.
+As there are two locations for which motor ID are specified, if both are specified with the same ID, an error occurs and the write operation is ignored.
+
+#### Motor rotation direction
+
+Specifies the rotation direction for the motor that was just specified.
+The value for moving the cube forward is `1` and the value for moving it backward is `2`.
+
+#### Motor speed command values
+
+Specify the rotation speed for the motor that was just specified.
+The speed of the motor can be specified with values ranging between `0` and `255`. The correlation between the speed of the motor and the actual rotation speed of the wheels is shown in the graph below.
+
+![Input Speed and Wheel Speed](assets/motor_wheel_speed_v2.1.0.svg)
+
+### Motor control with specified duration
+
+The duration of the operation can be specified with the control of the motors by writing the following configuration data.
+The motor stops after the specified time has elapsed.
+
+| Data location | Type | Content | Example |
+| ------------- | ----- | -------------------------- | ------------------------------------------------------------------------- |
+| 0 | UInt8 | Control type | `0x02` (Motor control with specified duration) |
+| 1 | UInt8 | ID of motor controlled | `0x01` (Left) |
+| 2 | UInt8 | Motor rotation direction | `0x01` (Forward) |
+| 3 | UInt8 | Motor speed command values | `0x64` (100) |
+| 4 | UInt8 | ID motor controlled | `0x02` (Right) |
+| 5 | UInt8 | Motor rotation direction | `0x02` (Backward) |
+| 6 | UInt8 | Motor speed command values | `0x14` (20) |
+| 7 | UInt8 | Motor control duration | `0x0A` (100 msec) |
+
+#### Motor control duration
+
+The duration in which the motor is controlled is specified with values ranging from `0` to `255`. A value of `0` means that there is no time limit and the motor continues to run at the specified speed until the next write operation is performed. For values ranging between `1` and `255`, the motor for 10 times the specified value in milliseconds, then stops.
+
+### Motor control with target specified
+
+Motors can be controlled with a target state specified to make the cube move autonomously. Targets that can be set are made up of the following.
+
+- X coordinate of the target point's Position ID
+- Y coordinate of the target point's Position ID
+- Θ angle of the cube at the target point
+
+The cube stops the motors when the central X coordinate, Y coordinate, and angle reach the target, and responds with `0x00: Normal end`. Or, if an error such as a timeout occurs, it responds with the corresponding error. For more information about the responses, refer to [Responses to motor control with target specified](#responses-to-motor-control-with-target-specified).
+
+The state of having reached the target is defined as "values of X and Y coordinates within 15 and the difference in angles within 4 degrees."
+
+| Data location | Type | Content | Example |
+| ------------- | ------ | --------------------------------------- | ----------------------------------------------------------------------- |
+| 0 | UInt8 | Control type | `0x03` (Motor control with target specified) |
+| 1 | UInt8 | Control distinction value | `0x00` |
+| 2 | UInt8 | Timeout period | `0x05` (5 seconds) |
+| 3 | UInt8 | Movement type | `0x00` (Moving while rotating) |
+| 4 | UInt8 | Value indicating maximum motor speed | `0x50` (80) |
+| 5 | UInt8 | Motor speed change types | `0x00` (Constant speed) |
+| 6 | UInt8 | Reserved | `0x00` |
+| 7 | UInt16 | X coordinate value of the target point | `0x02bc` (700) |
+| 9 | UInt16 | Y coordinate value of the target point | `0x0182` (386) |
+| 11 | UInt16 | Θ angle of the cube at the target point | `0x005a` (90 degrees) |
+
+:::note
+
+Byte order is little-endian. For other ways data structures are expressed, see [Function usage - Data structures](how_to_communicate.md#data-structures).
+
+:::
+
+#### Control distinction value
+
+These values are used to distinguish between the corresponding [Responses to motor control with target specified](#responses-to-motor-control-with-target-specified). The value set for this is also included in the corresponding response. This allows for the identification of the corresponding response when performing write operations consecutively. This can be freely set to a value ranging between `0` and `255`.
+
+#### Timeout period
+
+If the cube has not reached the target point after the timeout period set has passed, the cube stops moving and responds with `0x01: Timeout`.
+The timeout period is specified with values ranging between `0` and `255`. These values are in seconds. The only exception is `0`, which is 10 seconds. The cube cannot be set to not timeout.
+
+#### Movement type
+
+Select one of the following three ways for the cube to move to the target point. When rotating the cube in one spot, the resulting movement is the same no matter which type is chosen.
+
+| Value | Method of movement |
+| ----- | ---------------------------------------------- |
+| `0` | Move while rotating |
+| `1` | Move while rotating (without moving backwards) |
+| `2` | Rotate after moving |
+
+![Movement Type](assets/motor_movement_type.svg)
+
+
Movement of each movement type: from left to right 0, 1, 2
.
+
+#### Maximum motor speed command value
+
+Specifies the maximum speed at which the cube can move. The cube moves at no more than the specified speed.
+The valid values for maximum speed range between `10` and `255`. If a value less than `10` is specified, the command is discarded and the cube responds with `0x06: not supported`. The correlation between the speed command value and wheel rotation speed is the same as for [Motor speed command values](#motor-speed-command-values).
+
+#### Motor speed change types
+
+Select one of the following 4 types of Motor speed change types for the cube moving towards the target point.
+
+| Value | Speed change type |
+| ------ | ----------------------------------------------------------------------------------------------------- |
+| `0x00` | Speed constant |
+| `0x01` | Gradual acceleration towards the target point |
+| `0x02` | Gradual deceleration towards the target point |
+| `0x03` | Gradual acceleration halfway until the target point, then deceleration from there to the target point |
+
+#### Target point X coordinates and Y coordinates
+
+Specifies the X and Y coordinates of the target point. The range of values is between `0x0000` and `0xffff` for both, and only `0xffff` is the value for "same as for write operation". For the correlation between the printed Position ID and coordinates, see [Identification sensor - Position ID - Coordinate (X coordinate, Y coordinate)](id.md#coordinates-x-coordinate-y-coordinate).
+
+#### Θ Angle of the cube at the target point
+
+After the cube reaches the target X and Y coordinates, it will rotate to the specified angle. The angle is specified with values ranging between `0x0000` and `0x1ffffff` for the lower 13 bits of the total of 16 bits. The top 3 bits are specified with one of the following values. The angle and movement expressed by the lower 13 bits vary based on these values.
+
+| Top 3 bit value | Angle | Direction of rotation |
+| --------------- | ---------------------------- | ------------------------------------- |
+| `0x00` | Angle | Direction of least amount of rotation |
+| `0x01` | Angle | Forward direction |
+| `0x02` | Angle | Negative direction |
+| `0x03` | Relative angle | Forward direction |
+| `0x04` | Relative angle | Negative direction |
+| `0x05` | No angle specified | No rotation |
+| `0x06` | Same as with write operation | Direction of least amount of rotation |
+
+In the case of an absolute angle, the angle is the orientation with respect to the Position ID. In the case of a relative angle, the angle corresponds to the state of the cube when it arrives at the target point. For `0x05: No angle specified`, the lower 13 bits are ignored and motor control is terminated without rotation when the X and Y coordinates of the target point are reached. For `0x06: Same as with the write operation`, the lower 13 bits are ignored and rotation is performed in the same direction as the write operation.
+
+See [Identification sensor - Position ID - Angle](id.md#angle) for the angle and rotation direction on the Position ID.
+
+### Motor control with multiple targets specified
+
+[Motor control with target specified](#motor-control-with-target-specified) can be expanded to control a motor with multiple targets specified. In the example, 3 targets are pursued in order. When the cube reaches the last target, it stops the motor and responds with `0x00: Completed successfully`. If an error such as a timeout occurs, it responds with the corresponding error. For more information about the responses, refer to [Responses to motor control with multiple targets specified](#responses-to-motor-control-with-multiple-targets-specified).
+
+| Data location | Type | Content | Example |
+| ------------- | ------ | ------------------------------------- | --------------------------------------------------------------------------------- |
+| 0 | UInt8 | Control type | `0x04` (Motor control with multiple targets specified) |
+| 1 | UInt8 | Control distinction value | `0x00` |
+| 2 | UInt8 | Timeout period | `0x05` (5 seconds) |
+| 3 | UInt8 | Movement type | `0x00` (Move while rotating) |
+| 4 | UInt8 | Value indicating maximum motor speed | `0x50` (80) |
+| 5 | UInt8 | Motor speed change types | `0x00` (Speed constant) |
+| 6 | UInt8 | Reserved | `0x00` |
+| 7 | UInt8 | Write operation addition setting | `0x01` (Additional) |
+| 8 | UInt16 | X coordinate value of target point 1 | `0x0064` (100) |
+| 10 | UInt16 | Y coordinate value of target point 1 | `0x0064` (100) |
+| 12 | UInt16 | Θ Angle of cube at target point 1 | `0x0000` (0 degrees) |
+| 14 | UInt16 | X coordinate value of target point 2 | `0x00c8` (200) |
+| 16 | UInt16 | Y coordinate value of target point 2 | `0x0064` (100) |
+| 18 | UInt16 | Θ Angle of the cube at target point 2 | `0x005f` (90 degrees) |
+| 20 | UInt16 | X coordinate value of target point 3 | `0x00c8` (200) |
+| 22 | UInt16 | Y coordinate value of target point 3 | `0x00c8` (200) |
+| 24 | UInt16 | Θ Angle of the cube at target point 3 | `0x00b4` (180 degrees) |
+
+:::note
+
+Byte order is little-endian. For other ways data structures are expressed, see [Function usage - Data structures](how_to_communicate.md#data-structures).
+
+:::
+
+#### Data structure
+
+The data for this write operation has a structure where the data length can change depending on the number of targets specified. As shown in the example above, up to 29 targets can be specified by adding target information to the end of the data in the order of the X coordinate, Y coordinate, and cube angle. If there is no target information or more than 29 targets, an error occurs and the write operation is discarded. The more targets there are, the larger the data size will be. Note that depending on the data size, there may be delays due to the restraints of the BLE range.
+
+#### Control distinction values
+
+These values are used to distinguish between the corresponding [Responses to motor control with target specified](#responses-to-motor-control-with-target-specified). The value set for this is also included in the corresponding response. This allows for the identification of the corresponding response when performing write operations consecutively. This can be freely set to a value ranging between `0` and `255`.
+
+#### Timeout period
+
+If the cube has not reached the target after the timeout period set has passed, the cube stops moving and responds with `0x01: Timeout`. The cube does not move towards any subsequent target points after this. When the cube reaches a target point, the timer resets and the timer starts for the cube to reach the next target point. Timeout period is specified with values ranging between `0` and `255`. These values are in seconds. The only exception is `0`, which is 10 seconds. The cube cannot be set to not timeout.
+
+#### Movement type and maximum motor speed command values
+
+Values are the same as those for [Motor control with target specified](#motor-control-with-target-specified).
+
+#### Motor speed change types
+
+The values that can be specified and their range are the same as for [Motor control with target specified](#motor-control-with-target-specified). These values can be applied along the path of the cube takes to reach its target points.
+
+#### Additional write operation settings
+
+These values are to set the cube operations when a write operation is added. `0x00: overwrite` or `0x01: add` can be specified.
+
+Generally, when a motor control value is written while a different motor control value is being performed, the control action being performed is overwritten (stopped and discarded) and the performance of the newly written control value begins. If `0x00: overwrite` is specified, this overwrite operation is performed.
+
+If `0x01: add` is specified, only in the case the following 2 conditions are met, **one** write operation is added, put on hold, and automatically performed once the motor control being performed is complete.
+
+- The motor control action currently being executed is **a motor control with multiple targets specified**.
+- There are no motor control values with multiple targets specified added.
+
+Even if `0x01: Add` is specified, if the motor control value currently being performed is not a motor control with multiple targets specified, the resulting operation is the same as `0x00: Overwrite`, and the motor control action currently being performed is overwritten (stopped and discarded). If there is a motor control with multiple targets already added, the write operation is discarded and the cube responds with `0x07: Cannot add write operation` of the [Responses to motor control with multiple targets specified](#responses-to-motor-control-with-multiple-targets-specified).
+
+#### X and Y coordinates of the target point
+
+The values and range of values that can be specified are essentially the same as for [Motor control with target specified](#motor-control-with-target-specified). However, for the second and subsequent target points, `0xffff` is not "the same as for the writing operation" but "the same as the settings for the previous target point".
+
+#### Θ angle of the cube at the target point
+
+The values and range of values that can be specified are essentially the same as for [Motor control with target specified](#motor-control-with-target-specified). However, for the second and subsequent target points, `0x06` for the top 3 bits is not "the same as for the writing operation" but "the same as the settings for the previous target point". The "relative angle" is based on the angle of the cube when the write operation is performed.
+
+### Motor control with acceleration specified
+
+The cube's motors can be controlled with the acceleration specified by writing the following configuration data. The cube can also be controlled with its translational speed and rotational speed specified instead of the speed of each motor. In the example, the cube moves slowly along an arc for one second.
+
+| Data location | Type | Content | Example |
+| ------------- | ------ | -------------------------------------------------- | ----------------------------------------------------------------------------- |
+| 0 | UInt8 | Control type | `0x05` (Motor control with acceleration specified) |
+| 1 | UInt8 | Translational speed of cube | `0x32` (50) |
+| 2 | UInt8 | Acceleration of cube | `0x05` (5) |
+| 3 | UInt16 | Rotational velocity when cube changes orientation | `0x000F` (15 degrees/second) |
+| 5 | UInt8 | Rotational direction when cube changes orientation | `0x00` (Forward) |
+| 6 | UInt8 | Direction of cube travel | `0x00` (Forward) |
+| 7 | UInt8 | Priority designation | `0x00` (Translational speed prioritized) |
+| 8 | UInt8 | Duration of control | `0x64` (1 second) |
+
+:::note
+
+Byte order is little-endian. For other ways data structures are expressed, see [Function usage - Data structures](how_to_communicate.md#data-structures).
+
+:::
+
+#### Translational speed of cube
+
+Specifies the speed at which the cube moves in relation to the direction of travel. The value range and correlation to the rotational speed of the wheels are the same as for [Motor speed command values](#motor-speed-command-values).
+
+#### Acceleration of cube
+
+Specify the increment (or decrement) in speed every 100 milliseconds. Acceleration ends when the speed of the cube reaches the speed specified for "Translational speed of cube". Values range between `0` and `255`. If `0` is specified, the speed of the cube becomes the speed specified for "Translational speed of cube" immediately after the write operation is executed. This setting is only effective when motor control values with acceleration is being written consecutively. If the cube is running with any other motor control, this value is ignored, and the speed specified for "Translational speed of cube" is specified immediately after the write operation is executed just as when `0` is specified.
+
+#### Rotational velocity when cube changes orientation
+
+Specifies the rotational velocity when the cube is changing orientation. The values that can be specified for this ranges between `0x00` and `0xffff` in degrees per second.
+
+#### Rotational direction when cube changes orientation
+
+Specifies the rotational direction when the cube is changing orientation. See [Identification sensor - Position ID - Angle](id.md#angle) for the angles and rotational directions based on the Position ID.
+
+#### Direction of cube travel
+
+Specifies the direction the cube travels.`0` is forward and `1` is backward.
+
+#### Priority designation
+
+Depending on how the translational speed and rotational velocity are combined, the range of speed specification values that can be specified for the motor may be exceeded. When this is the case, this parameter specifies whether to give priority to the translational speed or the rotational velocity. `0` gives priority to the translational speed and adjusts the rotational velocity. `1` gives priority to the rotational velocity and adjusts the translational speed.
+
+#### Duration of control
+
+Specifies the duration ranging between `0` and `255` in which the motor is controlled. A value of `0` specifies for there to be no time limit and the motor continues to run at the specified speed until the next write operation action is performed. In the `1` to `255` value range, the motor runs for 10 times the specified value in milliseconds, then stops.
+
+## Read operations / Notifications
+
+This characteristic notifies the BLE central of information. The information being notified can also be obtained through read operations, and the content of this information can be determined with the value at the beginning of the data, as shown below.
+
+| Beginning of data | Information |
+| ----------------- | ------------------------------------------------------------------------------------------------------------------------- |
+| `0x83` | [Responses to motor control with target specified](#responses-to-motor-control-with-target-specified) |
+| `0x84` | [Responses to motor control with multiple targets specified](#responses-to-motor-control-with-multiple-targets-specified) |
+| `0xe0` | [Obtaining motor speed information](#obtaining-motor-speed-information) |
+
+### Responses to motor control with target specified
+
+After [Motor control with target specified](#motor-control-with-target-specified) is written, the following configuration data is sent as a response once only.
+
+| Data location | Type | Content | Example |
+| ------------- | ----- | ---------------------------- | ----------------------------------------------------------------------------------- |
+| 0 | UInt8 | Control type | `0x83` (Response to motor control with target specified) |
+| 1 | UInt8 | Control identification value | `0x00` |
+| 2 | UInt8 | Response content | `0x00` (Completed successfully) |
+
+#### Control identification value
+
+The value set for the corresponding [Motor control with target specified](#motor-control-with-target-specified).
+
+#### Response content
+
+The response content is one of the following depending on the content of the written data and result of execution.
+
+| Value | Content | State |
+| ------ | --------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `0x00` | Completed successfully | When target is reached. Motors stop. |
+| `0x01` | Timeout | When the specified timeout period has elapsed. Motors stop. |
+| `0x02` | toio ID missed | When the cube is in a location without toio ID. Motors stop. |
+| `0x03` | Invalid combination of parameters | When the X coordinate, Y coordinate, and angle are `the same as what is currently written`. Write operation is discarded. |
+| `0x04` | Invalid state | When cube is turned off. Cube is turned off after a notification on the response is received. |
+| `0x05` | Other written control accepted | When a motor control that isn't a motor control with multiple target s specified is written. The motor control currently being performed is terminated and a newly written motor control is performed. |
+| `0x06` | Not supported | When the maximum speed command value of the specified motor is less than `8`. Write operation is discarded. |
+
+### Responses to motor control with multiple targets specified
+
+After [Motor control with multiple targets specified](#motor-control-with-multiple-targets-specified) is written, the following configuration data is sent once as a response.
+
+| Data location | Type | Content | Example |
+| ------------- | ----- | ---------------------------- | --------------------------------------------------------------------------------------------- |
+| 0 | UInt8 | Control type | `0x84` (Response to motor control with multiple targets specified) |
+| 1 | UInt8 | Control identification value | `0x00` |
+| 2 | UInt8 | Response content | `0x00` (Completed successfully) |
+
+#### Control identification value
+
+The value set with the corresponding [Motor control with multiple targets specified](#motor-control-with-multiple-targets-specified).
+
+#### Response content
+
+The response content is one of the following depending on the written data content and execution results.
+
+| Value | Content | State |
+| ------ | --------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `0x00` | Completed successfully | When target is reached. Motors stop. |
+| `0x01` | Timeout | When the specified timeout period has elapsed. Motors stop. |
+| `0x02` | toio ID missed | When the cube is in a location without toio ID. Motors stop. |
+| `0x03` | Invalid combination of parameters | When the X coordinate, Y coordinate, and angle are `the same as what is currently written`. Write operation is discarded. |
+| `0x04` | Invalid state | When cube is turned off. Cube is turned off after a notification on the response is received. |
+| `0x05` | Other written control accepted | When a motor control that isn't a motor control with multiple target s specified is written. The motor control currently being performed is terminated and a newly written motor control is performed. |
+| `0x06` | Not supported | When the maximum speed command value of the specified motor is less than `8`. Write operation is discarded. |
+| `0x07` | Write operation cannot be added | When a write operation cannot be added. Write operation is discarded. |
+
+### Obtaining motor speed information
+
+There is a sensor in the cube that detects the speed of the motors. Information can be obtained from this sensor with the following configuration data. The information is updated and notified at 100 millisecond intervals. If there are no changes in the value, no notification is sent.
+
+:::note
+
+This function is **disabled** by default. When necessary, it can be enabled under [Configuration - Motor speed information acquisition settings](configuration.md#motor-speed-information-acquisition-settings).
+
+:::
+
+| Data location | Type | Content | Example |
+| ------------- | ----- | --------------------------- | --------------------------------------------------------------- |
+| 0 | UInt8 | Information type | `0xe0` (Obtaining speed information) |
+| 1 | UInt8 | Speed of motor ID 1 (left) | `0x32` (50) |
+| 2 | UInt8 | Speed of motor ID 2 (right) | `0x00` (0) |
+
+#### Speed
+
+This is the speed of each motor. The values are in the same units as the [Motor speed command values](#motor-speed-command-values) entered for [Motor control](#motor-control).
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/sensor.md b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/sensor.md
new file mode 100644
index 00000000..10ff9143
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/sensor.md
@@ -0,0 +1,98 @@
+---
+id: ble_sensor
+title: Motion detection
+sidebar_label: motion detection
+---
+
+The cube can detect information on the state of the cube such as the cube posture and collisions with motion sensors (6-axis detection system).
+
+This information can be obtained using the following characteristics. The characteristics are the same as for [Magnetic sensor](magnetic_sensor.md) and [Posture Angle detection](high_precision_tilt_sensor.md).
+
+| Property | Value |
+| ------------------- | -------------------------------------------------------------------------------------------------------------- |
+| Characteristic UUID | 10B20106-5B3B-4571-9508-CF3EFCD7BBAE |
+| Properties | [Write](#write-operations), [Read](#read-operations--notifications), [Notify](#read-operations--notifications) |
+| Descriptor | Sensor Information |
+
+## Write operations
+
+### Requesting motion detection information
+
+The following data can be written to request motion detection information. When the cube receives a request, it sends one notification with the motion detection information.
+
+| Data location | Type | Content | Example |
+| ------------- | ----- | ---------------- | ---------------------------------------------------------------------------- |
+| 0 | UInt8 | Information type | `0x81` (Request for motion detection information) |
+
+## Read operations / Notifications
+
+When the cube's motion sensor information changes, this characteristic notifies the BLE central of the new information. The notified information can also be obtained with a read operation.
+
+:::note
+
+The characteristics are the same as those for [Magnetic sensor](magnetic_sensor.md) and [Posture Angle Detection](high_precision_tilt_sensor.md). As this information is also obtained, please also see [Magnetic sensor - Read operations / Notifications](magnetic_sensor.md#read-operations--notifications) and [Posture Angle detection - Read operations / Notifications](high_precision_tilt_sensor.md#read-operations--notifications) when using.
+
+:::
+
+### Obtaining motion detection information
+
+Information on the cube's motion detection can be obtained with the following configuration data.
+
+| Data location | Type | Content | Example |
+| ------------- | ----- | -------------------- | --------------------------------------------- |
+| 0 | UInt8 | Information type | `0x01` (Detection) |
+| 1 | UInt8 | Horizontal detection | `0x00` (Not horizontal) |
+| 2 | UInt8 | Collision detection | `0x00` (No collision) |
+| 3 | UInt8 | Double-tap detection | `0x00` (No double-tap) |
+| 4 | UInt8 | Posture detection | `0x01` (Posture facing forward) |
+| 5 | UInt8 | Shake detection | `0x00` (No shake) |
+
+#### Horizontal detection
+
+When the cube is horizontal, the value is `0x01` (horizontal), and when it is tilted at more than a certain angle (θ in the figure below), the value becomes `0x00` (not horizontal). The angle threshold can be set under [Configuration - Horizontal detection threshold settings](configuration.md#horizontal-detection-threshold-settings).
+
+![Flat Status Threshold - Roll](assets/configuration_flat_status_threshold_roll.svg)
+
+
Roll orientation
.
+
+![Flat Status Threshold - Pitch](assets/configuration_flat_status_threshold_pitch.svg)
+
+
Pitch orientation
.
+
+#### Collision detection
+
+When something collides with the cube, the value changes from `0x00` (no collision) to `0x01` (collision).
+The threshold for the size of the collision that is detected can be set under [Configuration - Collision detection threshold settings](configuration.md#collision-detection-threshold-settings).
+
+#### Double-tap detection
+
+If the cube is tapped once and then tapped again within a certain period of time, the value changes from `0x00` (no double-tap) to `0x01` (with double-tap). The time interval between taps can be set under [Configuration - Double-tap detection time interval settings](configuration.md#double-tap-detection-time-interval-settings). The settings for the strength of taps that are detected are the same as for [Configuration - Collision detection threshold settings](configuration.md#collision-detection-threshold-settings).
+
+#### Posture detection
+
+This value changes when the orientation of the cube changes relative to the horizontal plane. The correlation between the values and the posture is as follows.
+
+| Value | Cube posture |
+| ----- | ----------------------- |
+| `1` | Top faces upward |
+| `2` | Bottom faces upward |
+| `3` | Rear side faces upward |
+| `4` | Front side faces upward |
+| `5` | Right side faces upward |
+| `6` | Left side faces upward |
+
+![Cube Posture (Normal and Up-side Down)](assets/sensor_posture_normal_up.svg)
+
+
Cube posture: from left to right 1: Top faces upward and 2: Bottom faces upward
.
+
+![Cube Posture (Front-side Down and Back-side Down)](assets/sensor_posture_front_back.svg)
+
+
Cube posture: from left to right 3: Rear side faces upward and 4: front side faces upward
.
+
+![Cube Posture (Left-side Down and Right-side Down)](assets/sensor_posture_left_right.svg)
+
+
Cube posture: from left to right 5: Right side faces upward and 6: Left side faces upward
.
+
+#### Shake detection
+
+When the cube is shook, this value changes from `0x00` (no detection) to a value between `0x01` (Level 1) and `0x0a` (Level 10) depending on the strength of the shake.
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/serialized_information.md b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/serialized_information.md
new file mode 100644
index 00000000..754c819c
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/serialized_information.md
@@ -0,0 +1,210 @@
+---
+id: ble_serialized_information
+title: 'シリアライズ情報'
+sidebar_label: Serialized information
+original_id: ble_serialized_information
+---
+
+キューブから取得できる読み込み/通知情報をまとめて 1 つの情報として提供します。本機能は何らかの理由でシリアライズされた情報が必要となった場合に使用する機能です。他のすべての読み込み/通知情報が取得できる環境であれば、使用する必要はありません。
+
+:::note
+
+この機能は**デフォルトでは無効**になっています。[設定 - シリアライズ情報の通知設定](configuration.md#シリアライズ情報の通知設定)で有効化してはじめて利用可能になります。
+
+:::
+
+シリアライズ情報は以下の特性(characteristic)を使うことで取得できます。特性は[設定](configuration.md)と同じです。
+
+| プロパティ | 値 |
+| ------------------- | ---------------------------------------------------------------------------------- |
+| Characteristic UUID | 10B201FF-5B3B-4571-9508-CF3EFCD7BBAE |
+| Properties | [Write](#書き込み操作), [Read](#読み出し操作--通知), [Notify](#読み出し操作--通知) |
+| Descriptor | Configuration |
+
+## 書き込み操作
+
+シリアライズ情報に使用する書き込み操作はありません。
+
+## 読み出し操作 / 通知
+
+この特性は BLE セントラルに情報を通知します。
+通知される情報は読み出し操作でも取得できます。
+
+:::note
+
+特性は[設定](configuration.md)と共通です。これらの情報も取得されますので、利用の際には[設定 - 読み出し操作](configuration.md#読み出し操作)や[設定 - 通知](configuration.md#通知)も確認してください。
+
+:::
+
+### シリアライズ情報の取得
+
+以下のデータが取得できます。
+
+| データ位置 | タイプ | 内容 | 例 |
+| ---------- | ------ | ---------------- | ------------------------------------------------------- |
+| 0 | UInt8 | 情報の種類 | **`0xf0`** シリアライズ情報の取得 |
+| 1 | 19Byte | シリアライズ情報 | 省略 |
+
+#### 情報の種類
+
+**`0xf0`** は「シリアライズ情報の取得」を表します。
+
+特性が[設定](configuration.md)と共通なので、以下に記載されている情報も取得できます。この情報の種類の値を調べて、どの情報を取得したか判断してください。
+
+- [設定 - 読み出し操作](configuration.md#読み出し操作)
+- [設定 - 通知](configuration.md#通知)
+
+#### シリアライズ情報
+
+以下のビット位置およびビットサイズのデータが取得できます。
+
+| ビット位置 | ビットサイズ | 内容 |
+| ---------- | ------------ | ---------------------------------------------------------------- |
+| 0 | 4 ビット | Reserved |
+| 4 | 1 ビット | 機能ボタンの状態 |
+| 5 | 2 ビット | toio ID 検出状態 |
+| 7 | 1 ビット | Position ID または Standard ID のキューブの角度(下位) |
+| 8 | 8 ビット | Position ID または Standard ID のキューブの角度(上位) |
+| 16 | 8 ビット | Position ID のキューブの中心の X 座標値(下位) |
+| 24 | 6 ビット | Position ID のキューブの中心の X 座標値(上位) |
+| 30 | 2 ビット | Position ID のキューブの中心の Y 座標値(下位) |
+| 32 | 8 ビット | Position ID のキューブの中心の Y 座標値(中位) |
+| 40 | 4 ビット | Position ID のキューブの中心の Y 座標値(上位) |
+| 44 | 4 ビット | Standard ID の値(下位) |
+| 48 | 8 ビット | Standard ID の値(中下位) |
+| 56 | 8 ビット | Standard ID の値(中上位) |
+| 64 | 8 ビット | Standard ID の値(上位) |
+| 72 | 8 ビット | モーター ID 1(左)の速度 |
+| 80 | 8 ビット | モーター ID 2(右)の速度 |
+| 88 | 5 ビット | 目標指定付きモーター制御または複数目標指定付きモーター制御の応答 |
+| 93 | 3 ビット | モーション検出情報の姿勢検出 |
+| 96 | 7 ビット | バッテリー残量 |
+| 103 | 1 ビット | モーション検出情報の水平検出 |
+| 104 | 5 ビット | モーション検出情報のシェイク検出 |
+| 109 | 1 ビット | モーション検出情報の衝突検出 |
+| 110 | 1 ビット | モーション検出情報のダブルタップ検出 |
+| 111 | 1 ビット | Reserved |
+| 112 | 8 ビット | 姿勢角情報(オイラー角)の Roll(ロール/X 軸)の絶対値 |
+| 120 | 8 ビット | 姿勢角情報(オイラー角)の Pitch(ピッチ/Y 軸)の絶対値 |
+| 128 | 8 ビット | 姿勢角情報(オイラー角)の Yaw(ヨー/Z 軸)の絶対値 |
+| 136 | 1 ビット | 姿勢角情報(オイラー角)の Roll(ロール/X 軸)の符号 |
+| 137 | 1 ビット | 姿勢角情報(オイラー角)の Pitch(ピッチ/Y 軸)の符号 |
+| 138 | 1 ビット | 姿勢角情報(オイラー角)の Yaw(ヨー/Z 軸)の符号 |
+| 139 | 2 ビット | Reserved |
+| 141 | 3 ビット | 磁気センサーの磁石の状態 |
+| 144 | 8 ビット | 磁気センサーの磁力の強度 |
+
+##### 機能ボタンの状態
+
+[ボタン](button.md)で取得できる[機能ボタン](button.md#ボタンの-id)の[状態](button.md#ボタンの状態)を表します。
+
+| 値 | 機能ボタンの状態 |
+| ----- | ---------------- |
+| `0b0` | 押されていない |
+| `0b1` | 押されている |
+
+##### toio ID 検出状態
+
+[読み取りセンサー](id.md)で取得できる現在の toio ID の検出状態を表します。
+
+| 値 | toio ID 検出状態 |
+| ------ | ------------------------ |
+| `0b01` | Standard ID の読み取り中 |
+| `0b10` | Position ID の読み取り中 |
+| `0b11` | 読み取り中でない |
+
+##### Position ID または Standard ID のキューブの角度
+
+[読み取りセンサー](id.md)で取得できる[Position ID のキューブの角度](id.md#角度)または[Standard ID のキューブの角度](id.md#キューブの角度)を表します。どちらか最後に取得された角度が反映されます。
+
+##### Position ID のキューブの中心の X 座標値
+
+[読み取りセンサー](id.md)で取得できる[Position ID のキューブの中心の X 座標値](id.md#座標x-座標y-座標)を表します。
+値の最大値が`0x3fff`までで、それ以上の値の場合は切り捨てられます。
+
+##### Position ID のキューブの中心の Y 座標値
+
+[読み取りセンサー](id.md)で取得できる[Position ID のキューブの中心の Y 座標値](id.md#座標x-座標y-座標)を表します。
+値の最大値が`0x3fff`までで、それ以上の値の場合は切り捨てられます。
+
+##### Standard ID の値
+
+[読み取りセンサー](id.md)で取得できる[Standard ID の値](id.md#standard-id-の値)を表します。
+値の最大値が`0xfffffff`までで、それ以上の値の場合は切り捨てられます。
+
+##### モーター ID 1(左)の速度
+
+[モーター](motor.md)で取得できる[モーター ID 1(左)の速度](motor.md#速度)を表します。
+[設定 - モーターの速度情報の取得の設定](configuration.md#モーターの速度情報の取得の設定)が無効の場合は常に`0x00`となります。
+
+##### モーター ID 2(右)の速度
+
+[モーター](motor.md)で取得できる[モーター ID 2(右)の速度](motor.md#速度)を表します。
+[設定 - モーターの速度情報の取得の設定](configuration.md#モーターの速度情報の取得の設定)が無効の場合は常に`0x00`となります。
+
+##### 目標指定付きモーター制御または複数目標指定付きモーター制御の応答
+
+[モーター](motor.md)で取得できる[目標指定付きモーター制御の応答内容](motor.md#応答内容)または[複数目標指定付きモーター制御の応答内容](motor.md#応答内容-1)を表します。
+最後に実行した[目標指定付きモーター制御](motor.md#目標指定付きモーター制御)もしくは[複数目標指定付きモーター制御](motor.md#複数目標指定付きモーター制御)の応答結果を反映し、制御の実行中は`0x1f`の状態になります。
+
+| 値 | 目標指定付きモーター制御または複数目標指定付きモーター制御の応答 |
+| ---------- | ---------------------------------------------------------------------------- |
+| `0x1f` | 目標指定付きモーター制御または複数目標指定付きモーター制御を実行中 |
+| `0x1f`以外 | 目標指定付きモーター制御の応答または複数目標指定付きモーター制御の応答と同じ |
+
+##### モーション検出情報の姿勢検出
+
+[モーション検出](sensor.md)で取得できる[姿勢検出](sensor.md#姿勢検出)を表します。
+
+##### バッテリー残量
+
+[バッテリー](battery.md)で取得できる[バッテリー残量](battery.md#バッテリー残量)を表します。
+
+##### モーション検出情報の水平検出
+
+[モーション検出](sensor.md)で取得できる[水平検出](sensor.md#水平検出)を表します。
+
+##### モーション検出情報のシェイク検出
+
+[モーション検出](sensor.md)で取得できる[シェイク検出](sensor.md#シェイク検出)を表します。
+
+##### モーション検出情報の衝突検出
+
+[モーション検出](sensor.md)で取得できる[衝突検出](sensor.md#衝突検出)を表します。
+
+##### モーション検出情報のダブルタップ検出
+
+[モーション検出](sensor.md)で取得できる[ダブルタップ検出](sensor.md#ダブルタップ検出)を表します。
+
+##### 姿勢角情報(オイラー角)の Roll(ロール/X 軸)の絶対値
+
+[姿勢角検出](high_precision_tilt_sensor.md)で取得できる[姿勢角情報(オイラー角)の Roll(ロール/X 軸)](high_precision_tilt_sensor.md#角度)の絶対値を表します。符号の情報は[姿勢角情報(オイラー角)の Roll(ロール/X 軸)の符号](#姿勢角情報オイラー角の-rollロールx-軸の符号)を参照してください。
+
+##### 姿勢角情報(オイラー角)の Pitch(ピッチ/Y 軸)の絶対値
+
+[姿勢角検出](high_precision_tilt_sensor.md)で取得できる[姿勢角情報(オイラー角)の Pitch(ピッチ/Y 軸)](high_precision_tilt_sensor.md#角度)の絶対値を表します。符号の情報は[姿勢角情報(オイラー角)の Pitch(ピッチ/Y 軸)の符号](#姿勢角情報オイラー角の-pitchピッチy-軸の符号)を参照してください。
+
+##### 姿勢角情報(オイラー角)の Yaw(ヨー/Z 軸)の絶対値
+
+[姿勢角検出](high_precision_tilt_sensor.md)で取得できる[姿勢角情報(オイラー角)の Yaw(ヨー/Z 軸)](high_precision_tilt_sensor.md#角度)の絶対値を表します。符号の情報は[姿勢角情報(オイラー角)の Yaw(ヨー/Z 軸)の符号](#姿勢角情報オイラー角の-yawヨーz-軸の符号)を参照してください。
+
+##### 姿勢角情報(オイラー角)の Roll(ロール/X 軸)の符号
+
+[姿勢角検出](high_precision_tilt_sensor.md)で取得できる[姿勢角情報(オイラー角)の Roll(ロール/X 軸)](high_precision_tilt_sensor.md#角度)の符号を表します。絶対値の情報は[姿勢角情報(オイラー角)の Roll(ロール/X 軸)の絶対値](#姿勢角情報オイラー角の-rollロールx-軸の絶対値)を参照してください。
+
+##### 姿勢角情報(オイラー角)の Pitch(ピッチ/Y 軸)の符号
+
+[姿勢角検出](high_precision_tilt_sensor.md)で取得できる[姿勢角情報(オイラー角)の Pitch(ピッチ/Y 軸)](high_precision_tilt_sensor.md#角度)の符号を表します。絶対値の情報は[姿勢角情報(オイラー角)の Pitch(ピッチ/Y 軸)の絶対値](#姿勢角情報オイラー角の-pitchピッチy-軸の絶対値)を参照してください。
+
+##### 姿勢角情報(オイラー角)の Yaw(ヨー/Z 軸)の符号
+
+[姿勢角検出](high_precision_tilt_sensor.md)で取得できる[姿勢角情報(オイラー角)の Yaw(ヨー/Z 軸)](high_precision_tilt_sensor.md#角度)の符号を表します。絶対値の情報は[姿勢角情報(オイラー角)の Yaw(ヨー/Z 軸)の絶対値](#姿勢角情報オイラー角の-yawヨーz-軸の絶対値)を参照してください。
+
+##### 磁気センサーの磁石の状態
+
+[磁気センサー](magnetic_sensor.md)で取得できる[磁石の状態](magnetic_sensor.md#磁石の状態)を表します。
+
+##### 磁気センサーの磁力の強度
+
+[磁気センサー](magnetic_sensor.md)で取得できる[磁石の強度](magnetic_sensor.md#磁力の強度)を表します。
+なおシリアライズ情報では[磁石の方向](magnetic_sensor.md#磁力の方向)は取得できません。
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/sound.md b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/sound.md
new file mode 100644
index 00000000..30776735
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/version-2.4.0/sound.md
@@ -0,0 +1,296 @@
+---
+id: ble_sound
+title: Sound
+sidebar_label: Sound
+---
+
+There is one piezoelectric speaker in the cube that plays sound.
+This piezoelectric speaker can play sound effects or melodies using MIDI note numbers within the cube using the following characteristic.
+
+| Property | Value |
+| ------------------- | ------------------------------------ |
+| Characteristic UUID | 10B20104-5B3B-4571-9508-CF3EFCD7BBAE |
+| Properties | [Write](#write-operations) |
+| Descriptor | Sound Control |
+
+## Write operations
+
+### Playing sound effects
+
+Sound effects on the cube can be played by writing the following configuration data.
+In the example, the "Mat in" sound effect is played.
+
+| Data location | Type | Content | Example |
+| ------------- | ----- | --------------- | ----------------------------------------------------- |
+| 0 | UInt8 | Control type | `0x02` (Play sound effect) |
+| 1 | UInt8 | Sound effect ID | `0x04` (Mat in) |
+| 2 | UInt8 | Volume | `0xFF` (Max) |
+
+#### Sound effect ID
+
+The sound effect ID is specified with values ranging between `0` and `10`, and the correlation between the ID and the type of sound effect is as follows.
+
+| Sound effect ID | Type of sound effect |
+| --------------- | -------------------- |
+| 0 | Enter |
+| 1 | Selected |
+| 2 | Cancel |
+| 3 | Cursor |
+| 4 | Mat in |
+| 5 | Mat out |
+| 6 | Get 1 |
+| 7 | Get 2 |
+| 8 | Get 3 |
+| 9 | Effect 1 |
+| 10 | Effect 2 |
+
+#### Volume
+
+The volume can be specified with values ranging between `0` and `255`, where `0` is volume 0 (off) and all the other values are the maximum volume.
+
+### Playing the MIDI note numbers
+
+A melody can be played with a MIDI note number by writing the following configuration data. In the example "C5-D5-E5" is played on repeat.
+
+| Data location | Type | Content | Example |
+| ------------- | ----- | --------------------- | --------------------------------------------------------- |
+| 0 | UInt8 | Control type | `0x03` (Play MIDI note number) |
+| 1 | UInt8 | Number of repetitions | `0x00` (Infinite) |
+| 2 | UInt8 | Number of operations | `0x03` (Three) |
+| 3 | UInt8 | Duration played | `0x1E` (300 milliseconds) |
+| 4 | UInt8 | MIDI note number | `0x3C` (C5) |
+| 5 | UInt8 | Volume | `0x1E` (Max) |
+| 6 | UInt8 | Duration played | `0x1E` (300 milliseconds) |
+| 7 | UInt8 | MIDI note number | `0x3E` (D5) |
+| 8 | UInt8 | Volume | `0xFF` (Max) |
+| 9 | UInt8 | Duration played | `0x1E` (300 milliseconds) |
+| 10 | UInt8 | MIDI note number | `0x40` (E5) |
+| 11 | UInt8 | Volume | `0xFF` (Max) |
+
+#### Data Structure and Operation
+
+The data for this write operation has structure with a variable length as shown in the figure below.
+
+![Sound Sequence Data Structure](assets/sequential_operation.svg)
+
+Operation is made up of the following three elements.
+
+- Duration played
+- MIDI note number
+- Volume
+
+#### Number of iterations
+
+Specifies the number of times Operation is repeated in the range from `0` to `255`. `0` means "infinite times", and Operation repetition will not end until the next write operation is performed. In the range of `1` to `255`, the indicator will turn off after repeating the specified number of times.
+
+#### Number of Operation
+
+Specifies the number of operations with values ranging between `1` and `59`. If the value specified is smaller than the number of operations that follow, only the number of operations specified are repeated. If the value specified is greater than the number of operations that follow, an error occurs and the write operation is discarded.
+
+#### Duration played
+
+Specifies the length of time a MIDI note number is played, with values ranging between `1` and `255`. The MIDI note number is played for 10 times the specified value in milliseconds.
+
+#### MIDI note number
+
+Specifies the MIDI note number that is played, with values ranging between `0` and `128`. See [MIDI note number and note name](#midi-note-number-and-note-name) for the correlation with the note names.
+
+### Stop playing
+
+[Playing sound effects] (#Playing-sound-effects) and [Playing MIDI note number] (#Playing-MIDI-note-number) can be stopped by writing the following configuration data.
+
+| Data location | Type | Content | Example |
+| ------------- | ----- | ------------ | ------------------------------------------------ |
+| 0 | UInt8 | Control type | `0x01` (Stop playing) |
+
+## Additional information
+
+### MIDI note number and note name
+
+The correlation between the MIDI note numbers and note names is as follows: MIDI note number = 57 creates a 440 Hz sound, and MIDI note number = 128 creates no sound.
+
+
+
+
+
Octave
+
Note name
+
+
+
C
+
C#
+
D
+
D#
+
E
+
F
+
F#
+
G
+
G#
+
A
+
A#
+
B
+
+
+
+
+
0
+
0
+
1
+
2
+
3
+
4
+
5
+
6
+
7
+
8
+
9
+
10
+
11
+
+
+
1
+
12
+
13
+
14
+
15
+
16
+
17
+
18
+
19
+
20
+
21
+
22
+
23
+
+
+
2
+
24
+
25
+
26
+
27
+
28
+
29
+
30
+
31
+
32
+
33
+
34
+
35
+
+
+
3
+
36
+
37
+
38
+
39
+
40
+
41
+
42
+
43
+
44
+
45
+
46
+
47
+
+
+
4
+
48
+
49
+
50
+
51
+
52
+
53
+
54
+
55
+
56
+
57
+
58
+
59
+
+
+
5
+
60
+
61
+
62
+
63
+
64
+
65
+
66
+
67
+
68
+
69
+
70
+
71
+
+
+
6
+
72
+
73
+
74
+
75
+
76
+
77
+
78
+
79
+
80
+
81
+
82
+
83
+
+
+
7
+
84
+
85
+
86
+
87
+
88
+
89
+
90
+
91
+
92
+
93
+
94
+
95
+
+
+
8
+
96
+
97
+
98
+
99
+
100
+
101
+
102
+
103
+
104
+
105
+
106
+
107
+
+
+
9
+
108
+
109
+
110
+
111
+
112
+
113
+
114
+
115
+
116
+
117
+
118
+
119
+
+
+
10
+
120
+
121
+
122
+
123
+
124
+
125
+
126
+
127
+
+
+
diff --git a/website/versioned_docs/version-2.4.0/about.md b/website/versioned_docs/version-2.4.0/about.md
new file mode 100644
index 00000000..3324bd21
--- /dev/null
+++ b/website/versioned_docs/version-2.4.0/about.md
@@ -0,0 +1,51 @@
+---
+id: about
+title: 'このサイトについて'
+sidebar_label: 'このサイトについて'
+original_id: about
+---
+
+## 目的
+
+このサイトでは toio を使って本格的なプログラミングをしたい方へ向けて、toio コア キューブ(以降キューブ)の技術仕様を公開します。このサイトで公開されている情報を用いて様々な方がキューブの新しい使い方や楽しいあそび方を発見・創造し、toio の世界が広がっていくことを期待しています。
+
+toio 製品概要や購入に関する情報については [toio 公式サイト](https://toio.io)をご覧ください。また、toio を初めてご利用になる前には[各種マニュアル](https://toio.io/manual)をご覧ください。
+
+## ヘルプ
+
+内容に応じて以下を利用可能です。
+
+### toio サポートサイト
+
+toio の製品や各タイトルに関する質問については [toio サポートサイト](https://support.toio.io/)をご利用ください。
+
+### GitHub Issue
+
+誤植や内容の誤りなど、このサイト自体に修正が必要な場合は [GitHub のリポジトリ](https://github.com/toio/toio-spec)で Issue を作ってください。
+
+### Stack Overflow
+
+一般的な質問等に関しては Stack Overflow にて toio タグのついた質問を見たり、作ったりしてください。
+
+- [Frequent 'toio' Questions \- Stack Overflow](https://stackoverflow.com/questions/tagged/toio?sort=frequent)
+- [リンク最多の 'toio' 質問 \- スタック・オーバーフロー](https://ja.stackoverflow.com/questions/tagged/toio?sort=frequent)
+
+## ライセンス
+
+このサイトの文書はすべて [クリエイティブ・コモンズ表示 4.0 国際パブリック・ライセンス](https://creativecommons.org/licenses/by/4.0/)でライセンスされます。またこのサイトのイラストと 3D データについてはすべて[クリエイティブ・コモンズ 表示-改変禁止 4.0 国際 パブリック・ライセンス](https://creativecommons.org/licenses/by-nd/4.0/)でライセンスされます。各ライセンスの下でユーザーの皆さんはご自由にお使いただけます。お使いいただく場合は、以下の表記を入れてください。
+
+```text
+Original document by Sony Interactive Entertainment Inc., is licensed under CC BY 4.0.
+https://github.com/toio/toio-spec
+https://creativecommons.org/licenses/by/4.0/
+```
+
+```text
+Original image and 3D data by Sony Interactive Entertainment Inc., is licensed under CC BY-ND 4.0.
+https://github.com/toio/toio-spec
+https://creativecommons.org/licenses/by-nd/4.0/
+```
+
+## ご注意
+
+キューブの仕様および外観は、予告なく変更することがあります。また、本サイト上のイラストは実際のものと異なる場合があります。本サイトに記載されている数値は当社独自の測定方法や仕様によるものであり、実際の使用状況や環境により異なる場合があります。
diff --git a/website/versioned_docs/version-2.4.0/assets/Gesundroid-mat-for-public.svg b/website/versioned_docs/version-2.4.0/assets/Gesundroid-mat-for-public.svg
new file mode 100644
index 00000000..c334551e
--- /dev/null
+++ b/website/versioned_docs/version-2.4.0/assets/Gesundroid-mat-for-public.svg
@@ -0,0 +1,1655 @@
+
+
+
diff --git a/website/versioned_docs/version-2.4.0/assets/configuration_flat_status_threshold_pitch.svg b/website/versioned_docs/version-2.4.0/assets/configuration_flat_status_threshold_pitch.svg
new file mode 100755
index 00000000..849aa300
--- /dev/null
+++ b/website/versioned_docs/version-2.4.0/assets/configuration_flat_status_threshold_pitch.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/versioned_docs/version-2.4.0/assets/configuration_flat_status_threshold_roll.svg b/website/versioned_docs/version-2.4.0/assets/configuration_flat_status_threshold_roll.svg
new file mode 100755
index 00000000..3d808895
--- /dev/null
+++ b/website/versioned_docs/version-2.4.0/assets/configuration_flat_status_threshold_roll.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/versioned_docs/version-2.4.0/assets/cube_basics_charging.svg b/website/versioned_docs/version-2.4.0/assets/cube_basics_charging.svg
new file mode 100644
index 00000000..0c4ef6d6
--- /dev/null
+++ b/website/versioned_docs/version-2.4.0/assets/cube_basics_charging.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/versioned_docs/version-2.4.0/assets/cube_basics_light.svg b/website/versioned_docs/version-2.4.0/assets/cube_basics_light.svg
new file mode 100644
index 00000000..8d07100c
--- /dev/null
+++ b/website/versioned_docs/version-2.4.0/assets/cube_basics_light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/versioned_docs/version-2.4.0/assets/cube_basics_power_on_off.svg b/website/versioned_docs/version-2.4.0/assets/cube_basics_power_on_off.svg
new file mode 100644
index 00000000..ef300573
--- /dev/null
+++ b/website/versioned_docs/version-2.4.0/assets/cube_basics_power_on_off.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/versioned_docs/version-2.4.0/assets/favicon.png b/website/versioned_docs/version-2.4.0/assets/favicon.png
new file mode 100644
index 00000000..7f823914
Binary files /dev/null and b/website/versioned_docs/version-2.4.0/assets/favicon.png differ
diff --git a/website/versioned_docs/version-2.4.0/assets/hardware_components.svg b/website/versioned_docs/version-2.4.0/assets/hardware_components.svg
new file mode 100644
index 00000000..4182d5b0
--- /dev/null
+++ b/website/versioned_docs/version-2.4.0/assets/hardware_components.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/versioned_docs/version-2.4.0/assets/hardware_magnet.svg b/website/versioned_docs/version-2.4.0/assets/hardware_magnet.svg
new file mode 100644
index 00000000..dce889d1
--- /dev/null
+++ b/website/versioned_docs/version-2.4.0/assets/hardware_magnet.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/versioned_docs/version-2.4.0/assets/hardware_magnet_layout.svg b/website/versioned_docs/version-2.4.0/assets/hardware_magnet_layout.svg
new file mode 100644
index 00000000..e06e9f2e
--- /dev/null
+++ b/website/versioned_docs/version-2.4.0/assets/hardware_magnet_layout.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/versioned_docs/version-2.4.0/assets/hardware_other_polarity.svg b/website/versioned_docs/version-2.4.0/assets/hardware_other_polarity.svg
new file mode 100644
index 00000000..666efd9a
--- /dev/null
+++ b/website/versioned_docs/version-2.4.0/assets/hardware_other_polarity.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/versioned_docs/version-2.4.0/assets/hardware_size_bottom_view.svg b/website/versioned_docs/version-2.4.0/assets/hardware_size_bottom_view.svg
new file mode 100644
index 00000000..3734c93a
--- /dev/null
+++ b/website/versioned_docs/version-2.4.0/assets/hardware_size_bottom_view.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/versioned_docs/version-2.4.0/assets/hardware_size_mount.svg b/website/versioned_docs/version-2.4.0/assets/hardware_size_mount.svg
new file mode 100644
index 00000000..608f86b0
--- /dev/null
+++ b/website/versioned_docs/version-2.4.0/assets/hardware_size_mount.svg
@@ -0,0 +1,147 @@
+
diff --git a/website/versioned_docs/version-2.4.0/assets/hardware_size_side_view.svg b/website/versioned_docs/version-2.4.0/assets/hardware_size_side_view.svg
new file mode 100644
index 00000000..473e787c
--- /dev/null
+++ b/website/versioned_docs/version-2.4.0/assets/hardware_size_side_view.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/versioned_docs/version-2.4.0/assets/id-tce-answer.svg b/website/versioned_docs/version-2.4.0/assets/id-tce-answer.svg
new file mode 100644
index 00000000..3eb9aca1
--- /dev/null
+++ b/website/versioned_docs/version-2.4.0/assets/id-tce-answer.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/versioned_docs/version-2.4.0/assets/id-tce-baton.svg b/website/versioned_docs/version-2.4.0/assets/id-tce-baton.svg
new file mode 100644
index 00000000..6c0e02b7
--- /dev/null
+++ b/website/versioned_docs/version-2.4.0/assets/id-tce-baton.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/versioned_docs/version-2.4.0/assets/id-tce-color.svg b/website/versioned_docs/version-2.4.0/assets/id-tce-color.svg
new file mode 100644
index 00000000..93111ae2
--- /dev/null
+++ b/website/versioned_docs/version-2.4.0/assets/id-tce-color.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/versioned_docs/version-2.4.0/assets/id-tce-dash.svg b/website/versioned_docs/version-2.4.0/assets/id-tce-dash.svg
new file mode 100644
index 00000000..257e72f3
--- /dev/null
+++ b/website/versioned_docs/version-2.4.0/assets/id-tce-dash.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/versioned_docs/version-2.4.0/assets/id-tce-dnd_normal.svg b/website/versioned_docs/version-2.4.0/assets/id-tce-dnd_normal.svg
new file mode 100644
index 00000000..fa863c86
--- /dev/null
+++ b/website/versioned_docs/version-2.4.0/assets/id-tce-dnd_normal.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/versioned_docs/version-2.4.0/assets/id-tce-dnd_rodeo.svg b/website/versioned_docs/version-2.4.0/assets/id-tce-dnd_rodeo.svg
new file mode 100644
index 00000000..352ab7f1
--- /dev/null
+++ b/website/versioned_docs/version-2.4.0/assets/id-tce-dnd_rodeo.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/versioned_docs/version-2.4.0/assets/id-tce-kaiju.svg b/website/versioned_docs/version-2.4.0/assets/id-tce-kaiju.svg
new file mode 100644
index 00000000..9a6ffe4d
--- /dev/null
+++ b/website/versioned_docs/version-2.4.0/assets/id-tce-kaiju.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/versioned_docs/version-2.4.0/assets/id-tce-laser_challenge.svg b/website/versioned_docs/version-2.4.0/assets/id-tce-laser_challenge.svg
new file mode 100644
index 00000000..517402b5
--- /dev/null
+++ b/website/versioned_docs/version-2.4.0/assets/id-tce-laser_challenge.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/versioned_docs/version-2.4.0/assets/id-tce-laser_create.svg b/website/versioned_docs/version-2.4.0/assets/id-tce-laser_create.svg
new file mode 100644
index 00000000..285ff67e
--- /dev/null
+++ b/website/versioned_docs/version-2.4.0/assets/id-tce-laser_create.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/versioned_docs/version-2.4.0/assets/id-tce-music_1.svg b/website/versioned_docs/version-2.4.0/assets/id-tce-music_1.svg
new file mode 100644
index 00000000..a0ca1970
--- /dev/null
+++ b/website/versioned_docs/version-2.4.0/assets/id-tce-music_1.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/versioned_docs/version-2.4.0/assets/id-tce-music_2.svg b/website/versioned_docs/version-2.4.0/assets/id-tce-music_2.svg
new file mode 100644
index 00000000..e477130e
--- /dev/null
+++ b/website/versioned_docs/version-2.4.0/assets/id-tce-music_2.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/versioned_docs/version-2.4.0/assets/id-tce-music_3.svg b/website/versioned_docs/version-2.4.0/assets/id-tce-music_3.svg
new file mode 100644
index 00000000..f888c694
--- /dev/null
+++ b/website/versioned_docs/version-2.4.0/assets/id-tce-music_3.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/versioned_docs/version-2.4.0/assets/id-tce-music_4.svg b/website/versioned_docs/version-2.4.0/assets/id-tce-music_4.svg
new file mode 100644
index 00000000..47f5527f
--- /dev/null
+++ b/website/versioned_docs/version-2.4.0/assets/id-tce-music_4.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/versioned_docs/version-2.4.0/assets/id-tce-pullback.svg b/website/versioned_docs/version-2.4.0/assets/id-tce-pullback.svg
new file mode 100644
index 00000000..1c3d84d4
--- /dev/null
+++ b/website/versioned_docs/version-2.4.0/assets/id-tce-pullback.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/versioned_docs/version-2.4.0/assets/id-tce-skunk_2p.svg b/website/versioned_docs/version-2.4.0/assets/id-tce-skunk_2p.svg
new file mode 100644
index 00000000..6f810f85
--- /dev/null
+++ b/website/versioned_docs/version-2.4.0/assets/id-tce-skunk_2p.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/versioned_docs/version-2.4.0/assets/id-tce-skunk_cpu.svg b/website/versioned_docs/version-2.4.0/assets/id-tce-skunk_cpu.svg
new file mode 100644
index 00000000..7e55230e
--- /dev/null
+++ b/website/versioned_docs/version-2.4.0/assets/id-tce-skunk_cpu.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/versioned_docs/version-2.4.0/assets/id-tce-watchout_2p.svg b/website/versioned_docs/version-2.4.0/assets/id-tce-watchout_2p.svg
new file mode 100644
index 00000000..f217c7d1
--- /dev/null
+++ b/website/versioned_docs/version-2.4.0/assets/id-tce-watchout_2p.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/versioned_docs/version-2.4.0/assets/id-tce-watchout_cpu.svg b/website/versioned_docs/version-2.4.0/assets/id-tce-watchout_cpu.svg
new file mode 100644
index 00000000..87038f01
--- /dev/null
+++ b/website/versioned_docs/version-2.4.0/assets/id-tce-watchout_cpu.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/versioned_docs/version-2.4.0/assets/id-tce-watchout_free.svg b/website/versioned_docs/version-2.4.0/assets/id-tce-watchout_free.svg
new file mode 100644
index 00000000..37a52bc2
--- /dev/null
+++ b/website/versioned_docs/version-2.4.0/assets/id-tce-watchout_free.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/versioned_docs/version-2.4.0/assets/id_card_auto_tackle.svg b/website/versioned_docs/version-2.4.0/assets/id_card_auto_tackle.svg
new file mode 100644
index 00000000..5be3d20a
--- /dev/null
+++ b/website/versioned_docs/version-2.4.0/assets/id_card_auto_tackle.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/versioned_docs/version-2.4.0/assets/id_card_auto_tackle_back.svg b/website/versioned_docs/version-2.4.0/assets/id_card_auto_tackle_back.svg
new file mode 100644
index 00000000..1e727f21
--- /dev/null
+++ b/website/versioned_docs/version-2.4.0/assets/id_card_auto_tackle_back.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/versioned_docs/version-2.4.0/assets/id_card_automatic_chasing.svg b/website/versioned_docs/version-2.4.0/assets/id_card_automatic_chasing.svg
new file mode 100644
index 00000000..d57cd4d1
--- /dev/null
+++ b/website/versioned_docs/version-2.4.0/assets/id_card_automatic_chasing.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/versioned_docs/version-2.4.0/assets/id_card_automatic_chasing_back.svg b/website/versioned_docs/version-2.4.0/assets/id_card_automatic_chasing_back.svg
new file mode 100644
index 00000000..2131616b
--- /dev/null
+++ b/website/versioned_docs/version-2.4.0/assets/id_card_automatic_chasing_back.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/versioned_docs/version-2.4.0/assets/id_card_random.svg b/website/versioned_docs/version-2.4.0/assets/id_card_random.svg
new file mode 100644
index 00000000..93242d88
--- /dev/null
+++ b/website/versioned_docs/version-2.4.0/assets/id_card_random.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/versioned_docs/version-2.4.0/assets/id_card_random_back.svg b/website/versioned_docs/version-2.4.0/assets/id_card_random_back.svg
new file mode 100644
index 00000000..f9835aae
--- /dev/null
+++ b/website/versioned_docs/version-2.4.0/assets/id_card_random_back.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/versioned_docs/version-2.4.0/assets/id_card_rush.svg b/website/versioned_docs/version-2.4.0/assets/id_card_rush.svg
new file mode 100644
index 00000000..6945b4e0
--- /dev/null
+++ b/website/versioned_docs/version-2.4.0/assets/id_card_rush.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/versioned_docs/version-2.4.0/assets/id_card_rush_back.svg b/website/versioned_docs/version-2.4.0/assets/id_card_rush_back.svg
new file mode 100644
index 00000000..01059593
--- /dev/null
+++ b/website/versioned_docs/version-2.4.0/assets/id_card_rush_back.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/versioned_docs/version-2.4.0/assets/id_card_side_attack.svg b/website/versioned_docs/version-2.4.0/assets/id_card_side_attack.svg
new file mode 100644
index 00000000..513ef78f
--- /dev/null
+++ b/website/versioned_docs/version-2.4.0/assets/id_card_side_attack.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/versioned_docs/version-2.4.0/assets/id_card_side_attack_back.svg b/website/versioned_docs/version-2.4.0/assets/id_card_side_attack_back.svg
new file mode 100644
index 00000000..e6227787
--- /dev/null
+++ b/website/versioned_docs/version-2.4.0/assets/id_card_side_attack_back.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/versioned_docs/version-2.4.0/assets/id_card_swing_attack_power_up.svg b/website/versioned_docs/version-2.4.0/assets/id_card_swing_attack_power_up.svg
new file mode 100644
index 00000000..138d456d
--- /dev/null
+++ b/website/versioned_docs/version-2.4.0/assets/id_card_swing_attack_power_up.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/versioned_docs/version-2.4.0/assets/id_card_swing_attack_power_up_back.svg b/website/versioned_docs/version-2.4.0/assets/id_card_swing_attack_power_up_back.svg
new file mode 100644
index 00000000..bbaa4df4
--- /dev/null
+++ b/website/versioned_docs/version-2.4.0/assets/id_card_swing_attack_power_up_back.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/versioned_docs/version-2.4.0/assets/id_card_tackle_power_up.svg b/website/versioned_docs/version-2.4.0/assets/id_card_tackle_power_up.svg
new file mode 100644
index 00000000..9536c76a
--- /dev/null
+++ b/website/versioned_docs/version-2.4.0/assets/id_card_tackle_power_up.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/versioned_docs/version-2.4.0/assets/id_card_tackle_power_up_back.svg b/website/versioned_docs/version-2.4.0/assets/id_card_tackle_power_up_back.svg
new file mode 100644
index 00000000..5970e747
--- /dev/null
+++ b/website/versioned_docs/version-2.4.0/assets/id_card_tackle_power_up_back.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/versioned_docs/version-2.4.0/assets/id_card_typhoon.svg b/website/versioned_docs/version-2.4.0/assets/id_card_typhoon.svg
new file mode 100644
index 00000000..a258702e
--- /dev/null
+++ b/website/versioned_docs/version-2.4.0/assets/id_card_typhoon.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/versioned_docs/version-2.4.0/assets/id_card_typhoon_back.svg b/website/versioned_docs/version-2.4.0/assets/id_card_typhoon_back.svg
new file mode 100644
index 00000000..01f660b2
--- /dev/null
+++ b/website/versioned_docs/version-2.4.0/assets/id_card_typhoon_back.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/versioned_docs/version-2.4.0/assets/id_illust_card_sticker.svg b/website/versioned_docs/version-2.4.0/assets/id_illust_card_sticker.svg
new file mode 100644
index 00000000..27062c96
--- /dev/null
+++ b/website/versioned_docs/version-2.4.0/assets/id_illust_card_sticker.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/versioned_docs/version-2.4.0/assets/id_illust_cube_card.png b/website/versioned_docs/version-2.4.0/assets/id_illust_cube_card.png
new file mode 100644
index 00000000..83ea560b
Binary files /dev/null and b/website/versioned_docs/version-2.4.0/assets/id_illust_cube_card.png differ
diff --git a/website/versioned_docs/version-2.4.0/assets/id_illust_cube_playmat.png b/website/versioned_docs/version-2.4.0/assets/id_illust_cube_playmat.png
new file mode 100644
index 00000000..b78c5628
Binary files /dev/null and b/website/versioned_docs/version-2.4.0/assets/id_illust_cube_playmat.png differ
diff --git a/website/versioned_docs/version-2.4.0/assets/id_illust_mat.png b/website/versioned_docs/version-2.4.0/assets/id_illust_mat.png
new file mode 100644
index 00000000..2d9b78a5
Binary files /dev/null and b/website/versioned_docs/version-2.4.0/assets/id_illust_mat.png differ
diff --git a/website/versioned_docs/version-2.4.0/assets/id_mark_craft_fighter.svg b/website/versioned_docs/version-2.4.0/assets/id_mark_craft_fighter.svg
new file mode 100644
index 00000000..14b898b0
--- /dev/null
+++ b/website/versioned_docs/version-2.4.0/assets/id_mark_craft_fighter.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/versioned_docs/version-2.4.0/assets/id_mark_finger_strike.svg b/website/versioned_docs/version-2.4.0/assets/id_mark_finger_strike.svg
new file mode 100644
index 00000000..1e0e69bd
--- /dev/null
+++ b/website/versioned_docs/version-2.4.0/assets/id_mark_finger_strike.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/versioned_docs/version-2.4.0/assets/id_mark_finger_strike_1p.svg b/website/versioned_docs/version-2.4.0/assets/id_mark_finger_strike_1p.svg
new file mode 100755
index 00000000..8365fd97
--- /dev/null
+++ b/website/versioned_docs/version-2.4.0/assets/id_mark_finger_strike_1p.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/versioned_docs/version-2.4.0/assets/id_mark_free_move.svg b/website/versioned_docs/version-2.4.0/assets/id_mark_free_move.svg
new file mode 100644
index 00000000..55639577
--- /dev/null
+++ b/website/versioned_docs/version-2.4.0/assets/id_mark_free_move.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/versioned_docs/version-2.4.0/assets/id_mark_rhythm_and_go.svg b/website/versioned_docs/version-2.4.0/assets/id_mark_rhythm_and_go.svg
new file mode 100644
index 00000000..3ad1b498
--- /dev/null
+++ b/website/versioned_docs/version-2.4.0/assets/id_mark_rhythm_and_go.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/versioned_docs/version-2.4.0/assets/id_mark_skunk_chaser.svg b/website/versioned_docs/version-2.4.0/assets/id_mark_skunk_chaser.svg
new file mode 100644
index 00000000..1a9724b0
--- /dev/null
+++ b/website/versioned_docs/version-2.4.0/assets/id_mark_skunk_chaser.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/versioned_docs/version-2.4.0/assets/id_position_id-picotons_autoplay.svg b/website/versioned_docs/version-2.4.0/assets/id_position_id-picotons_autoplay.svg
new file mode 100644
index 00000000..cf1f9d4d
--- /dev/null
+++ b/website/versioned_docs/version-2.4.0/assets/id_position_id-picotons_autoplay.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/versioned_docs/version-2.4.0/assets/id_position_id-picotons_control.svg b/website/versioned_docs/version-2.4.0/assets/id_position_id-picotons_control.svg
new file mode 100644
index 00000000..dd91b829
--- /dev/null
+++ b/website/versioned_docs/version-2.4.0/assets/id_position_id-picotons_control.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/versioned_docs/version-2.4.0/assets/id_position_id-picotons_play_back.svg b/website/versioned_docs/version-2.4.0/assets/id_position_id-picotons_play_back.svg
new file mode 100644
index 00000000..d195fe99
--- /dev/null
+++ b/website/versioned_docs/version-2.4.0/assets/id_position_id-picotons_play_back.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/versioned_docs/version-2.4.0/assets/id_position_id-picotons_play_front.svg b/website/versioned_docs/version-2.4.0/assets/id_position_id-picotons_play_front.svg
new file mode 100644
index 00000000..421f0563
--- /dev/null
+++ b/website/versioned_docs/version-2.4.0/assets/id_position_id-picotons_play_front.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/versioned_docs/version-2.4.0/assets/id_position_id_angle.svg b/website/versioned_docs/version-2.4.0/assets/id_position_id_angle.svg
new file mode 100644
index 00000000..33819985
--- /dev/null
+++ b/website/versioned_docs/version-2.4.0/assets/id_position_id_angle.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/versioned_docs/version-2.4.0/assets/id_position_id_coordinate.png b/website/versioned_docs/version-2.4.0/assets/id_position_id_coordinate.png
new file mode 100644
index 00000000..0c4be152
Binary files /dev/null and b/website/versioned_docs/version-2.4.0/assets/id_position_id_coordinate.png differ
diff --git a/website/versioned_docs/version-2.4.0/assets/id_rhythm_back.svg b/website/versioned_docs/version-2.4.0/assets/id_rhythm_back.svg
new file mode 100644
index 00000000..27256ab9
--- /dev/null
+++ b/website/versioned_docs/version-2.4.0/assets/id_rhythm_back.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/versioned_docs/version-2.4.0/assets/id_rhythm_front.svg b/website/versioned_docs/version-2.4.0/assets/id_rhythm_front.svg
new file mode 100644
index 00000000..f87d801c
--- /dev/null
+++ b/website/versioned_docs/version-2.4.0/assets/id_rhythm_front.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/versioned_docs/version-2.4.0/assets/id_rhythm_go.svg b/website/versioned_docs/version-2.4.0/assets/id_rhythm_go.svg
new file mode 100644
index 00000000..e2ba01af
--- /dev/null
+++ b/website/versioned_docs/version-2.4.0/assets/id_rhythm_go.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/versioned_docs/version-2.4.0/assets/id_rhythm_left.svg b/website/versioned_docs/version-2.4.0/assets/id_rhythm_left.svg
new file mode 100644
index 00000000..71f4ebf1
--- /dev/null
+++ b/website/versioned_docs/version-2.4.0/assets/id_rhythm_left.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/versioned_docs/version-2.4.0/assets/id_rhythm_right.svg b/website/versioned_docs/version-2.4.0/assets/id_rhythm_right.svg
new file mode 100644
index 00000000..04c6f18e
--- /dev/null
+++ b/website/versioned_docs/version-2.4.0/assets/id_rhythm_right.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/versioned_docs/version-2.4.0/assets/id_skunk_blue.svg b/website/versioned_docs/version-2.4.0/assets/id_skunk_blue.svg
new file mode 100644
index 00000000..584b0b09
--- /dev/null
+++ b/website/versioned_docs/version-2.4.0/assets/id_skunk_blue.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/versioned_docs/version-2.4.0/assets/id_skunk_brown.svg b/website/versioned_docs/version-2.4.0/assets/id_skunk_brown.svg
new file mode 100644
index 00000000..61b14c8d
--- /dev/null
+++ b/website/versioned_docs/version-2.4.0/assets/id_skunk_brown.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/versioned_docs/version-2.4.0/assets/id_skunk_green.svg b/website/versioned_docs/version-2.4.0/assets/id_skunk_green.svg
new file mode 100644
index 00000000..0e1a98c9
--- /dev/null
+++ b/website/versioned_docs/version-2.4.0/assets/id_skunk_green.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/versioned_docs/version-2.4.0/assets/id_skunk_orange.svg b/website/versioned_docs/version-2.4.0/assets/id_skunk_orange.svg
new file mode 100644
index 00000000..b3840232
--- /dev/null
+++ b/website/versioned_docs/version-2.4.0/assets/id_skunk_orange.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/versioned_docs/version-2.4.0/assets/id_skunk_red.svg b/website/versioned_docs/version-2.4.0/assets/id_skunk_red.svg
new file mode 100644
index 00000000..9f3f441b
--- /dev/null
+++ b/website/versioned_docs/version-2.4.0/assets/id_skunk_red.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/versioned_docs/version-2.4.0/assets/id_skunk_yellow.svg b/website/versioned_docs/version-2.4.0/assets/id_skunk_yellow.svg
new file mode 100644
index 00000000..91977643
--- /dev/null
+++ b/website/versioned_docs/version-2.4.0/assets/id_skunk_yellow.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/versioned_docs/version-2.4.0/assets/id_sticker_panic.svg b/website/versioned_docs/version-2.4.0/assets/id_sticker_panic.svg
new file mode 100644
index 00000000..320d5fbf
--- /dev/null
+++ b/website/versioned_docs/version-2.4.0/assets/id_sticker_panic.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/versioned_docs/version-2.4.0/assets/id_sticker_shock.svg b/website/versioned_docs/version-2.4.0/assets/id_sticker_shock.svg
new file mode 100644
index 00000000..28dbd652
--- /dev/null
+++ b/website/versioned_docs/version-2.4.0/assets/id_sticker_shock.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/versioned_docs/version-2.4.0/assets/id_sticker_speed_down.svg b/website/versioned_docs/version-2.4.0/assets/id_sticker_speed_down.svg
new file mode 100644
index 00000000..3db8dea7
--- /dev/null
+++ b/website/versioned_docs/version-2.4.0/assets/id_sticker_speed_down.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/versioned_docs/version-2.4.0/assets/id_sticker_speed_up.svg b/website/versioned_docs/version-2.4.0/assets/id_sticker_speed_up.svg
new file mode 100644
index 00000000..4a265858
--- /dev/null
+++ b/website/versioned_docs/version-2.4.0/assets/id_sticker_speed_up.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/versioned_docs/version-2.4.0/assets/id_sticker_spin.svg b/website/versioned_docs/version-2.4.0/assets/id_sticker_spin.svg
new file mode 100644
index 00000000..2bc97bc9
--- /dev/null
+++ b/website/versioned_docs/version-2.4.0/assets/id_sticker_spin.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/versioned_docs/version-2.4.0/assets/id_sticker_wobble.svg b/website/versioned_docs/version-2.4.0/assets/id_sticker_wobble.svg
new file mode 100644
index 00000000..36370fa2
--- /dev/null
+++ b/website/versioned_docs/version-2.4.0/assets/id_sticker_wobble.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/versioned_docs/version-2.4.0/assets/id_tce_baton-mark.o.svg b/website/versioned_docs/version-2.4.0/assets/id_tce_baton-mark.o.svg
new file mode 100644
index 00000000..b1f79ee3
--- /dev/null
+++ b/website/versioned_docs/version-2.4.0/assets/id_tce_baton-mark.o.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/versioned_docs/version-2.4.0/assets/magnet_coordinate_system.svg b/website/versioned_docs/version-2.4.0/assets/magnet_coordinate_system.svg
new file mode 100644
index 00000000..f3547e06
--- /dev/null
+++ b/website/versioned_docs/version-2.4.0/assets/magnet_coordinate_system.svg
@@ -0,0 +1,181 @@
+
diff --git a/website/versioned_docs/version-2.4.0/assets/magnet_prox_dir.svg b/website/versioned_docs/version-2.4.0/assets/magnet_prox_dir.svg
new file mode 100644
index 00000000..0881f79c
--- /dev/null
+++ b/website/versioned_docs/version-2.4.0/assets/magnet_prox_dir.svg
@@ -0,0 +1,124 @@
+
diff --git a/website/versioned_docs/version-2.4.0/assets/motor_cube_direction.svg b/website/versioned_docs/version-2.4.0/assets/motor_cube_direction.svg
new file mode 100644
index 00000000..046b892c
--- /dev/null
+++ b/website/versioned_docs/version-2.4.0/assets/motor_cube_direction.svg
@@ -0,0 +1,72 @@
+
diff --git a/website/versioned_docs/version-2.4.0/assets/motor_movement_type.svg b/website/versioned_docs/version-2.4.0/assets/motor_movement_type.svg
new file mode 100644
index 00000000..c6965ce5
--- /dev/null
+++ b/website/versioned_docs/version-2.4.0/assets/motor_movement_type.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/versioned_docs/version-2.4.0/assets/motor_wheel_speed.svg b/website/versioned_docs/version-2.4.0/assets/motor_wheel_speed.svg
new file mode 100644
index 00000000..dc105daf
--- /dev/null
+++ b/website/versioned_docs/version-2.4.0/assets/motor_wheel_speed.svg
@@ -0,0 +1,264 @@
+
+
+
diff --git a/website/versioned_docs/version-2.4.0/assets/motor_wheel_speed_v2.0.0.svg b/website/versioned_docs/version-2.4.0/assets/motor_wheel_speed_v2.0.0.svg
new file mode 100644
index 00000000..dfc90f19
--- /dev/null
+++ b/website/versioned_docs/version-2.4.0/assets/motor_wheel_speed_v2.0.0.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/versioned_docs/version-2.4.0/assets/motor_wheel_speed_v2.1.0.svg b/website/versioned_docs/version-2.4.0/assets/motor_wheel_speed_v2.1.0.svg
new file mode 100644
index 00000000..7f15e9ca
--- /dev/null
+++ b/website/versioned_docs/version-2.4.0/assets/motor_wheel_speed_v2.1.0.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/versioned_docs/version-2.4.0/assets/sensor_cube_axis.svg b/website/versioned_docs/version-2.4.0/assets/sensor_cube_axis.svg
new file mode 100644
index 00000000..18bc3ea1
--- /dev/null
+++ b/website/versioned_docs/version-2.4.0/assets/sensor_cube_axis.svg
@@ -0,0 +1,125 @@
+
diff --git a/website/versioned_docs/version-2.4.0/assets/sensor_posture_front_back.svg b/website/versioned_docs/version-2.4.0/assets/sensor_posture_front_back.svg
new file mode 100644
index 00000000..43fcef8c
--- /dev/null
+++ b/website/versioned_docs/version-2.4.0/assets/sensor_posture_front_back.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/versioned_docs/version-2.4.0/assets/sensor_posture_left_right.svg b/website/versioned_docs/version-2.4.0/assets/sensor_posture_left_right.svg
new file mode 100644
index 00000000..408c97b1
--- /dev/null
+++ b/website/versioned_docs/version-2.4.0/assets/sensor_posture_left_right.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/versioned_docs/version-2.4.0/assets/sensor_posture_normal_up.svg b/website/versioned_docs/version-2.4.0/assets/sensor_posture_normal_up.svg
new file mode 100644
index 00000000..b466dbbf
--- /dev/null
+++ b/website/versioned_docs/version-2.4.0/assets/sensor_posture_normal_up.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/versioned_docs/version-2.4.0/assets/sequential_operation.svg b/website/versioned_docs/version-2.4.0/assets/sequential_operation.svg
new file mode 100755
index 00000000..381f2f81
--- /dev/null
+++ b/website/versioned_docs/version-2.4.0/assets/sequential_operation.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/versioned_docs/version-2.4.0/assets/social_image.png b/website/versioned_docs/version-2.4.0/assets/social_image.png
new file mode 100644
index 00000000..584d4e68
Binary files /dev/null and b/website/versioned_docs/version-2.4.0/assets/social_image.png differ
diff --git a/website/versioned_docs/version-2.4.0/assets/top_hardware.svg b/website/versioned_docs/version-2.4.0/assets/top_hardware.svg
new file mode 100644
index 00000000..c096463f
--- /dev/null
+++ b/website/versioned_docs/version-2.4.0/assets/top_hardware.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/versioned_docs/version-2.4.0/assets/top_software.svg b/website/versioned_docs/version-2.4.0/assets/top_software.svg
new file mode 100644
index 00000000..b123f204
--- /dev/null
+++ b/website/versioned_docs/version-2.4.0/assets/top_software.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/versioned_docs/version-2.4.0/battery.md b/website/versioned_docs/version-2.4.0/battery.md
new file mode 100644
index 00000000..a6f8efd4
--- /dev/null
+++ b/website/versioned_docs/version-2.4.0/battery.md
@@ -0,0 +1,31 @@
+---
+id: ble_battery
+title: "バッテリー"
+sidebar_label: "バッテリー"
+original_id: ble_battery
+---
+
+キューブのバッテリー残量は以下の特性(characteristic)を使うことで取得できます。
+
+| プロパティ | 値 |
+| ------------------- | -------------------------------------- |
+| Characteristic UUID | 10B20108-5B3B-4571-9508-CF3EFCD7BBAE |
+| Properties | [Read](#読み出し操作), [Notify](#通知) |
+| Descriptor | Battery Information |
+
+## 読み出し操作
+
+キューブのバッテリー残量を以下に示す構成のデータで取得できます。
+
+| データ位置 | タイプ | 内容 | 例 |
+| ---------- | ------ | -------------- | ----------------------- |
+| 0 | UInt8 | バッテリー残量 | `0x50`(80 パーセント) |
+
+#### バッテリー残量
+
+バッテリー残量は 0 から 100 までの範囲を 10 刻みで取得可能です。単位はパーセントです。
+
+## 通知
+
+約 5 秒間隔で、この特性は BLE セントラルに情報を通知します。
+通知される情報の内容とデータの構造は[読み出し操作](#読み出し操作)で得られるものと同じです。
diff --git a/website/versioned_docs/version-2.4.0/ble_communication_overview.md b/website/versioned_docs/version-2.4.0/ble_communication_overview.md
new file mode 100644
index 00000000..47a70cf0
--- /dev/null
+++ b/website/versioned_docs/version-2.4.0/ble_communication_overview.md
@@ -0,0 +1,69 @@
+---
+id: ble_communication_overview
+title: '通信概要'
+sidebar_label: '🔄 通信概要'
+original_id: ble_communication_overview
+---
+
+## キューブとの通信について
+
+キューブとの通信は Bluetooth® 標準規格 Ver. 4.2(Bluetooth® Low Energy、以下 BLE)で行います。
+
+## キューブの発見
+
+キューブは電源をいれると BLE ペリフェラル(Peripheral)として起動し、下記の情報をアドバタイズします。
+
+| 定義 | 値 |
+| ---------------------------------------- | --------------------------------------------------- |
+| Flags | General Discoverable Mode, BR/EDR Not Supported |
+| Complete list of 128bit Service UUIDs | 10B20100-5B3B-4571-9508-CF3EFCD7BBAE |
+| Shortened Local Name | toio-XXX |
+
+### Complete Local Name と Shortened Local Name について
+
+キューブのシステムソフトウェア v02.0006(BLE プロトコルバージョン v2.4.0)から、Complete Local Name の代わりに Shortened Local Name がアドバタイズに含まれます。
+Shortened Local Name は `toio-XXX` です。
+
+Complete Local Name はキューブのシステムソフトウェア v02.0006(BLE プロトコルバージョン v2.4.0)からアドバタイズ情報に含まれなくなりました。
+Complete Local Name は Generic Access サービスの Device Name 特性から読み出せます。
+Complete Local Name は `toio-XXX (toio Core Cube)` です。
+
+XXX にはキューブごとに固有の ID 文字列が入ります。 これは電源を入れなおしても不変な値のため、数十台同時にキューブを運用する際に個体識別の補助に役立ちます。
+ID 文字列は、すべてのキューブで固有の値になることを保証するものではありません。 また、キューブに記載されたシリアル番号と同じ番号ではありません。
+
+ID に使われる文字列は 3 桁の文字列で、アルファベット+数字+アルファベットの順番で構成されます。
+
+アルファベットは大文字、小文字の両方が使用されます。
+アルファベットのうち下記の文字は使用されません。
+
+| ID に使用されないアルファベット |
+| --------------------------------------- |
+| l,I,o,O,g,q,s,S,v,V,u,U,w,W,x,X,y,Y,z,Z |
+
+| Complete Local Name の例 |
+| ------------------------ |
+| toio-M0p |
+| toio-a9R |
+| toio-C3P |
+
+#### 旧バージョン(システムソフトウェア v02.0005, BLE プロトコルバージョン v2.3.0)での Local Name
+
+キューブのシステムソフトウェア v02.0005(BLE プロトコルバージョン v2.3.0)では、アドバタイズに Complete Local Name が含まれます。
+旧バージョンの Complete Local Name は `toio Core Cube-XXX` です。
+
+## キューブの機能の利用
+
+キューブの各種機能は以下のサービス(service)とそこに含まれている特性(characteristic)を使うことで情報の取得や制御ができます。
+
+| プロパティ | 値 |
+| --------------- | ---------------------------------------------------- |
+| Type | Primary Service |
+| Service UUID | 10B20100-5B3B-4571-9508-CF3EFCD7BBAE |
+| Characteristics | [ID Information / 読み取りセンサー](id.md) |
+| | [Sensor Information / モーションセンサー](sensor.md) |
+| | [Button Information / ボタン](button.md) |
+| | [Battery Information / バッテリー](battery.md) |
+| | [Motor Control / モーター](motor.md) |
+| | [Light Control / ランプ](light.md) |
+| | [Sound Control / サウンド](sound.md) |
+| | [Configuration / 設定](configuration.md) |
diff --git a/website/versioned_docs/version-2.4.0/button.md b/website/versioned_docs/version-2.4.0/button.md
new file mode 100644
index 00000000..f336871d
--- /dev/null
+++ b/website/versioned_docs/version-2.4.0/button.md
@@ -0,0 +1,41 @@
+---
+id: ble_button
+title: 'ボタン'
+sidebar_label: 'ボタン'
+original_id: ble_button
+---
+
+キューブは底面に機能ボタンを 1 つ持っています(参考:[各部の名前](hardware_components.md))。
+ボタンの状態は以下の特性(characteristic)を使うことで取得できます。
+
+| プロパティ | 値 |
+| ------------------- | -------------------------------------- |
+| Characteristic UUID | 10B20107-5B3B-4571-9508-CF3EFCD7BBAE |
+| Properties | [Read](#読み出し操作), [Notify](#通知) |
+| Descriptor | Button Information |
+
+## 読み出し操作
+
+ボタンの状態を以下に示す構成のデータで取得できます。
+
+| データ位置 | タイプ | 内容 | 例 |
+| ---------- | ------ | ------------ | ----------------------------------------------- |
+| 0 | UInt8 | ボタンの ID | `0x01`(機能ボタン) |
+| 1 | UInt8 | ボタンの状態 | `0x80`(押された) |
+
+#### ボタンの ID
+
+ID と対応するボタンは以下のとおりです(参考:[各部の名前](hardware_components.md))。
+
+| ボタンの ID | ボタン |
+| ----------- | ---------- |
+| `0x01` | 機能ボタン |
+
+#### ボタンの状態
+
+押されたら`0x80`、離されたら`0x00`になります。
+
+## 通知
+
+ボタンの状態が変化すると、この特性は BLE セントラルに情報を通知します。
+通知される情報の内容とデータの構造は[読み出し操作](#読み出し操作)で得られるものと同じです。
diff --git a/website/versioned_docs/version-2.4.0/configuration.md b/website/versioned_docs/version-2.4.0/configuration.md
new file mode 100644
index 00000000..b44fdf42
--- /dev/null
+++ b/website/versioned_docs/version-2.4.0/configuration.md
@@ -0,0 +1,465 @@
+---
+id: ble_configuration
+title: '設定'
+sidebar_label: '🔄 設定'
+original_id: ble_configuration
+---
+
+キューブは自身の通信仕様のバージョン情報や各種設定情報を内部に保存しています。
+これらの情報は以下の特性(characteristic)を使うことで取得や変更ができます。
+
+| プロパティ | 値 |
+| ------------------- | -------------------------------------------------------------- |
+| Characteristic UUID | 10B201FF-5B3B-4571-9508-CF3EFCD7BBAE |
+| Properties | [Write](#書き込み操作), [Read](#読み出し操作), [Notify](#通知) |
+| Descriptor | Configuration |
+
+## 書き込み操作
+
+:::note
+
+書き込み操作によって各種設定値などを変更できますが、キューブの接続が切れるとすべての変更は破棄され初期値に戻ります。
+
+:::
+
+### BLE プロトコルバージョンの要求
+
+以下のデータを書き込むことでキューブの BLE プロトコルバージョンを要求できます。結果の取得方法は [BLE プロトコルバージョンの取得](#ble-プロトコルバージョンの取得)を参照してください。
+
+| データ位置 | タイプ | 内容 | 例 |
+| ---------- | ------ | ---------- | ------------------------------------------------------------------- |
+| 0 | UInt8 | 設定の種類 | `0x01`(BLE プロトコルバージョンの要求) |
+| 1 | UInt8 | Reserved | `0x00` |
+
+### 水平検出のしきい値設定
+
+[モーションセンサー](sensor.md)で取得できる水平検出はキューブの底面と水平面のなす角度(下の図の θ)がしきい値を超えると`0x00`(水平でない)となります。以下のデータを書き込むことでこのしきい値を変更できます。
+
+| データ位置 | タイプ | 内容 | 例 |
+| ---------- | ------ | ---------- | ----------------------------------------------------------- |
+| 0 | UInt8 | 設定の種類 | `0x05`(水平検出のしきい値設定) |
+| 1 | UInt8 | Reserved | `0x00` |
+| 2 | UInt8 | しきい値 | `0x0A` (10 度) |
+
+しきい値はロール方向とピッチ方向の回転の両方に適用されます。しきい値の範囲と初期値は以下のとおりです。
+
+**ロール方向**
+![Flat Status Threshold - Roll](assets/configuration_flat_status_threshold_roll.svg)
+
+**ピッチ方向**
+![Flat Status Threshold - Pitch](assets/configuration_flat_status_threshold_pitch.svg)
+
+| プロパティ | 値の範囲 | 初期値 |
+| ---------- | ------------------------ | ---------- |
+| しきい値 | `1` 以上 `45` 以下(度) | `45`(度) |
+
+### 衝突検出のしきい値設定
+
+[モーションセンサー](sensor.md)で取得できる衝突検出はキューブの受ける衝突の強さがしきい値を超えると`0x01`(衝突あり)となります。以下のデータを書き込むことでこのしきい値を変更できます。
+
+| データ位置 | タイプ | 内容 | 例 |
+| ---------- | ------ | ---------- | ----------------------------------------------------------- |
+| 0 | UInt8 | 設定の種類 | `0x06`(衝突検出のしきい値設定) |
+| 1 | UInt8 | Reserved | `0x00` |
+| 2 | UInt8 | しきい値 | `0x0A` (level 10) |
+
+しきい値の範囲と初期値は以下のとおりです。値の大きは衝突の大きさを意味します。
+
+| プロパティ | 値の範囲 | 初期値 |
+| ---------- | -------------------------- | ----------- |
+| しきい値 | `1` 以上 `10` 以下 (level) | `7` (level) |
+
+### ダブルタップ検出の時間間隔の設定
+
+[モーションセンサー](sensor.md)で取得できるダブルタップ検出はキューブが一度タップされてから一定時間内に再度タップされると、`1`(ダブルタップあり)となります。以下のデータを書き込むことでこのタップの時間間隔を変更できます。
+
+| データ位置 | タイプ | 内容 | 例 |
+| ---------- | ------ | ---------- | --------------------------------------------------------------------- |
+| 0 | UInt8 | 設定の種類 | `0x17`(ダブルタップ検出の時間間隔の設定) |
+| 1 | UInt8 | Reserved | `0x00` |
+| 2 | UInt8 | 時間間隔 | `0x07` (level 7) |
+
+時間間隔の範囲と初期値は以下のとおりです。値が大きくなると、時間間隔も長くなります。
+
+| プロパティ | 値の範囲 | 初期値 |
+| ---------- | ------------------------- | ----------- |
+| 時間間隔 | `0` 以上 `7` 以下 (level) | `5` (level) |
+
+### 読み取りセンサーの ID 通知設定
+
+読み取りセンサーの [Position ID](id.md#position-id) および [Standard ID](id.md#standard-id) の通知頻度を設定します。**「最小通知間隔」と「通知条件」の両方を満たした場合に通知が行われます**。結果の取得方法は[読み取りセンサーの ID 通知設定の応答](#読み取りセンサーの-id-通知設定の応答)を参照してください。
+
+| データ位置 | タイプ | 内容 | 例 |
+| ---------- | ------ | ------------ | ------------------------------------------------------------------- |
+| 0 | UInt8 | 設定の種類 | `0x18`(読み取りセンサーの ID 通知設定) |
+| 1 | UInt8 | Reserved | `0x00` |
+| 2 | UInt8 | 最小通知間隔 | `0x01`(10 ミリ秒) |
+| 3 | UInt8 | 通知条件 | `0x01`(変化時のみ通知) |
+
+#### 最小通知間隔
+
+通知間隔の最小値を設定します。値の範囲と初期値は以下のとおりです。単位は 10 ミリ秒です。例えば `5` を設定した場合は 50 ミリ秒より長い間隔で通知が行われます。あくまで通知間隔の最小値であり、一定の通知間隔を保証するものではありません。またセントラル側の状態によっても通知間隔は変動しますのでご注意ください。
+
+| プロパティ | 値の範囲 | 初期値 |
+| ------------ | ------------------- | ---------------- |
+| 最小通知間隔 | `0` 以上 `255` 以下 | `1`(10 ミリ秒) |
+
+#### 通知条件
+
+通知する条件を以下の 3 つのタイプから 1 つ選択します。初期値は `0xff` です。
+
+| 通知条件 | 内容 |
+| -------- | --------------------------------------------------------------------------------------------- |
+| `0x00` | 通知内容に変化がなくても通知を行います |
+| `0x01` | 座標は 2 以上、角度は 3 度以上の変化がある場合に通知を行います |
+| `0xff` | 座標と角度がに変化がない場合は 300 ミリ秒の間通知を停止しますがそれ以外の場合は通知を行います |
+
+### 読み取りセンサーの ID missed 通知設定
+
+読み取りセンサーの [Position ID missed](id.md#position-id-missed) および [Standard ID missed](id.md#standard-id-missed) の通知感度を設定します。結果の取得方法は[読み取りセンサーの ID missed 通知設定の応答](#読み取りセンサーの-id-missed-通知設定の応答)を参照してください。
+
+| データ位置 | タイプ | 内容 | 例 |
+| ---------- | ------ | ---------- | -------------------------------------------------------------------------- |
+| 0 | UInt8 | 設定の種類 | `0x19`(読み取りセンサーの ID missed 通知設定) |
+| 1 | UInt8 | Reserved | `0x00` |
+| 2 | UInt8 | 通知感度 | `0x0A`(100 ミリ秒) |
+
+#### 通知感度
+
+キューブが Position ID や Standard ID が印刷されたものの上から取り除かれた時の通知感度を設定します。値の範囲と初期値は以下のとおりです。単位は 10 ミリ秒です。たとえば `5` を設定した場合は、キューブがマットやカードから取り除かれてから 50 ミリ秒後に missed が通知されます。取り除かれてから 50 ミリ秒以内に再びマットやカードの上に戻された場合は通知を行いません。
+
+| プロパティ | 値の範囲 | 初期値 |
+| ---------- | ------------------- | ---------------- |
+| 通知感度 | `0` 以上 `255` 以下 | `7`(70 ミリ秒) |
+
+### 磁気センサーの設定
+
+以下のデータを書き込むことで[磁気センサー](magnetic_sensor.md)の機能の有効化・無効化を設定します。デフォルトでは無効化されています。結果の取得方法は[磁気センサーの設定の応答](#磁気センサーの設定の応答)を参照してください。
+
+| データ位置 | タイプ | 内容 | 例 |
+| ---------- | ------ | ---------- | ----------------------------------------------------------- |
+| 0 | UInt8 | 設定の種類 | `0x1b`(磁気センサー機能の設定) |
+| 1 | UInt8 | Reserved | `0x00` |
+| 2 | UInt8 | 機能設定 | `0x01`(磁石の状態検出の有効化) |
+| 3 | UInt8 | 通知間隔 | `0x01`(20 ミリ秒) |
+| 4 | UInt8 | 通知条件 | `0x01`(変化時のみ通知) |
+
+設定値は以下のとおりです。
+磁石の状態検出と磁力の検出を同時に有効化することはできません。
+
+| 機能設定 | 意味 |
+| -------- | ---------------------- |
+| `0x00` | 無効化(初期値) |
+| `0x01` | 磁石の状態検出の有効化 |
+| `0x02` | 磁力の検出の有効化 |
+
+#### 通知間隔
+
+通知の間隔を設定します。単位は 20 ミリ秒です。`0` を設定した場合は通知無効となります。
+高精度位傾き情報の通知間隔設定とは単位が異なるので注意してください。
+
+| プロパティ | 値の範囲 |
+| ---------- | --------------------------------------- |
+| 通知間隔 | `0` 以上 `255` 以下(0 は通知無効設定) |
+
+#### 通知条件
+
+通知の条件を設定します。`0x00` を設定した場合は変化がなくても通知間隔に従い通知を行います。
+`0x01` を設定した場合は磁石の状態に変化があったときだけ通知を行います。ただし、変化が激しい場合でも上記の通知間隔設定より短い間隔で通知されることはありません。
+
+| 機能設定 | 意味 |
+| -------- | ------------------------ |
+| `0x00` | 変化がなくても通知 |
+| `0x01` | 変化があったときだけ通知 |
+
+### モーターの速度情報の取得の設定
+
+以下のデータを書き込むことで[モーター - モーターの速度情報の取得](motor.md#モーターの速度情報の取得)の有効化・無効化を設定します。デフォルトでは無効化されています。結果の取得方法は[モーターの速度情報の取得の設定の応答](#モーターの速度情報の取得の設定の応答)を参照してください。
+
+| データ位置 | タイプ | 内容 | 例 |
+| ---------- | ------ | ---------- | ------------------------------------------------------------- |
+| 0 | UInt8 | 設定の種類 | `0x1c`(モーターの速度取得の設定) |
+| 1 | UInt8 | Reserved | `0x00` |
+| 2 | UInt8 | 設定値 | `0x01`(有効化) |
+
+設定値は以下のとおりです。
+
+| 設定値 | 意味 |
+| ------ | ---------------- |
+| `0x00` | 無効化(初期値) |
+| `0x01` | 有効化 |
+
+### 姿勢角検出の設定
+
+以下のデータを書き込むことで[姿勢角検出](high_precision_tilt_sensor.md)機能の有効化・無効化を設定します。デフォルトでは無効化されています。結果の取得方法は[姿勢角検出設定の応答](#姿勢角検出の設定の応答)を参照してください。
+
+| データ位置 | タイプ | 内容 | 例 |
+| ---------- | ------ | -------------- | ----------------------------------------------------- |
+| 0 | UInt8 | 設定の種類 | `0x1d`(姿勢角検出の設定) |
+| 1 | UInt8 | Reserved | `0x00` |
+| 2 | UInt8 | 通知内容の種類 | `0x01`(オイラー角) |
+| 3 | UInt8 | 通知間隔 | `0x01`(10 ミリ秒) |
+| 4 | UInt8 | 通知条件 | `0x01`(変化時のみ通知) |
+
+通知内容の種類は以下のとおりです。
+
+| 通知内容の種類 | 意味 |
+| -------------- | ------------------------ |
+| `0x01` | オイラー角での通知 |
+| `0x02` | クォータニオンでの通知 |
+| `0x03` | 高精度オイラー角での通知 |
+
+#### 通知間隔
+
+通知の間隔を設定します。単位は 10 ミリ秒です。`0` を設定した場合は通知無効となります。
+磁気センサーの通知間隔設定とは単位が異なるので注意してください。
+
+| プロパティ | 値の範囲 |
+| ---------- | --------------------------------------- |
+| 通知間隔 | `0` 以上 `255` 以下(0 は通知無効設定) |
+
+#### 通知条件
+
+通知の条件を設定します。`0x00` を設定した場合は変化がなくても通知間隔に従い通知を行います。
+`0x01` を設定した場合は傾きの状態に変化があったときだけ通知を行います。ただし、変化が激しい場合でも上記の通知間隔設定より短い間隔で通知されることはありません。
+
+| 機能設定 | 意味 |
+| -------- | ------------------------ |
+| `0x00` | 変化がなくても通知 |
+| `0x01` | 変化があったときだけ通知 |
+
+### シリアライズ情報の通知設定
+
+以下のデータを書き込むことで[シリアライズ情報](serialized_information.md)機能の有効化・無効化を設定します。デフォルトでは無効化されています。結果の取得方法は[シリアライズ情報の通知設定の応答](#シリアライズ情報の通知設定の応答)を参照してください。
+
+| データ位置 | タイプ | 内容 | 例 |
+| ---------- | ------ | ---------- | --------------------------------------------------------------- |
+| 0 | UInt8 | 設定の種類 | `0x1e`(シリアライズ情報の通知設定) |
+| 1 | UInt8 | Reserved | `0x00` |
+| 2 | UInt8 | 通知間隔 | `0x01`(10 ミリ秒) |
+| 3 | UInt8 | 通知条件 | `0x01`(変化時のみ通知) |
+
+#### 通知間隔
+
+通知の間隔を設定します。単位は 10 ミリ秒です。`0` を設定した場合は通知無効となります。
+
+| プロパティ | 値の範囲 |
+| ---------- | --------------------------------------- |
+| 通知間隔 | `0` 以上 `255` 以下(0 は通知無効設定) |
+
+#### 通知条件
+
+通知の条件を設定します。`0x00` を設定した場合は変化がなくても通知間隔に従い通知を行います。
+`0x01` を設定した場合はシリアライズ情報に何らかの変化があったときだけ通知を行います。ただし、変化が激しい場合でも上記の通知間隔設定より短い間隔で通知されることはありません。
+
+| 機能設定 | 意味 |
+| -------- | ------------------------ |
+| `0x00` | 変化がなくても通知 |
+| `0x01` | 変化があったときだけ通知 |
+
+### コネクションインターバル変更要求
+
+以下のデータを書き込むことでキューブからセントラル側へコネクションインターバルの変更を要求します。
+セントラル側が変更要求に応じた場合にはコネクションインターバルは変更されます。
+
+:::note
+
+コネクションインターバル値はセントラル側が決定権を持っています。
+キューブ側から要求した値とは別の値になる場合や、変更されない場合があります。
+セントラル側が受け入れられない値を要求した場合には、セントラルはBLE接続を切断することがあります。
+
+:::
+| データ位置 | タイプ | 内容 | 例 |
+| ---------- | ------ | ---------- | --------------------------------------------------------------------- |
+| 0 | UInt8 | 設定の種類 | `0x30`(コネクションインターバル変更要求) |
+| 1 | UInt8 | Reserved | `0x00` |
+| 2 | UInt16 | min値 | `0x0008`(10 ミリ秒) |
+| 4 | UInt16 | max値 | `0x0050`(100 ミリ秒) |
+
+#### min値 / max値
+
+コネクションインターバルの最小時間と最大時間を設定します。
+指定可能な値はBLE規格により定められています。
+0xFFFF(要求なし)または 0x0006 ~ 0x0C80 の間の値が指定できます。
+コネクションインターバル時間は、指定値✕1.25 [ms] です。
+
+### コネクションインターバル要求値の取得
+
+以下のデータを書き込むことで[コネクションインターバル変更要求](#コネクションインターバル変更要求-)から設定した要求値を取得します。
+この値は実際のコネクションインターバル値ではありません。
+
+[コネクションインターバル変更要求](#コネクションインターバル変更要求-)を行っていない状態でコネクションインターバル要求値を取得した場合は
+min に 0x08(10ミリ秒)、max に 0x50(100ミリ秒)が取得できます。
+
+| データ位置 | タイプ | 内容 | 例 |
+| ---------- | ------ | ---------- | ------------------------------------------------------------------------- |
+| 0 | UInt8 | 設定の種類 | `0x31`(コネクションインターバル要求値の取得) |
+| 1 | UInt8 | Reserved | `0x00` |
+
+### 現在のコネクションインターバル値の取得
+
+以下のデータを書き込むことでキューブとセントラル間の実際のコネクションインターバル値を取得できます。
+この値と[コネクションインターバル変更要求](#コネクションインターバル変更要求-)で設定した要求値を比較することで
+コネクションインターバルが要求どおりに変更できたかを確認できます。
+
+| データ位置 | タイプ | 内容 | 例 |
+| ---------- | ------ | ---------- | --------------------------------------------------------------------------- |
+| 0 | UInt8 | 設定の種類 | `0x32`(現在のコネクションインターバル値の取得) |
+| 1 | UInt8 | Reserved | `0x00` |
+
+## 読み出し操作
+
+### BLE プロトコルバージョンの取得
+
+要求方法に関しては [BLE プロトコルバージョンの要求](#ble-プロトコルバージョンの要求)を参照してください。
+
+| データ位置 | タイプ | 内容 | 例 |
+| ---------- | ------ | ----------------------------------------- | ------------------------------------------------------------------- |
+| 0 | UInt8 | 設定の種類 | `0x81`(BLE プロトコルバージョンの取得) |
+| 1 | UInt8 | Reserved | `0x00` |
+| 2 | String | BLE プロトコルバージョン(5 bytes utf-8) | |
+
+### 読み取りセンサーの ID 通知設定の応答
+
+[読み取りセンサーの ID 通知設定の応答](#読み取りセンサーの-id-通知設定)を書き込むと結果に応じて以下の応答を行います。
+
+| データ位置 | タイプ | 内容 | 例 |
+| ---------- | ------ | ---------- | ------------------------------------------------------------------------- |
+| 0 | UInt8 | 設定の種類 | `0x98`(読み取りセンサーの ID 通知設定の応答) |
+| 1 | UInt8 | Reserved | `0x00` |
+| 2 | UInt8 | 結果の値 | `0x00`(設定成功) |
+
+結果の値の意味は以下のとおりです。
+
+| 結果の値 | 意味 |
+| ----------- | ------------ |
+| `0x00` | OK・設定成功 |
+| `0x00` 以外 | NG・設定失敗 |
+
+### 読み取りセンサーの ID missed 通知設定の応答
+
+[読み取りセンサーの ID missed 通知設定](#読み取りセンサーの-id-missed-通知設定)を書き込むと結果に応じて以下の応答を行います。
+
+| データ位置 | タイプ | 内容 | 例 |
+| ---------- | ------ | ---------- | -------------------------------------------------------------------------------- |
+| 0 | UInt8 | 設定の種類 | `0x99`(読み取りセンサーの ID missed 通知設定の応答) |
+| 1 | UInt8 | Reserved | `0x00` |
+| 2 | UInt8 | 結果の値 | `0x00`(設定成功) |
+
+結果の値の意味は以下のとおりです。
+
+| 結果の値 | 意味 |
+| ----------- | ------------ |
+| `0x00` | OK・設定成功 |
+| `0x00` 以外 | NG・設定失敗 |
+
+### 磁気センサーの設定の応答
+
+[磁気センサーの設定](#_磁気センサーの設定_)を書き込むと結果に応じて以下の応答を行います。
+
+| データ位置 | タイプ | 内容 | 例 |
+| ---------- | ------ | ---------- | ------------------------------------------------------------- |
+| 0 | UInt8 | 設定の種類 | `0x9b`(磁気センサーの設定の応答) |
+| 1 | UInt8 | Reserved | `0x00` |
+| 2 | UInt8 | 結果の値 | `0x00`(設定成功) |
+
+結果の値の意味は以下のとおりです。
+
+| 結果の値 | 意味 |
+| ----------- | ------------ |
+| `0x00` | OK・設定成功 |
+| `0x00` 以外 | NG・設定失敗 |
+
+### モーターの速度情報の取得の設定の応答
+
+[モーターの速度情報の取得の設定](#モーターの速度情報の取得の設定)を書き込むと結果に応じて以下の応答を行います。
+
+| データ位置 | タイプ | 内容 | 例 |
+| ---------- | ------ | ---------- | ------------------------------------------------------------------------- |
+| 0 | UInt8 | 設定の種類 | `0x9c`(モーターの速度情報の取得の設定の応答) |
+| 1 | UInt8 | Reserved | `0x00` |
+| 2 | UInt8 | 結果の値 | `0x00`(設定成功) |
+
+結果の値の意味は以下のとおりです。
+
+| 結果の値 | 意味 |
+| ----------- | ------------ |
+| `0x00` | OK・設定成功 |
+| `0x00` 以外 | NG・設定失敗 |
+
+### 姿勢角検出の設定の応答
+
+[姿勢角検出の設定](#姿勢角検出の設定)を書き込むと結果に応じて以下の応答を行います。
+
+| データ位置 | タイプ | 内容 | 例 |
+| ---------- | ------ | ---------- | ----------------------------------------------------------- |
+| 0 | UInt8 | 設定の種類 | `0x9d`(姿勢角検出の設定の応答) |
+| 1 | UInt8 | Reserved | `0x00` |
+| 2 | UInt8 | 結果の値 | `0x00`(設定成功) |
+
+結果の値の意味は以下のとおりです。
+
+| 結果の値 | 意味 |
+| ----------- | ------------ |
+| `0x00` | OK・設定成功 |
+| `0x00` 以外 | NG・設定失敗 |
+
+### シリアライズ情報の通知設定の応答
+
+[シリアライズ情報の通知設定](#シリアライズ情報の通知設定)を書き込むと結果に応じて以下の応答を行います。
+
+| データ位置 | タイプ | 内容 | 例 |
+| ---------- | ------ | ---------- | ----------------------------------------------------------------- |
+| 0 | UInt8 | 設定の種類 | `0x9e`シリアライズ情報の通知設定の応答 |
+| 1 | UInt8 | Reserved | `0x00` |
+| 2 | UInt8 | 結果の値 | `0x00`(設定成功) |
+
+結果の値の意味は以下のとおりです。
+
+| 結果の値 | 意味 |
+| ----------- | ------------ |
+| `0x00` | OK・設定成功 |
+| `0x00` 以外 | NG・設定失敗 |
+
+### コネクションインターバル変更要求の応答
+
+[コネクションインターバル変更要求](#コネクションインターバル変更要求-)を書き込むと結果に応じて以下の応答を行います。
+
+| データ位置 | タイプ | 内容 | 例 |
+| ---------- | ------ | ---------- | ----------------------------------------------------------------------- |
+| 0 | UInt8 | 設定の種類 | `0xb0`コネクションインターバル変更要求の応答 |
+| 1 | UInt8 | Reserved | `0x00` |
+| 2 | UInt8 | 結果の値 | `0x00`(設定成功) |
+
+結果の値の意味は以下のとおりです。
+
+| 結果の値 | 意味 |
+| ----------- | ------------ |
+| `0x00` | OK・設定成功 |
+| `0x00` 以外 | NG・設定失敗 |
+
+### コネクションインターバル要求値の取得の応答
+
+[コネクションインターバル要求値の取得](#コネクションインターバル要求値の取得-)を書き込むと以下の応答を行います。
+
+| データ位置 | タイプ | 内容 | 例 |
+| ---------- | ------ | ---------- | --------------------------------------------------------------------------- |
+| 0 | UInt8 | 設定の種類 | `0xb1`コネクションインターバル要求値の取得の応答 |
+| 1 | UInt8 | Reserved | `0x00` |
+| 2 | UInt16 | min値 | `0x0008`(10 ミリ秒) |
+| 4 | UInt16 | max値 | `0x0050`(100 ミリ秒) |
+
+### 現在のコネクションインターバル値の取得の応答
+
+[現在のコネクションインターバル値の取得](#現在のコネクションインターバル値の取得-)を書き込むと以下の応答を行います。
+
+| データ位置 | タイプ | 内容 | 例 |
+| ---------- | ------ | ---------- | ----------------------------------------------------------------------------- |
+| 0 | UInt8 | 設定の種類 | `0xb2`現在のコネクションインターバル値の取得の応答 |
+| 1 | UInt8 | Reserved | `0x00` |
+| 2 | UInt16 | min値 | `0x0008`(10 ミリ秒) |
+| 4 | UInt16 | max値 | `0x0050`(100 ミリ秒) |
+
+## 通知
+
+[読み出し操作](#読み出し操作)で得られるデータは通知でも受け取ることが出来ます。
diff --git a/website/versioned_docs/version-2.4.0/hardware_components.md b/website/versioned_docs/version-2.4.0/hardware_components.md
new file mode 100644
index 00000000..58517071
--- /dev/null
+++ b/website/versioned_docs/version-2.4.0/hardware_components.md
@@ -0,0 +1,18 @@
+---
+id: hardware_components
+title: "各部の名前"
+sidebar_label: "各部の名前"
+original_id: hardware_components
+---
+
+キューブの各部の名前とそれを使うための通信仕様を紹介します。
+
+![Core Cube Hardware Components](assets/hardware_components.svg)
+
+| 番号 | 名前 | 関連する機能・通信仕様 |
+| ---- | ------------------ | ---------------------------------------- |
+| 1 | タイヤ(右) | [モーター](motor.md) |
+| 2 | タイヤ(左) | [モーター](motor.md) |
+| 3 | 電源ボタン | - |
+| 4 | 読み取りセンサー | [読み取りセンサー](id.md) |
+| 5 | 機能ボタン/ランプ | [ボタン](button.md) / [ランプ](light.md) |
diff --git a/website/versioned_docs/version-2.4.0/hardware_magnet.md b/website/versioned_docs/version-2.4.0/hardware_magnet.md
new file mode 100644
index 00000000..3c23f14c
--- /dev/null
+++ b/website/versioned_docs/version-2.4.0/hardware_magnet.md
@@ -0,0 +1,58 @@
+---
+id: hardware_magnet
+title: '磁気センサー'
+sidebar_label: '磁気センサー'
+original_id: hardware_magnet
+---
+
+キューブの 3 軸磁気センサーを利用した機能として、「磁石の状態検出」と「磁力の検出」の 2 つの機能が利用できます。
+
+キューブのシステムソフトウェアバージョン v02.0004 (BLE プロトコルバージョン v2.2.0)から「磁石の状態検出」が利用できます。
+キューブのシステムソフトウェアバージョン v02.0005 (BLE プロトコルバージョン v2.3.0)から上記に加えて「磁力の検出」が利用できます。
+
+システムソフトウェアバージョンとアップデート方法については[はじめに-アップデートについて](how_to_update_cube.md)を参照してください。
+
+通信仕様については[通信仕様 - 磁気センサー](magnetic_sensor.md)を参照してください。
+
+:::caution
+
+- 強力な磁石の使用はキューブの正常な動作が妨げられたり、故障につながることがあります。ご注意ください。
+- 磁石の扱いに関しては、必ず磁石メーカーの取扱説明書をよく読んで利用上の注意を守り、知識を持った方が責任を持ってお取り扱いください。
+
+:::
+
+## 1. 磁石の状態検出
+
+あらかじめ決められた位置・磁力で配置された磁石により、6 パターンの状態が検出できます。
+磁束密度の検出には範囲があり、範囲の外では正しく検出されません。ご利用の磁石を用いて必ず実機・実環境であらかじめ試験の上ご利用ください。
+
+### 磁石の仕様
+
+磁石の仕様は以下のとおりです。
+
+![magnet specification](assets/hardware_magnet.svg)
+
+| 項目 | 内容 |
+| -------- | -------------------- |
+| サイズ | 4 x 4 x 2 [mm] |
+| 材質 | ネオジム焼結磁石 N40 |
+| 着磁方向 | 2mm 厚方向 |
+
+### 磁石のレイアウト仕様
+
+磁石位置・着磁方向に応じて下図の 6 パターンを検出できます。
+
+![magnet layout specification](assets/hardware_magnet_layout.svg)
+
+## 2. 磁力の検出
+
+磁力の強さと向きを検出できます。
+
+磁力の強さは、磁石の極性とは関係なく常に正の値で表されます。
+
+磁力の向きは、キューブを通過する磁力線の向きを、3 次元ベクトルとして X,Y,Z の成分で表したものです。
+この 3 次元ベクトルの長さは、磁力の強さに関わらずほぼ一定(およそ 10)です。
+
+キューブの座標系は下図で、矢印方向が正の向きとなります。
+
+![magnet coordinate system](assets/magnet_coordinate_system.svg)
diff --git a/website/versioned_docs/version-2.4.0/hardware_other.md b/website/versioned_docs/version-2.4.0/hardware_other.md
new file mode 100644
index 00000000..94e3ae19
--- /dev/null
+++ b/website/versioned_docs/version-2.4.0/hardware_other.md
@@ -0,0 +1,49 @@
+---
+id: hardware_other
+title: '各種性能'
+sidebar_label: '各種性能'
+original_id: hardware_other
+---
+
+## 速度
+
+キューブに何も載せない状態での水平面における最高速度は以下のとおりです。
+
+| 状態 | 速度 |
+| ---- | ------------------- |
+| 直進 | 350 ミリメートル/秒 |
+| 回転 | 1500 度/秒 |
+
+## 積載重量
+
+最大積載重量は 200 グラムです。ただし、200 グラム以下であっても重心バランスによっては正しく走行しないことがあります。
+
+## バッテリー性能
+
+| 項目 | 内容 |
+| -------- | ------------------ |
+| 種類 | リチウムイオン電池 |
+| 公称電圧 | 3.7 V |
+| 公称容量 | 260 mAh |
+
+## 充電用端子
+
+### 端子の極性
+
+![充電用端子の極性](assets/hardware_other_polarity.svg)
+
+長い方のピンがGNDです。
+
+### 入力電圧 / 入力電流
+
+| 項目 | 内容 |
+| -------- | ------ |
+| 入力電圧 | DC 5 V |
+| 入力電流 | 0.3 A |
+
+### 対応レセプタクルコネクタ
+
+| 項目 | 内容 |
+| ---------- | ------------------------------- |
+| メーカー名 | Foxconn Interconnect Technology |
+| 型番 | BBRC2H1-B9603-7H |
diff --git a/website/versioned_docs/version-2.4.0/hardware_shape.mdx b/website/versioned_docs/version-2.4.0/hardware_shape.mdx
new file mode 100644
index 00000000..53548f17
--- /dev/null
+++ b/website/versioned_docs/version-2.4.0/hardware_shape.mdx
@@ -0,0 +1,46 @@
+---
+id: hardware_shape
+title: '形状・サイズ'
+sidebar_label: '形状・サイズ'
+original_id: hardware_shape
+---
+
+キューブの形状およびサイズについて紹介します。単位は全てミリメートルです。
+
+## 3D データ
+
+キューブの外形形状は以下よりダウンロード可能です。
+
+import { ModelDownloadButtonGroup } from '@site/src/components/ModelDownloadButtonGroup'
+
+
+
+import { Cube3DView } from '@site/src/components/Cube3DView'
+
+