BluFi 設定ガイド

このドキュメントでは、小智ファームウェアで BluFi(BLE による Wi-Fi 設定)を有効にして使う方法を説明します。Wi-Fi の接続と認証情報の保存は、リポジトリに含まれる esp-wifi-connect コンポーネントが担当します。プロトコルの詳細は Espressif 公式の BluFi ドキュメントを参照してください。

前提条件

  • BLE に対応したチップとファームウェア構成であること。
  • idf.py menuconfig で WiFi Configuration Method -> ESP-BluFi(CONFIG_USE_ESP_BLUFI_WIFI_PROVISIONING=y)を有効にします。BluFi を使う場合は、同じメニューの Hotspot を無効にしてください。無効にしないと、既定でホットスポット設定が優先されます。
  • プロジェクトの app_main が行う既定の NVS とイベントループの初期化はそのまま残してください。
  • CONFIG_BT_BLUEDROID_ENABLED と CONFIG_BT_NIMBLE_ENABLED は排他的で、どちらか一方だけを選びます。

動作の流れ

  1. スマートフォン(公式の EspBlufi アプリまたは他の BluFi クライアント)が BLE でデバイスに接続し、接続先 Wi-Fi の SSID とパスワードを送ります。BluFi プロトコルを使って、デバイスがスキャンした Wi-Fi の一覧を要求することもできます。
  2. ESP_BLUFI_EVENT_REQ_CONNECT_TO_AP で、デバイスが認証情報を SsidManager に保存します(esp-wifi-connect コンポーネントが NVS に永続化します)。
  3. 続いてデバイスが WifiStation を起動してスキャンと接続を行い、進行状況を BluFi 経由で返します。
  4. 設定に成功すると、デバイスは新しい Wi-Fi に自動で接続します。失敗した場合はエラー状態を返します。

手順

  1. 設定:menuconfig で ESP-BluFi を有効にし、ファームウェアをビルドして書き込みます。
  2. 設定の開始:保存済みの Wi-Fi 情報がない状態で初めて起動すると、デバイスは自動的に設定モードに入ります。
  3. スマートフォン側:EspBlufi アプリ(または他の BluFi クライアント)を開き、デバイスをスキャンして接続します。必要に応じて暗号化を有効にし、Wi-Fi の SSID とパスワードを入力して送信します。
  4. 結果の確認:
    • 成功:BluFi が成功を通知し、デバイスが Wi-Fi に接続します。
    • 失敗:BluFi が失敗を通知します。再試行するか、ルーターを確認してください。

注意事項

  • BluFi はホットスポット設定と同時には使えません。ホットスポット設定が有効なままだと、デバイスはそちらを使います。menuconfig では設定方式を 1 つだけ残してください。
  • 繰り返しテストするときは、保存済みの SSID(NVS の wifi 名前空間)を消去するか上書きして、古い認証情報が次の試験に影響しないようにしてください。
  • 独自の BluFi クライアントを作る場合は、上記の公式ドキュメントにあるプロトコルのフレーム形式に従ってください。
  • EspBlufi アプリのダウンロードリンクは公式ドキュメントに掲載されています。
  • デバイスは Bluetooth 名 Xiaozhi-Blufi をアドバタイズします(ESP_BLUFI_EVENT_INIT_FINISH で設定)。ESP-IDF 5.5.1 でビルドされた旧ファームウェアは BLUFI_DEVICE を使っていました。現在のファームウェアには ESP-IDF v6.0.1 以降が必要です。

出典:78/xiaozhi-esp32 の docs/blufi.md