> For the complete documentation index, see [llms.txt](https://taiphoon-com.gitbook.io/taiphoon.com-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://taiphoon-com.gitbook.io/taiphoon.com-docs/ja/firmware/px4/flash-firmware.md).

# ファームウェアの書き込み

Morakot の出荷時のファームウェアは ArduPilot です。PX4 に切り替える場合は、まず STM32CubeProgrammer で USB DFU を介してチップ全体を消去して PX4 bootloader を書き込み、次に QGroundControl（QGC）で PX4 ファームウェアを書き込みます。

## 始める前に

* フライトコントローラーのモデルとハードウェアバージョンを添えて <service@taiphoon.com.tw> までメールでお問い合わせいただき、Morakot 用の PX4 bootloader（`.bin`）と PX4 ファームウェア（`.px4`）のファイルを入手します。
* [ST 公式ウェブサイト](https://www.st.com/en/development-tools/stm32cubeprog.html)から STM32CubeProgrammer をダウンロードしてインストールします。
* [QGroundControl ダウンロードページ](https://docs.qgroundcontrol.com/master/en/qgc-user-guide/getting_started/download_and_install.html)から QGroundControl をダウンロードしてインストールします。
* データ転送に対応した USB ケーブルを使用し、USB ハブを介さずにパソコンの USB ポートに直接接続します。

{% hint style="warning" %}
まずプロペラを取り外してください。チップ全体を消去すると、bootloader と元の ArduPilot ファームウェアを含め、フライトコントローラーのフラッシュメモリ内のすべての内容が消去されます。書き込み中は USB 接続を維持し、プログラムが完了するまで待ってください。
{% endhint %}

{% hint style="info" %}
本ページの画面は STM32CubeProgrammer 2.20.0 と QGroundControl Daily v5.2.0-dev を使用しています。その他のバージョンではメニュー名が異なる場合があります。
{% endhint %}

## 1. DFU で PX4 bootloader を書き込む

{% stepper %}
{% step %}

### DFU モードに入る

まず USB を抜き、フライトコントローラーの Boot ボタンを押したまま USB ケーブルを差し込んで、フライトコントローラーを DFU モードにします。Windows のデバイスマネージャーの「ユニバーサル シリアル バス デバイス」の下に DFU デバイスが表示されます。名称は **DFU in FS Mode** または **STM32 BOOTLOADER** と表示される場合があります。

<figure><img src="https://content.gitbook.com/content/Cz4IZEBqCk5SBHtJan7e/blobs/k5JZU77futAun0KtxTdV/px4-dfu-01-device-manager.png" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}

### USB でフライトコントローラーに接続する

STM32CubeProgrammer を起動し、右側の接続インターフェースで **USB** を選択します。**Port** 欄にデバイス（例：`USB1`）が表示されていることを確認してから、**Connect** を押します。接続後、右上に **Connected** と表示されます。

<figure><img src="https://content.gitbook.com/content/Cz4IZEBqCk5SBHtJan7e/blobs/hkRwrWdVFMq1lB3zSohJ/px4-dfu-02-usb-port.png" alt=""><figcaption></figcaption></figure>

<figure><img src="https://content.gitbook.com/content/Cz4IZEBqCk5SBHtJan7e/blobs/TUKTuX7x8vc7GZrIN0IT/px4-dfu-03-connected.png" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}

### チップ全体を消去する

左側の 2 番目のアイコンをクリックして **Erasing & Programming** ページに切り替え、**Erase flash memory** タブで **Full chip erase** を押します。確認ウィンドウ（Are you sure you want to erase full chip flash memory?）で **OK** を押し、`Mass erase command correctly executed.` と表示されるまで待ってから **OK** を押します。

<figure><img src="https://content.gitbook.com/content/Cz4IZEBqCk5SBHtJan7e/blobs/wCZG8WpamtJlzP9XkFXP/px4-dfu-04-erasing-programming.png" alt=""><figcaption></figcaption></figure>

<figure><img src="https://content.gitbook.com/content/Cz4IZEBqCk5SBHtJan7e/blobs/GLBRH4HFsxufuKuoG7Jz/px4-dfu-05-full-chip-erase-confirm.png" alt=""><figcaption></figcaption></figure>

<figure><img src="https://content.gitbook.com/content/Cz4IZEBqCk5SBHtJan7e/blobs/HAepBPiCl0dLOR5tgUDQ/px4-dfu-06-full-chip-erase-complete.png" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}

### bootloader ファイルを開く

左側の 1 番目のアイコンをクリックして **Memory & File editing** ページに戻り、タブバーの **+** を押して **Open file** を選択し、bootloader ファイル（例：`morakot_v6_bootloader.bin`）を選択して **開く** を押します。

<figure><img src="https://content.gitbook.com/content/Cz4IZEBqCk5SBHtJan7e/blobs/6S0og2imEgNuwBj1Ctwn/px4-dfu-07-open-file-menu.png" alt=""><figcaption></figcaption></figure>

<figure><img src="https://content.gitbook.com/content/Cz4IZEBqCk5SBHtJan7e/blobs/361xmm35B3JONLBc9fty/px4-dfu-08-open-bootloader.png" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}

### bootloader を書き込む

新しいタブに bootloader のファイル名が表示されていることを確認し、**Download** を押します。Log に書き込みアドレス `Address : 0x08000000` と書き込みの進捗が表示されます。

