モダン スタンバイ プラットフォームに対する Bluetooth の電源管理

Bluetooth 無線デバイスを使用すると、PC と入力デバイス、オーディオ デバイス、または Bluetooth で接続されたその他のユーザー周辺機器間で近距離 RF 通信を行うことができます。 モダン スタンバイ PC では、この記事に示されているガイドラインに従って、このデバイスの電源状態を Bluetooth 無線用のドライバーで管理する必要があります。

Bluetooth ラジオ

Windows システムでは、Bluetooth 無線デバイスの電源状態を管理する方法は、無線が接続されているバスによって異なります。 モダン スタンバイ電源モデルがサポートされているハードウェア プラットフォームでは、ART またはユニバーサル シリアル バス (USB) に接続されている Bluetooth 無線が Windows でサポートされています (理論的には、Windows 8 で導入された Bluetooth トランスポート バス ドライバー モデルで基になる通信バスがサポートされている必要があります。 現在、Microsoft では、UART または USB に接続されている Bluetooth 無線、または System on a Chip (SoC) に統合されている Bluetooth 無線の場合にのみ、モダン スタンバイの互換性が検証されます。

一般的な Windows ドライバー スタックと同様に、Bluetooth 無線の電源ポリシーは、単一の電源ポリシー所有者 (PPO) (具体的には BthPort (bthport.sys)) によって管理されます。 BthPort は、適切に無線が目的の電源状態に入るように、対応するトランスポート固有のドライバー (UART または USB) と組み合わせて動作します。 USB の場合は、USB ホスト コントローラー経由で USB セレクティブ サスペンドを使用して実行されます。 UART の場合は、ベンダーから提供された追加のトランスポート バス ドライバーでシステム固有のバス接続経由で、BthPort から Bluetooth 無線デバイスへの要求が調整されます。 ハードウェアを制御するために、ドライバーではインバンド バス通信、電源エンジン プラグイン (PEP) との調整、GPIO ピンによるアウトバンド信号を組み合わせて使用されます。

通常、Bluetooth 無線デバイスでは、複数の低電力モードがサポートされています。その一部は、デバイス自体に独自のモードである場合もあります。 Windows の Bluetooth ドライバー スタックでは、次の 3 つのデバイス電源状態が Bluetooth 無線でサポートされている必要があります。

  • アクティブ (D0)
  • スリープ (D2)
  • オフ (D3)

Bluetooth 無線のデバイス電源管理は、すべてのシステム電源状態にわたって一貫性のある方法で動作する必要があります。 システムがモダン スタンバイに入っても、Bluetooth 無線は特別な電源管理モードに入りません。 代わりに、Bluetooth 無線は、BthPort で管理されるアイドル タイムアウトに基づいてスリープ (D2) 状態間で切り替わります。 Bluetooth 接続されている HID 入力デバイスでモダン スタンバイからのスリープ解除がサポートされるように、無線はスリープ (D2) 状態のままで、スリープ解除に使用されます。 モダン スタンバイ時は、ペアリングされた Bluetooth HID デバイスでのみシステムをスリープ解除できます。 デバイスが RF 経由で接続されていない場合は、スリープ (D2) 状態の Bluetooth 無線の電力消費が非常に—少ない 1 ミリワット未満— と想定されています。 電力消費は、関連付けられたデバイスの数、それらのデバイスの種類、アクティビティのパターンによって異なる可能性があります。

また、Bluetooth 無線では、無線管理ユーザー インターフェイスを使用して無線をオフにする機能もサポートされている必要があります。 このユーザー インターフェイス制御は、Windows に組み込まれています。 このユーザー インターフェイスを使用して Bluetooth 無線がオフになると、無線がオフ (D3) 電源状態に切り替わります。この状態では、電力消費がほぼゼロ ワットになると想定されています。

以前のバージョンの Windows (Windows 8 RT や Windows 8 RT など) では、Bluetooth デバイスのベンダーが無線制御 DLL を提供する必要があります。 ただし、Windows 8.1 と Windows RT 8.1 以降では、モダン スタンバイ プラットフォームのすべての Bluetooth 無線で Bluetooth コア仕様バージョン 4.0 がサポートされている必要があります。 そのため、ベンダーは無線のオン/オフ制御関数を実装するために、ソフトウェア DLL を提供する必要がなくなりました。 この関数は Windows で処理されるようになり、このような DLL は存在する場合でも無視されます。

電源管理モード

ソフトウェアの観点から見ると、Bluetooth 無線では、無線接続されているバスに関係なく、3 つの電源管理モードがサポートされています。 Windows の Bluetooth ドライバーには、3 つのモードが定義され、これらのモード間の切り替えが管理されます。 次の表では、3 つの Bluetooth 無線電源モードについて説明します。

モード 説明 デバイスの電源状態 (Dx) 平均電力消費量 アクティブまでの終了待機時間 切り替えメカニズム

アクティブ

Bluetooth 無線は、オペレーティング システム上のアプリケーションの代わりに、関連付けられたデバイスとアクティブに通信しています。

D0

シナリオと関連けられたデバイスによって異なります。

該当なし

該当なし

スリープ (ほとんどが低速デューティ サイクルでアイドル状態)

Bluetooth 無線は低電力状態です。 システムはリモート Bluetooth デバイスとペアリングされていますが、両者間に接続はありません。 つまり、デバイスは切断されています。 ペアリングされたデバイスから新しいデータが到着するときに、Bluetooth コントローラーで (無線が統合されていない場合は SoC への) スリープ解除信号を生成できる必要があります。

または、Bluetooth 無線に関連付けがありません。

または、Bluetooth 無線にアイドル (データの送受信なし) 状態のアクティブな接続があり、リンクがスニッフ モードになっています。

D2

< 4 ミリワット

< 100 ミリ秒

Windows の Bluetooth ドライバーでは、D2 電源 IRP を使用して D2 の切り替えが開始されます。

Windows の Bluetooth ドライバーでは、基になるトランスポート バス ドライバーで保留中の待機スリープ解除 IRP が開始されます。 Bluetooth デバイスが USB 経由で接続されている場合、この状態はセレクティブ サスペンドと同等です (Bluetooth セレクティブ サスペンドを行うには、USB デバイス記述子でデバイスにリモート スリープ解除対応と自己供給のマークを付ける必要があります)。

"オフ"

Bluetooth 無線が完全にオフ (ゼロ ワット) であるか、無線状態が保持されない低電力状態になっています。 Bluetooth 無線では、この状態で SoC へのスリープ解除信号を生成できません。 また、Bluetooth 無線では無線信号を出力または受信できません。—すべての RF コンポーネントの電源がオフになります。

D3

0 ワット

< 2 秒

Windows の Bluetooth ドライバーでは、D3 電源 IRP を使用して D3 の切り替えが開始されます。

トランスポート バス ドライバーまたはシステム ACPI ファームウェアでは、電源を削除したり、GPIO ラインを切り替えて Bluetooth 無線ハードウェアをオフ (D3) 状態に切り替えたりする場合があります。

また、Bluetooth 無線では、ユーザーからの要求に応答して、ソフトウェアで無線送信機の電源をオフにできる関連付けられたモードもサポートされています。 Bluetooth デバイスで無線を有効にすると、そのデバイスがアクティブ (D0) 状態またはスリープ (D2) 状態になります。 Windows では、ユーザーが Bluetooth デバイスの無線を無効にすると、プロトコル ドライバーとその子を予期せずに削除し、無線デバイス スタックをオフ (D3) 状態に切り替えることで、Bluetooth アクティビティが停止されます。

ソフトウェア電源管理のメカニズム

Bluetooth 無線デバイスの電源管理は、BthPort で電源ポリシー所有者 (PPO) として開始されるデバイス Dx 状態を切り替えることで実行されます。 PPO は、デバイスがアクティブ (D0) 状態、スリープ (D2) 状態、オフ (D3) 状態が切り替わるタイミングを決定します。

Windows では、無線に関連付けられたデバイスがない場合に、デバイスが D2 に切り替わり、ユーザーがペアリング プロセスを開始するまで、その状態が保持されます。 無線が 1 つ以上のデバイスに関連付けられている場合は、Windows の Bluetooth ドライバーではアイドル タイムアウトを使用して、Bluetooth 無線が D0 から D2 に切り替わるタイミングが決定されます。 このアルゴリズムでは、オペレーティング システムとアプリケーションによる Bluetooth の使用状況パターンを使用して、無線が D2 状態に切り替わる条件が決定されます。 たとえば、Bluetooth 無線に他のアクティビティがない場合は、Bluetooth キーボードで最後にキーを押した数秒後に無線が D2 に切り替わります。

Windows の Bluetooth ドライバーでは、次のいずれかに応答してデバイスが D0 に切り替わります。

  • ユーザーがペアリング プロセスを開始する。
  • アプリケーションから Bluetooth 機能の使用が要求される。
  • 関連付けられたデバイスからの入力に基づいて、Bluetooth 無線でスリープ解除要求が生成される。

他のデバイスとは異なり、Bluetooth 無線は、モダン スタンバイ (システム ディスプレイがオフ) 時に、システムが通常動作し、ディスプレイがオンのときと同じ電源管理パターンに従います。 その理由は、Bluetooth 無線では、モダン スタンバイ時にいつでも関連付けられたデバイスから入力が受信されると、SoC をスリープ解除できると想定されているためです。 たとえば、ユーザーが Windows コンピューターに Bluetooth キーボードを関連付けた場合は、キーボードの任意のキーを押すと、コンピューターがモダン スタンバイからスリープ解除され、ディスプレイがオンになります。

デバイスが無線に関連付けられていない場合は、無線がスリープ (D2) 状態になると、電力消費が 1 ミリワット未満になるように構成されると想定されています。

Bluetooth 無線がオフ (D3) 状態になると、電力消費がほぼ 0 になると想定されています。

ドライバーの実装に関する注意事項

Bluetooth 無線が UART 経由で接続されている場合、または SoC 自体に統合されている場合は、Bluetooth デバイスのベンダーがトランスポート バス ドライバーを実装して提供する必要があります。 トランスポート バス ドライバーの役割は、次のとおりです。

  • Windows の Bluetooth ドライバー (Bthmini.sys) からの Bluetooth HCI パケット要求を、トランスポート バス経由で Bluetooth 無線に送信されるコマンドに変換する。
  • Bluetooth 無線デバイスを、アクティブ (D0)、スリープ (D2)、オフ (D3) のデバイス電源状態にマップするさまざまな電源管理モードに切り替える。 ドライバーには、電源管理イベントを処理するルーチンも実装されています。
  • デバイスで入力が生成されると、SoC をスリープ解除するように Bluetooth 無線を構成し、オプションの GPIO ラインの状態を SoC から電源管理に使用される Bluetooth 無線に変更する。
  • Bluetooth 無線と同じバスを共有する他のデバイス (FM 送信器や GPS デバイスなど) を列挙する。 他のデバイスが共有バスに物理的に接続されているが、オペレーティング システムに公開されていない場合は、トランスポート バス ドライバーで、これらのデバイスの電源を完全にオフする必要があります。

トランスポート バス ドライバーの実装の詳細については、Bluetooth 電源管理処理用トランスポート バス ドライバーのガイドラインを参照してください。 トランスポート バス ドライバーは、Windows Driver Framework (WDF) を使用して作成する必要があります。 サンプル ドライバーは、Bluetooth シリアル HCI バス ドライバーで入手できます。

Bluetooth 無線の電源管理を有効にするには、トランスポート バス ドライバーで次の操作を実行する必要があります。

  • 実行時アイドル状態の電源管理を有効にし、アクティブ (D0)、スリープ (D2)、オフ (D3) のデバイス電源状態のサポートを公開します。
  • Windows の Bluetooth ドライバーに、Bluetooth 無線デバイスが D2 状態からのスリープ解除信号送信イベントに対応していることを示します。
  • Bluetooth 無線デバイスでの SoC のスリープ解除の実装と、Bluetooth 無線デバイスから SoC へのスリープ解除信号の実装解除をサポートします。 このサポートでは、1 回以上の GPIO 割り込みを処理し、WDF 内でスリープ解除メソッドを実行する必要がある場合があります。
  • デバイスの状態がアクティブ (D0)、スリープ (D2)、オフ (D3) 間で切り替わるときに、オプションの GPIO ラインの状態を SoC から Bluetooth 無線デバイスに変更します。

Bluetooth 無線が SoC 自体に統合されている場合は、トランスポート バス ドライバーで Windows 電源管理フレームワークに登録すると、Bluetooth 無線の電源状態が SoC 固有の電源エンジン プラグイン (PEP) と通信できます。 これを行うには、WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS 構造体の IdleTimeoutType メンバーを SystemManagedIdleTimeout 値に設定します。

Bluetooth ラジオが USB 経由で接続されている場合は、Windows の組み込み USB Bluetooth ドライバー スタックを使用する必要があります。 このスタックで、すべての電源管理操作が処理されます。

無線管理

Bluetooth 無線送信機の状態は、デバイスの電源状態に直接関連付けられます。 無線送信装置がアクティブ (D0) またはスリープ (D2) の電源状態になると、無線送信装置はオンになると想定されています。 無線送信装置がオフ (D3) 状態に切り替わったら、無線送信装置をオフにする必要があります。

Windows では、ユーザーが Bluetooth 無線をオフにすると、保留中の I/O 操作を取り消し、プロトコル ドライバーとその子をアンロードすることで、Bluetooth アクティビティが終了します。 その後、Windows の Bluetooth ドライバー スタックからコントローラーに HCI_Reset コマンドが発行され、無線が既定の状態にリセットされます。 既定の状態では、コントローラーで無線信号を送受信できない必要があります。 最後に、コントローラーがオフ (D3) 状態に切り替わります。

トランスポート バス ドライバーでは、オフ (D3) への切り替えに応答して、デバイス固有の方法を使用して Bluetooth デバイスの電源を最低電力状態にする必要があります。 一般的な実装では、GPIO ラインの状態が SoC から Bluetooth 無線に変更され、Bluetooth モジュールの電源が無効になります。 別の実装では、ACPI ファームウェアで _PS0 制御メソッドと _PS3 制御メソッドを使用して、Bluetooth モジュールから電源を削除する必要があります。

Windows では、ユーザーが Bluetooth 無線をオンにすると、無線がアクティブ (D0) 状態に切り替わり、無線が再初期化されてから、子プロトコル ドライバーが再列挙されます。 無線がアクティブ (D0) に切り替わったら、Bluetooth 無線の通常の D0 シーケンスの一環として、必要な GPIO ラインを切り替える必要があります。 ACPI ファームウェアを使用して無線の電源をオフにした場合は、_PS0 制御メソッドを使用して電源を復元する必要があります。

この通常のシーケンスの一環として、トランスポート バス ドライバーで Bluetooth 無線の ContainerId を特定の GUID 値 {00000000-0000-000-ffff-ffffffffffff} に設定することで、デバイスに内部接続デバイスのマークを付ける必要があります。 これにより、Windows 無線ユーザー インターフェイス要素で、トランスポート バス ドライバーで公開された Bluetooth 無線がコンピューターに内部接続され、無線制御が適切ではない無線に外部接続されていないことを検出できます。

サポートされているハードウェア電源の構成

無線の電源管理ハードウェア構成は、Bluetooth バスによって異なります。 一般に、すべての Bluetooth 無線では、次のハードウェア電源管理機能が共通していると想定されています。

  • ユーザーの要求に応じて無線をオフにする手段としてのオフ (D3) 状態のサポート。 無線をオフにすると、Bluetooth 無線がほぼゼロ ワットの低電力状態になります。
  • 関連付けられたデバイスへの接続が保持されるが、アクティブな転送がない低電力スリープ (D2) 状態に入るメカニズム。
  • 関連付けられたデバイスに SoC のデータがあり、その SoC が低電力状態であり、Bluetooth 無線デバイスが接続されているバスが現在アクティブではない場合に、スリープ解除割り込みを生成するメカニズム。

Bluetooth 無線デバイスでサポートされている各バス (USB、UART、SoC への統合) では、上記の一覧の基本的な 3 つのハードウェア電源管理機能がすべてサポートされています。 さらに、各 Bluetooth 無線ではベンダー固有またはデバイス固有の電源管理機能も使用できますが、これらの機能は本トピックの範囲外です。

Bluetooth 無線のベンダーは、ハードウェアで自律的であり、Windows システムでベンダーから提供された追加のドライバー ソフトウェアを必要としない方法で、付加価値のある電源管理機能を実装することをお勧めします。 また、Bluetooth 無線ベンダーは、デバイス ドライバー コードやドライバー .inf ファイルではなく、システム ACPI ファームウェアにプラットフォーム固有の相違点を抽象化する方法で、ドライバーとその電源管理ソフトウェアを実装することもお勧めします。 このアプローチでは、ドライバー ソース、バイナリ、または署名付きインストール パッケージを更新せずに、Bluetooth デバイス用の 1 つのドライバー パッケージを追加のプラットフォームで再使用できます。

SoC 外部から UART 経由で接続されている Bluetooth 無線

Bluetooth 無線が UART 経由で接続され、SoC の外部に物理的に配置されている場合、Bluetooth 無線のベンダーは、Bluetooth 無線を公開するトランスポート バス ドライバーと、UART 経由で同じ通信パスを共有する他のデバイス機能 (FM 無線など) を提供する必要があります。 バス ドライバーには、Bluetooth 無線の電力消費とスリープ解除機能を制御する GPIO リソースを管理する役割もあります。

他のデバイス クラスとは異なり、Bluetooth の電源とスリープ解除を制御する GPIO ラインは、ACPI 制御メソッドで抽象化されるのではなく、トランスポート バス ドライバーで直接管理されます。 この制御スキームは、同じ UART ポートを共有する Bluetooth 無線と他の関数を列挙する多機能バス ドライバー設計の結果です。 この設計では、Windows ACPI ドライバー Acpi.sys は Bluetooth と FM 無線のドライバー スタックに読み込まれず、デバイスの Dx 状態の切り替えに応答する方法として、ACPI 制御メソッドの実行を使用できません。

Bluetooth 無線が SoC 上の UART ポートに接続されている場合、システム インテグレーターは、SoC 上の GPIO コントローラーのピンを使用して無線の電源を制御する必要があります。 ACPI ファームウェアでは、このピンを GPIO I/O リソースとして、トランスポート バス ドライバールート デバイスを表すデバイス オブジェクトに割り当てる必要があります。 内部電源制御を使用したデバイスの電源オフが無線でサポートされている場合は、GPIO ピンを Bluetooth 無線の電源に直接接続できます。

Bluetooth 無線で電源制御がサポートされている場合は、Bluetooth 無線の電源を任意のシステム電源レールに接続できます。

GPIO ピンで制御される内部電源制御が無線でサポートされていない場合、システム インテグレーターは、切り替え可能な電源レールに Bluetooth 無線を配置する必要があります。 その後、SoC からの GPIO ピンは電源切り替えハードウェアに接続されます。 この設計では、ACPI 制御メソッドを使用して参照カウントを追跡したり、同じ電源レールを共有する複数のデバイスの電源状態を集約したりできません。そのため、Bluetooth 無線を切り替え可能な独自の電源レールで分離する必要があります。

システム インテグレーターは、SoC 上の GPIO コントローラーで追加のピンを使用して、Bluetooth 無線からスリープ解除割り込みを受信できます。 このピンの割り込みでは、最低電力状態から SoC をスリープ解除できる必要があります。 GPIO コントローラーでは、SoC の電源状態に関係なく、このピンの割り込みを常に検出できるため、一部の SoC 設計では、このようなピンは常にオンの GPIO ピンと呼ばれます。 常にオン機能は、ハードウェアで SoC 上の特定の GPIO ピン セットに制限されてる場合や、ファームウェアで構成可能な場合があります。 システム インテグレーターは、この設計を SoC ベンダーとレビューして、Bluetooth 無線のスリープ解除割り込みによって、SoC で最も深いアイドル状態が終了することを確認する必要があります (最新のスタンバイ中は常に、システムは S0 にあります。最新のスタンバイ システムは S3 をサポートしていません)。

トランスポート バス ドライバーで列挙された機能の電源がオフになり、ACPI で列挙されたトランスポート バス デバイスが D3 に入ると、常にオンの GPIO ピンの電源をオフにすることができます。 これは、ユーザーがトランスポート バス ドライバーで列挙されたすべてのデバイス機能の無線をオフにすると発生します。

USB 上の Bluetooth 無線

Bluetooth 無線が USB バス経由で SoC またはコア シリコンに接続されている場合は、USB バス以外のソースから電源を供給する必要があります。 USB の仕様では、このような無線は自己供給として記述され、この機能は Bluetooth デバイスの USB 記述子でレポートされる必要があります。

同様に、USB デバイス ハードウェアで、リモート スリープ解除 (Bluetooth 無線で USB ホスト コントローラーをスリープ解除するインバンド USB 再開信号が生成される機能) のサポートが公開されている必要があります。 リモート スリープ解除機能は、Bluetooth 無線の USB 記述子で公開されている必要もあります。

Bluetooth 無線では、スリープ (D2) 状態に入り、セレクティブ サスペンドを有効にすることができるように、自己供給とリモート スリープ解除の両方の機能がサポートされている必要があります。

Bluetooth 無線がスリープ (D2) 状態であり、関連付けられているデバイスからのデータがホストで使用できる場合は、ホストをスリープ解除するために、Bluetooth 無線でスリープ解除再開信号が生成される必要があります。 コア シリコンへの GPIO ラインを使用したアウトバンド再開信号は、サポートされていません。 Bluetooth 無線 (その USB 接続回路を含む) では、スリープ (D2) 状態で電力消費が 1 ミリワット未満であると想定されています。

スリープ解除に関する懸念事項

Bluetooth 無線では、スリープ (D2) 状態になるとスリープ解除割り込みを生成できると想定されています。 SoC が最低電力状態である場合でも、スリープ解除割り込みによって SoC の電源がオンになる必要があります。 次の表では、2 つの Bluetooth スリープ解除メカニズムの概要を示します。

接続バス ハードウェアの信号パス コメントと注意事項

UART (ベンダーから提供されたトランスポート バス ドライバーを使用)

Bluetooth 無線から SoC への GPIO。

SoC を最低電力状態からスリープ解除できる GPIO ピンに無線が接続されている必要があります。

USB

セレクティブ サスペンドからのインバンド USB 再開信号。

アウトバンド GPIO スリープ解除はサポートされていません。

テストおよび検証

Bluetooth デバイスのベンダーは、Bluetooth 無線デバイスの電源管理操作をテストして検証することをお勧め勧めします。

他のセクションで説明されているように、アクティブ (D0) 状態、スリープ (D2) 状態、オフ (D3) 状態間の切り替えは、Xperf ツールを使用して簡単に確認できます。

Bluetooth ドライバーのアクティビティは、Windows に組み込みられた ETW インストルメンテーションを使用して監視できます。 ドライバーの開発者は、Windows イベント トレーシング (ETW) インストルメンテーションを使用して、ドライバーで電源管理状態の大幅な変更を公開し、これらの変更を Xperf ツールや組み込み Windows イベント ビューアーを使用して監視することをお勧めします。

Bluetooth 無線が USB 経由で接続されている場合は、組み込み Powercfg.exe ユーティリティを /energy コマンド ライン オプションと共に使用して、無線がスリープ (D2) 状態に入っていて、中断されていることを検証できます。 Powercfg.exe ユーティリティを使用するには:

  • 管理者としてコマンド プロンプト ウィンドウを開きます。
  • ドライブのルート ディレクトリ (cd \) に移動します。
  • powercfg.exe /energy コマンドを入力します。
  • 既定の 60 秒間待機します。
  • 次のスクリーンショットに示すように、Powercfg.exe ユーティリティからシステム上のエラーと警告条件の数が出力されます。
  • ツールによって概要情報がコマンド プロンプト ウィンドウに書き込まれると、Energy-report.html という名前の HTML ファイルが生成されます。 ファイルを開き、USB Bluetooth デバイスからエラーまたは警告の条件を検索します。 次の概要例では、USB Bluetooth デバイスがアイドル状態になっても、スリープ (D2) 状態に入らなかったことがレポートされています。

追加のサード パーティの Bluetooth プロファイル ドライバーとアプリケーションを提供する Bluetooth デバイスのベンダーは、ソフトウェアで予期しない削除がサポートされ、適切に無線管理インフラストラクチャで Bluetooth 無線を適時にオフにできることを確認する必要があります。 このようなシナリオは、プロファイルまたはアプリケーションの使用中に検証する必要があります。 たとえば、オーディオ ドライバーでは、無線がオフになっている間に、Bluetooth オーディオ ストリーミングが必要です。 その後、無線をオンに戻し、オーディオ ストリームを再起動しても、動作することを確認する必要があります。

Bluetooth の電源管理チェックリスト

システム インテグレーター、Bluetooth 無線のベンダー、SoC のベンダーは、次のチェックリストを使用して、システムの電源管理設計に Windows 8 と Windows 8.1 との互換性があることを確認する必要があります。

  • システム設計時に Bluetooth 無線用の通信バスを決定します。 Bluetooth 無線は、UART 経由で接続されるか、USB 経由で接続されます。

  • Bluetooth 無線で、デバイスが関連付けられていないときの電力消費が 1 ミリワット未満である低電力スリープ モードがサポートされていることを確認してください。

    スリープ モード時の Bluetooth 無線の電力消費は、現在存在する関連付けられたデバイスの数によって異なる場合がありますが、一般に常に 5 ミリワットを超えないようにする必要があります。

  • Bluetooth 無線で、次の基本的な必須の電源管理機能がサポートされていることを確認してください。

    • ユーザーが無線をオフにできるようにする方法としてのオフ (D3) 状態のサポート。
    • 関連付けられたデバイスへの接続が保持されるが、アクティブな転送がない低電力スリープ (D2) 状態に入るメカニズム。
    • 関連付けられたデバイスでデータが生成され、SoC が低電力状態になると SoC をスリープ解除するメカニズム。
  • Bluetooth 無線が USB 以外のバス (UART または SoC への統合) 経由で接続されている場合は、Bluetooth 無線のベンダーがトランスポート バス ドライバーを開発する必要があります。 トランスポート バス ドライバーでは、次の処理が行われる必要があります。

    • Bluetooth 電源管理処理用トランスポート バス ドライバーのガイドラインで詳しく説明されている機能と要件をサポートする。
    • Windows の Bluetooth ドライバー (Bthmini.sys) からコマンドへの要求を、UART バスまたは専用の内部 SoC バス経由で Bluetooth 無線に変換する。
    • Bluetooth 無線デバイスを、アクティブ (D0)、スリープ (D2)、オフ (D3) の状態にマップするさまざまな電源管理モードに切り替える。 ドライバーには、デバイスの電源管理 (Dx) IRP を処理するルーチンも実装する必要があります。
    • デバイスで入力が生成されたら、SoC をスリープ解除するように Bluetooth 無線を構成し、SoC に接続されているオプションの GPIO ラインの状態を電源管理用の Bluetooth 無線に変更する。
    • Bluetooth 無線で共有されている可能性がある他のデバイス (FM 送信機など) を列挙する。
    • ドライバーの開発に Windows Driver Framework (WDF) 使用する。
    • Bluetooth シリアル HCI バス ドライバーに基づいて実装する。
  • Bluetooth 無線が USB 経由で接続されている場合は、Bluetooth 無線ベンダーが次の操作を行う必要があります。

    • 無線でセレクティブ サスペンドのサポートを有効にする。
    • 無線の USB デバイス記述子にリモート スリープ解除機能と自己供給機能が設定されていることを確認する。
    • 無線 (USB コンポーネントを含む) の電力消費が 1 ミリワット未満であることを確認する。
  • 接続バスに関係なく、Bluetooth 無線では、内部接続された無線で次の操作を行う必要があります。

    • 無線の電源をオフにする準備時に無線に送信されている HCI_Reset コマンドに応答して、すべての RF コンポーネントがオフになっていることを確認する。 無線では、無線信号を送受信できない必要があります。
    • オフ (D3) 状態に設定すると、最低電力モードに入る。
  • Bluetooth 無線が UART 経由で接続されている場合、システム インテグレーターは、最低電力状態から SoC をスリープ解除できる SoC 上の GPIO ピンに、Bluetooth 無線からのスリープ解除信号を接続する必要があります。

    • SoC では、常にオンに事前に構成されている限定された GPIO ピン セットにスリープ解除信号をルーティングするように要求できます。
    • また、SoC では、起動時にシステム ファームウェアの常にオンのピンへの GPIO ピンの構成をサポートできます。
  • システム インテグレーターは、関連付けられたデバイスがないときに、Bluetooth 無線がスリープ (D2) 状態に入ることをテストして確認する必要があります。

  • システム インテグレーターは、関連付けられたデバイスにアクティブな転送がないないときに、Bluetooth 無線がスリープ (D2) 状態に入ることをテストして確認する必要があります。

  • システム インテグレーターは、Bluetooth 無線がスリープ (D2) 状態になると、最低電力状態から SoC をスリープ解除できることをテストして確認する必要があります。

  • システム インテグレーターは、スリープ (D2) 状態の間に、Bluetooth 無線で正しくないスリープ解除信号が生成されないことをテストして確認する必要があります。

  • システム インテグレーターは、サード パーティのアドオン ソフトウェア (プロファイル ドライバーやアプリケーションなど) が Bluetooth 無線管理で適切に動作することをテストして確認する必要があります。 サード パーティのソフトウェアがアクティブに使用されている間 (オーディオの再生時やファイルの転送時など) に、無線のオフとオンが切り替わる必要があります。