<figure><img src="https://content.gitbook.com/content/Cz4IZEBqCk5SBHtJan7e/blobs/he80HMkWBpKqypJTLy5c/px4-dfu-09-bootloader-loaded.png" alt=""><figcaption></figcaption></figure>

<figure><img src="https://content.gitbook.com/content/Cz4IZEBqCk5SBHtJan7e/blobs/lexGBqLm5gnjKiQCuwOn/px4-dfu-10-download-progress.png" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}

### 書き込みを完了する

**File download complete** と表示されたら **OK** を押します。**Disconnect** を押して接続を終了し、USB を抜きます。

<figure><img src="https://content.gitbook.com/content/Cz4IZEBqCk5SBHtJan7e/blobs/NRljTvIdCqJfwh12cOtf/px4-dfu-11-download-complete.png" alt=""><figcaption></figcaption></figure>
{% endstep %}
{% endstepper %}

## 2. QGroundControl で PX4 ファームウェアを書き込む

動画デモ：QGroundControl による PX4 ファームウェアの書き込み。ファームウェアファイルを選択するウィンドウは動画に収録されていないため、下記のステップ 4 のスクリーンショットを参照してください。

{% embed url="<https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FmvFqg0h5Ob1pRXspm7Yi%2Fuploads%2FP9EpkO7yN0aQYShpLYTF%2Fpx4-qgc-flash-firmware.mp4?alt=media&token=d93a7240-46b7-4e2c-ba5f-7e267bc524af>" %}

{% stepper %}
{% step %}

### Firmware ページを開く

QGC を起動し、左上の Q アイコンを押して **Configure** を選択し、左側の **Firmware** をクリックします。

<figure><img src="https://content.gitbook.com/content/Cz4IZEBqCk5SBHtJan7e/blobs/UiceO3zI9RvjGxUaK0ic/px4-qgc-01-q-menu.png" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}

### フライトコントローラーを接続して書き込みを開始する

USB でフライトコントローラーを接続し、ドロップダウンメニューにデバイスが表示されたら **Flash** を押します。

<figure><img src="https://content.gitbook.com/content/Cz4IZEBqCk5SBHtJan7e/blobs/Q2xJ9dxgeT2VFcVt2K3o/px4-qgc-02-device-selected.png" alt=""><figcaption></figcaption></figure>

画面に `Now unplug your device and plug it back in to enter bootloader mode.` と表示されたら、USB を抜いて再び差し込みます。

<figure><img src="https://content.gitbook.com/content/Cz4IZEBqCk5SBHtJan7e/blobs/Gayp9TlvMqFh5Bh1s0yu/px4-qgc-03-replug.png" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}

### カスタムファームウェアファイルを選択する

**Firmware Setup** ウィンドウが表示されたら、**PX4 Pro** を選択し、**Advanced settings** にチェックを入れ、バージョンのドロップダウンメニューで **Custom firmware file...** を選択してから **Ok** を押します。

<figure><img src="https://content.gitbook.com/content/Cz4IZEBqCk5SBHtJan7e/blobs/2F77QaJoZ6gBxuKusXKo/px4-qgc-04-firmware-setup.png" alt=""><figcaption></figcaption></figure>

<figure><img src="https://content.gitbook.com/content/Cz4IZEBqCk5SBHtJan7e/blobs/FLWYJsXFIq5cUs6ml3Td/px4-qgc-05-custom-firmware.png" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}

### PX4 ファームウェアファイルを選択する

**Select Firmware File** ウィンドウで `.px4` ファームウェアファイルを選択し、**開く** を押します。

<figure><img src="https://content.gitbook.com/content/Cz4IZEBqCk5SBHtJan7e/blobs/7jfGHl4vE5lMTsf7nfAa/px4-qgc-06-select-px4-file.png" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}

### 書き込みの完了を待つ

QGC には以下が順に表示されます。書き込み中は USB を抜かないでください。

1. `Erasing previous program...`
2. `Programming new version...`
3. `Verifying program...`
4. `Rebooting board`
5. **Upgrade complete** と表示されたら完了です。

<figure><img src="https://content.gitbook.com/content/Cz4IZEBqCk5SBHtJan7e/blobs/j5AKTpaM3KoUr86w6wXH/px4-qgc-07-flashing.png" alt=""><figcaption></figcaption></figure>

<figure><img src="https://content.gitbook.com/content/Cz4IZEBqCk5SBHtJan7e/blobs/xLygGs6cjXmA2n86fhKZ/px4-qgc-08-upgrade-complete.png" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}

### ファームウェアバージョンを確認する

フライトコントローラーが再起動して QGC に接続されたら、**Summary** で **Firmware Version** を確認します。

<figure><img src="https://content.gitbook.com/content/Cz4IZEBqCk5SBHtJan7e/blobs/UGadDrRwW1VHmc23o0U4/px4-qgc-09-summary.png" alt=""><figcaption></figcaption></figure>
{% endstep %}
{% endstepper %}

{% hint style="info" %}

* `Error: Open failed on port ...` または `Upgrade cancelled` と表示された場合は、QGC の指示に従ってフライトコントローラーをパソコンの USB ポートに直接接続し（USB ハブを介さない）、バッテリーを接続せずに USB 給電のみで、再度書き込みを行ってください。
* 書き込みまたは再起動の後、QGC に `Disconnected` と表示されたままの場合は、QGC を閉じてから再度起動してください。
  {% endhint %}

## 次の設定

[初回設定](/taiphoon.com-docs/ja/firmware/px4/first-setup.md)に進みます。
