Android 13 以降を実行しているデバイスの場合、Android は Wi-Fi 7 (IEEE 802.11be) 標準をサポートします。このページでは、ベースラインやマルチリンク操作 (MLO) などの Android Wi-Fi 7 の機能について説明します。
Wi-Fi 7 のベースライン機能
このセクションでは、Android 13 以降に含まれる基本的な Wi-Fi 7 機能について説明します。
デバイスのWi-Fi 7のサポート
Android フレームワークにはWifiManager#isWifiStandardSupported(int standard)
API が含まれており、アプリがScanResults.WIFI_STANDARD_11BE
引数を使用してこの API を呼び出して、デバイスが Wi-Fi 7 をサポートしているかどうかを確認できます。
この API が呼び出されると、 Wi-Fi モジュールはconfig_wifi11beSupportOverride
構成オーバーレイがオーバーライドとして使用されているかどうかを確認し、次の処理を実行します。
- オーバーレイが
true
に設定されている場合、nl80211 からの応答に関係なく、デバイスは Wi-Fi 7 をサポートすると想定されます。このオーバーライドは、Wi-Fi 7 のサポートを返すドライバーを持たないデバイス メーカーにのみ役立ちます。 - オーバーレイが
false
(デフォルト値) に設定されている場合、Wi-Fi モジュールは nl80211 からの情報を使用します。 Wi-Fi モジュールは wificond からの情報を要求し、nl80211 コマンドNL80211_CMD_GET_WIPHY
を呼び出します。NL80211_BAND_IFTYPE_ATTR_EHT_CAP_PHY
属性がドライバーからの応答に含まれている場合、デバイスは Wi-Fi 7 をサポートしていると想定されます。
スキャンされた AP Wi-Fi 7 のサポート
Android フレームワークには、 int ScanResult#getWifiStandard()
API が含まれており、アプリはこの API を呼び出して、スキャンされたアクセス ポイント (AP) が Wi-Fi 7 をサポートしているかどうかを確認できます。AP が Wi-Fi 7 をサポートしている場合、API はScanResults.WIFI_STANDARD_11BE
を返します。アプリがこの API を使用するために、デバイスが Wi-Fi 7 をサポートする必要はありません。
この API が呼び出されると、Wi-Fi モジュールは、返された接続スキャンの結果にEHT Capability IE
含まれているかどうかを確認します。スキャン結果にEHT Capability IE
含まれている場合、スキャンされた AP は Wi-Fi 7 をサポートしています。AOSP WifiTracker
クラスは、冗長モードで実行しているときにユーザー インターフェイスにこのサポート情報を表示します。
STA接続モード
Android フレームワークにはint WifiInfo#getWifiStandard()
API が含まれており、アプリはこの API を呼び出して、現在のステーション (STA) 接続モードが Wi-Fi 7 であるかどうかを確認できます。デバイスと接続されているデバイスの両方が STA 接続モードである場合、STA 接続モードは Wi-Fi 7 になります。 AP は Wi-Fi 7 をサポートします。接続モードが Wi-Fi 7 の場合、API はScanResults.WIFI_STANDARD_11BE
を返します。
getWifiStandard
が呼び出されると、Wi-Fi モジュールはISupplicantStaIface#getConnectionCapabilities()
HAL API を呼び出してモードを決定します。 wpa_supplicant
AIDL レイヤーでのこの HAL API の実装は、接続セットアップ中にEHT Capability IE
がAssocReq
とAssocRsp
の両方にあるかどうかをチェックします。
ネットワーク選択
Android 13 では、ネットワーク選択ではいくつかのパラメーターを使用して、どの AP に接続するかを決定します。パラメーターの 1 つは AP の推定スループットであり、 ThroughputPredictor
ブロックを使用して推定されます。 ThroughputPredictor
ブロックは、デバイスとスキャンされた AP の両方の PHY パラメーターを使用します。
Android 13 では、 ThroughputPredictor
計算で次の AP 機能を使用します。
- Wi-Fi 7 (802.11be) のサポート
- 320 MHz チャネル幅のサポート
これらの機能をThroughputPredictor
ロジックに組み込むと、デバイスがこれらの機能を利用できる場合に、Wi-Fi 7 対応 AP を選択する可能性が高まります。
Wi-Fi RTT ベースの測距
Android は、EHT プリアンブルとWi-Fi RTTの 320 MHz チャネル幅の API サポートを提供します。これにより、チップでサポートされている場合は常に、RTT 範囲での Wi-Fi 7 関連機能のサポートが可能になります。
HAL API
次の HAL API は、RTT ベースのレンジングの Wi-Fi 7 機能をサポートします。
-
EHT
:enum RttPreamble
およびenum WifiRatePreamble
の定数 WIDTH_320
:enum WifiChannelWidthInMhz
の定数BW_320MHz
:enum RttBw
の定数
API
アプリは、Wi-Fi 7 RTT ベースの測距に次の API を使用できます。
ソフトAP
Android は Soft AP で Wi-Fi 7 をサポートし、次の機能を提供します。
ソフトAPを開始する
Android は、Wi-Fi 7 モードでの Soft AP の起動をサポートしています。これは、 config_wifiSoftapIeee80211beSupported
オーバーレイ構成によって管理されます。
Wi-Fi モジュールは、オーバーレイconfig_wifiSoftapIeee80211beSupported
を使用して、 IHostApd#addAccessPoint()
API 呼び出しでブール値のHwModeParams#enable80211BE
を設定します。 hostapd AIDL レイヤーでは、この値はhostapd.conf
パラメーターの設定に使用されます。
HAL API
hostapd HAL のHwModeParams
のenable80211BE
ブール値は、Wi-Fi 7 モードでの Soft AP の起動をサポートします。
Soft AP 情報のレポート
Android には、レポートされる Soft AP 情報に Wi-Fi 7 および 320 MHz のチャネル幅情報を含めるための API サポートが含まれています。
HAL API
hostapd HAL のGeneration.aidl
AIDL インターフェイスのWIFI_STANDARD_11BE
定数は、 IHostapdCallback#onApInstanceInfoChanged()
コールバックでレポートされるApInfo
で使用され、Soft AP 情報のレポートをサポートします。
API
アプリは、 SoftApInfo
の次のメソッド (システム API) を使用して、Soft AP 情報を報告できます。
-
SoftApInfo#getWifiStandard()
: Soft AP が Wi-Fi 7 モードで起動された場合は、ScanResults.WIFI_STANDARD_11BE
を返します。 -
SoftApInfo#getBandwidth()
: 320 MHz チャネル幅が使用されている場合は、SoftApInfo#CHANNEL_WIDTH_320MHZ
を返します。
MLO Wi-Fi 7 の機能
マルチリンク操作 (MLO) は、Wi-Fi 7 (802.11be) 仕様の主な機能です。 MLO は、同時か非同時かにかかわらず、Wi-Fi 7 で実行されるマルチリンク デバイス (MLD) の必須機能です。
図 1. MLO の図。
図 1 に示すように、AP-MLD と STA-MLD の両方には、各リンク上で複数の AP または STA インスタンスが実行されています。各リンクには個別の AP または STA MAC アドレスがあります。 AP または STA には、デバイスを識別するための MLD MAC アドレスもあります。
MLO リンク表現
android.net.wifi.MloLink
クラスは MLO リンクを表します。このクラスには次のパラメータが含まれます。
-
int getLinkId()
: AP MLD によってアドバタイズされるリンク ID。 -
MacAddress getApMacAddress()
: AP MAC アドレス。そのリンクの AP インスタンスの BSSID。 -
MacAddress getStaMacAddress()
: STA MAC アドレス。リンク上の STA インスタンスにローカルに割り当てられた MAC アドレス。 -
int getChannel()
: リンクチャネル。リンクのチャネル番号。 -
int getBand()
: リンクバンド。リンクのバンド。 int getState()
: リンク状態。次のいずれかの状態になります。-
MLO_LINK_STATE_INVALID
: 無効です。初期化およびエラーの場合に使用されます。 -
MLO_LINK_STATE_UNASSOCIATED
: 関連付けられていません。リンクは AP に関連付けられていません。 -
MLO_LINK_STATE_IDLE
: アイドル状態。リンクは関連付けられていますが、アクティブではありません (トラフィック識別子 (TID) がリンクにマップされていません)。 -
MLO_LINK_STATE_ACTIVE
: アクティブです。リンクは関連付けられており、アクティブです (少なくとも 1 つの TID がリンクにマッピングされています)。フレームワークはリンクの電力状態を監視しないため、アクティブなリンクは省電力モードになる可能性があります。
-
スキャンされた Wi-Fi 7 AP MLO 情報
Wi-Fi モジュールが AP-MLD からScanResult
オブジェクトを受信すると、アプリは Wi-Fi 7 AP MLD の MLO パラメータを取得できます。 AOSP WifiTracker
冗長モードで実行すると MLO パラメータを表示します。
Wi-Fi モジュールは、次の手順を実行して MLO 情報を収集します。
- ビーコンまたはプローブ応答に含まれるマルチリンク情報要素 (IE) を解析して、AP MLD MAC アドレスと現在のリンク ID を読み取ります。
- ビーコンまたはプローブ応答に含まれる縮小近隣レポート (RNR) IE を解析して、提携リンク情報のリストを読み取ります。
API
スキャンされた AP MLO 情報を取得するには、アプリは次の API を使用できます。
-
ScanResult#BSSID
: AP インスタンスの MAC アドレス (スキャン結果を受信するリンク用) -
MacAddress ScanResult#getApMldMacAddress()
: AP の MLD MAC アドレスを返します。 -
int ScanResult#getApMloLinkId()
: ScanResult を受信したリンクのリンク ID を返します。 -
List<MloLink> ScanResult#getAffiliatedMloLinks()
: ScanResult を受信したリンクを含む、AP-MLD によってアドバタイズされたすべてのリンクのMloLink
オブジェクトのリストを返します。
接続された Wi-Fi 7 AP MLO 情報
デバイスが Wi-Fi 7 AP-MLD に接続すると、フレームワークはWifiInfo
オブジェクトから接続の MLO パラメータを収集します。 AOSP WifiTracker
オブジェクトは、冗長モードで実行しているときにこの情報を表示します。
デバイスが AP-MLD に接続すると、Wi-Fi モジュールは AP から受信したScanResult
オブジェクトから MLO 情報をコピーします。次に、モジュールはISupplicantStaIface#getConnectionMloLinksInfo()
HAL API を呼び出して、AP と STA の両方の各リンクの MAC アドレスを読み取り、関連するリンクの状態を更新します。
API
MLO 接続情報を取得するために、アプリは次の API を使用できます。
-
WifiInfo#getBSSID()
: AP インスタンスの MAC アドレス (デバイスが関連付けられているリンクの) を返します。 -
MacAddress WifiInfo#getApMldMacAddress()
: AP の MLD MAC アドレスを返します。 -
int WifiInfo#getApMloLinkId()
: STA が AP に関連付けられているリンクのリンク ID を返します。 -
List<MloLink> WifiInfo#getAffiliatedMloLinks()
: 関連リンクを含む、AP-MLD によってアドバタイズされたすべてのリンクのMloLink
オブジェクトのリストを返します。 AP と STA の両方の MAC アドレスを各MloLink
オブジェクトでクエリできます。
AP-MLD スキャン
ベンダー ソフトウェアは、受信した各ビーコンまたはプローブ応答のスキャン結果を Wi-Fi フレームワークに提供します。これは、Wi-Fi フレームワークが次のことを意味します。
- 同じ AP-MLD から複数の
ScanResults
オブジェクトを受信する可能性があります (AP が複数のビーコン リンクを持つことができるため)。 - これらのリンク信号の一部はファームウェアによって受信されない可能性があるため、AP-MLD の AP リンクのスキャン結果の部分セットのみを受信する可能性があります。
ベンダー ソフトウェアは、無線で受信したスキャン結果のみを報告し、AP-MLD によってアドバタイズされたリンクに基づいてスキャン結果を作成 (人為的に合成) してはなりません。
ベンダー ソフトウェアは、レポートされるスキャン結果に、AP インスタンスから受信した基本バリアント マルチリンク IE と RNR IE を含める必要があります。関連する AP の詳細がスキャン結果に含まれていない場合、ベンダー ソフトウェアはマルチリンク プローブ リクエスト (プローブ リクエスト マルチリンク要素を含むプローブ リクエスト フレーム) を送信して、機能、パラメータ、および操作要素の完全なセットまたは部分的なセットを含めることができます。応答フレーム内のターゲット AP-MLD を含む AP の情報。
ベンダー ソフトウェアは、必要に応じて ML プローブをトリガーできます (プローブ要求フレーム内のプローブ要求バリアント ML IE を使用)。
AP-MLD ネットワーク アソシエーション
デバイスが AP-MLD ネットワークに参加すると、ベンダー ソフトウェアは選択された AP リンク (関連リンク) をシグナリングに使用します。ベンダー ソフトウェアは、デバイスでサポートされているリンクのすべてまたは一部に関連付けることができます。
アソシエーションが成功すると、ドライバーはISupplicantStaIfaceCallback#onStateChanged()
AP-MLD のリンクの BSSID とともに報告します。次に、スキャン結果がそのリンクのフレームワークに報告されている場合、ドライバーは AP-MLD のリンクを選択します。
ネットワークスコアリング
Android 14 以降を実行しているデバイスの場合、 Android Wi-Fi ネットワーク選択はWi-Fi 7 MLO をサポートします。これは、Android が MLO で利用可能なリンクの数に基づいてデバイスに最適な Wi-Fi ネットワークを選択することを意味します。
MLO をサポートするために、ネットワーク選択アルゴリズムは Wi-Fi チップの次の MLO 機能を使用します。
- 最大STRリンク数
- 最大アソシエーションリンク数
- 同時バンドの組み合わせ
図 2. MLO ネットワークの選択。
最大STRリンク数
同時送受信 (STR) は、マルチリンク動作のための Wi-Fi メディア競合方式です。異なるリンク間の信号分離は、リンクが独立して動作し、異なるリンクで同時に送信および受信できるように十分なものです。 STR は、従来のシングル リンク (SL) STA および従来のデュアル バンド デュアル コンカレント (DBDC) STA とは異なります。 STA MLD に所属する STA は、複数のリンク送信が同じアクセス カテゴリ (AC) を持つ場合、共通の送信機シーケンス番号 (SN) と、異なるリンクに割り当てられたデータ送信用の共通スペースを共有します。
使用される STR リンクの最大数は、チップがサポートする無線の最大数と異なる場合があります。図 2 の例では、STR リンクの最大数は 2 です。
次の AIDL HAL インターフェイスは、最大 STR リンク数と最大数のアソシエーション リンク数機能をサポートします。
hardware/interfaces/wifi/aidl/android/hardware/wifi/IWifiChip.aidl
hardware/interfaces/wifi/aidl/android/hardware/wifi/WifiChipCapabilities.aidl
最大アソシエーションリンク数
競合方式である Enhanced Multi-Link Single Radio (eMLSR) を使用して、複数のリンクを単一の無線で動作させることができます。マルチリンク デバイスは、特定の基本制御フレームを受信し、リンクのセット上で同時にクリア チャネル評価(CCA)を実行できる場合、リンクのセット上で eMLSR を使用します。ただし、MLD は一度に 1 つのリンク (各送信機会 (TXOP) 期間で動的に選択されるリンク) でのみデータを送信または受信します。
MLD ステーションは、チップでサポートされている場合は STR と eMLSR を同時に動作させることで、アソシエーション リンクの数を最大化し、信頼性、スループットを向上させ、遅延を(シングル リンクのレガシー ステーションと比較して)低くすることができます。図 2 では、最大関連付けリンク数は 3 です。
次の AIDL HAL インターフェイスは、最大アソシエーション リンク カウント機能をサポートします。
hardware/interfaces/wifi/aidl/android/hardware/wifi/IWifiChip.aidl
hardware/interfaces/wifi/aidl/android/hardware/wifi/WifiChipCapabilities.aidl
同時バンドの組み合わせ
フレームワークはチップにクエリを実行して、同時に動作できる許可された無線の組み合わせを ( IWifiChip.aidl
AIDL インターフェイス経由で) 取得します。この情報から、フレームワークは可能な同時バンドの組み合わせを導き出します。以下は、同時バンドの組み合わせ (GHz) のリストの例です。
- 2.4
- 5
- 6
- 2.4×5
- 2.4×6
- 5×6
次の AIDL HAL インターフェイスは、同時無線の組み合わせをサポートしています。
hardware/interfaces/wifi/aidl/android/hardware/wifi/IWifiChip.aidl
ネットワーク選択
ネットワーク選択 (MLO) 中に、候補リストは同じ MLD MAC アドレスを持つメンバーによってグループ化されます。最大予測マルチリンク スループット スコアは、最大 STR リンク数とチップがサポートする同時バンドの組み合わせに基づいて、グループごとに計算されます。候補がマルチリンク対応で、チップが STR をサポートしている場合、予測スループット スコアはマルチリンク予測スループット スコアに置き換えられます。これにより、ネットワーク選択時に MLO 候補が後押しされます。
AP-MLD ネットワークに参加すると、フレームワークは、ベンダー ソフトウェアによって報告されたScanResults
オブジェクトで受信した情報に基づいて SSID の選択を実行します。フレームワークによって SSID が選択されると、ベンダー ソフトウェアは、関連付けに使用する最適な AP (または AP リンク) の BSSID を選択する責任を負います。
デバイスの STA MAC アドレスの処理
このセクションでは、デバイスの STA MAC アドレス (MLD MAC アドレスおよびリンクごとの STA MAC アドレス) がどのように処理されるかについて説明します。
MLD MAC アドレス
Wi-Fi フレームワークは、デバイスの MLD MAC アドレスを管理します。 MLD MAC アドレスは、非 MLD デバイスが独自の MAC アドレスを処理するのと同じ方法で処理されます。 MAC アドレスは、ユーザーの選択に基づいて、ランダム化された MAC アドレスまたはハードウェアによってプロビジョニングされた MAC アドレスになります。 MLD MAC アドレスはIWifiStaIface#setMacAddress()
HAL API を使用してフレームワークによって設定されます。
リンクごとの STA MAC アドレス
ベンダー ソフトウェアは、インスタンス STA MAC アドレスを (リンクごとに) 管理します。デバイスが AP に関連付けられると、ベンダー ソフトウェアは関連付けられた各リンクにインスタンス MAC アドレスを割り当てます。
ベンダー ソフトウェアは、そのアルゴリズムに基づいてリンクごとの MAC アドレスを割り当てます。アルゴリズムは反復可能であり、次の関数である必要があります。
- Wi-Fi フレームワークによって設定された STA-MLD MAC アドレス。
- リンクID(APから受信)
これは、フレームワークが同じ MLD MAC アドレスを再利用する場合、ベンダーは同じ関連付けられたインスタンスごとの MAC アドレスを再利用する必要があり、その逆も同様であることを意味します。これにより、フレームワークで生成された STA-MLD アドレスが SSID に対して永続的である場合、STA ごとの MAC アドレスも永続的であることが保証されます。
以下は、リンクごとの STA MAC アドレス割り当てのアルゴリズムの例です (ベンダーは、アルゴリズム基準を満たす任意のアルゴリズムを実装できます)。
- オクテット 0: ローカル管理ビットが設定されていることを確認してください
- オクテット 1 ~ 4: STA-MLD MAC アドレスと同じ
- オクテット 5: STA ごと = (STA-MLD + リンク ID + 1) MOD (256)
マルチリンク処理
ベンダー ファームウェアは、Wi-Fi フレームワークからの入力なしで、リンクの切り替えを実行し、アクティブ化または非アクティブ化のためのリンクの省電力状態を管理できます。
Wi-Fi フレームワークは、リンク状態が変更されたときの通知を期待しません。
省電力状態の管理
Wi-Fi フレームワークでは、省電力状態がデフォルトで有効になっています。省電力状態では、ベンダー ファームウェアは、トラフィック パターンおよびリンクのアクティブ化または非アクティブ化の決定に基づいて、個々のリンクの省電力状態を管理します。
ただし、Wi-Fi フレームワークはISupplicantStaIface::setPowerSave(false)
HAL API を呼び出すことで、省電力状態を強制的に無効にすることができます。フレームワークによって省電力状態が無効になっている場合、ベンダー ファームウェアは少なくとも 1 つのリンクをアクティブ (省電力が無効) に維持する必要があります。この状態では、ファームウェア実装によってどのリンクが設定されるかが決定されます。
データ経路
これは、アップリンクおよびダウンロード トラフィックを処理するためのベンダー ファームウェアの実装について説明します。
アップリンクトラフィック
ファームウェアは、内部実装に基づいてアップリンク トラフィックを 1 つ (または複数) のリンクにルーティングします。ベンダー ファームウェアは、トラフィック パターンに基づいてトラフィックのロード バランシング、複製、または集約をいつ実行するかを決定します。次の場合には、ファームウェアでトラフィックを複数のリンクに複製することをお勧めします。
-
IWifiChip#setLatencyMode()
HAL API を通じて低遅延モードが設定されている場合。 - ユーザー優先度 6 および 7 のトラフィックがある場合。
ダウンリンクトラフィック
ファームウェアは、MAC ヘッダーの (宛先) STA ごとの MAC アドレスを MLD-STA MAC に置き換え、MAC ヘッダーの (送信元) AP ごとの MAC アドレスを MLD-AP MAC アドレスに置き換える必要があります。 APF フィルタ コマンドには MLD MAC アドレスに基づくフィルタがあるため、ファームウェアは APF フィルタを通過する前にこの MAC アドレス置換を実行する必要があります。 AP-MLD のすべてのリンクに対して 1 つの APF フィルタがあります。
同時実行性
無線が新しいインターフェイスに使用される同時実行シナリオは、同じインターフェイスのリンク専用の複数の無線よりも優先される必要があります。また、どちらが先であっても、同時実行シナリオは MLO よりも優先される必要があります。単一のインターフェイスに複数のリンクを使用することは便宜的です。つまり、複数のリンクは次の場合にのみ使用されます。
- MLO は、ロード バランシング、集約、または複製のためのファームウェアの決定に基づいて必要です。
- MLOが利用可能です。これは、別のインターフェイスで無線が必要ないことを意味します。
TID からリンクへのマッピング
Android 14 以降を実行しているデバイスの場合、Wi-Fi 7 AP がビーコン、プローブ応答、およびアソシエーション応答フレームで送信される TID からリンクへのマッピング要素を通じてリンクの 1 つを一時的に無効にすることを通知すると、Wi-Fi 7ステーションは、別のアソシエーションを実行せずに、セットアップされている残りのリンクを使用して AP との接続を継続します。
Android 13 以前を実行しているデバイスの場合、Wi-Fi フレームワークは、関連付けられたリンクが TID にリンクされていない場合でも、TID からリンクへのマッピングによってリンク状態が変更されたときの通知の受信をサポートしません。
AIDL HAL
Wi-Fi サプリカントは、次の AIDL インターフェイスを通じて、TID からリンクへのマッピングの変更を Wi-Fi フレームワークに通知します。
hardware/interfaces/wifi/supplicant/aidl/android/hardware/wifi/supplicant/ISupplicantStaIfaceCallback.aidl
hardware/interfaces/wifi/supplicant/aidl/android/hardware/wifi/supplicant/ISupplicantStaIface.aidl
hardware/interfaces/wifi/supplicant/aidl/android/hardware/wifi/supplicant/MloLinksInfo.aidl
API
アプリは、次の API を使用して、TID からリンクへのマッピングの変更に関する情報を取得できます。
-
ConnectivityManager.NetworkCallback.onCapabilitiesChanged()
: TID からリンクへのマッピングの変更があるときにフレームワークによってトリガーされるネットワーク コールバック。 -
WifiInfo#getAssociatedMloLinks()
: 関連付けられた MLO リンクを返します。 -
MloLink#getState()
: リンクの状態MLO_LINK_STATE_ACTIVE
またはMLO_LINK_STATE_IDLE
を返します。
TID からリンクへのマッピング ネゴシエーション機能
Android 14 以降を実行しているデバイスの場合、次の API を使用して、ステーションと AP の TID からリンクへのマップ ネゴシエーション機能を取得できます。
チップの能力
次のインターフェイスは、TID からリンクへのマッピング ネゴシエーションのチップ機能をサポートします。
AIDL HAL
TID からリンクへのマッピング ネゴシエーション用の AIDL インターフェイスhardware/interfaces/wifi/aidl/android/hardware/wifi/IWifiChip.aidl
のFeatureSetMask
にあります。 T2LM_NEGOTIATION = 1 << 8
機能は、チップが TID からリンクへのマッピングをサポートしていることを示します。 API
-
WifiManager.isTidToLinkMappingNegotiationSupported()
: TID からリンクへのマッピング ネゴシエーションをサポートするチップを返します。
AP の機能
次のインターフェイスは、TID からリンクへのマッピング ネゴシエーションの AP 機能をサポートします。
AIDL HAL
フレームワークは、現在の接続機能とともにサプリカントから AP 機能を照会します。
-
apTidToLinkMapNegotiationSupported
: AP が TID からリンクへのマップ ネゴシエーション機能をサポートしているかどうかを確認します。
API
-
WifiInfo.isApTidToLinkMappingNegotiationSupported()
: AP が TID からリンクへのマッピング ネゴシエーションをサポートするかどうかを返します。
リンク層の統計
リンク層の統計には、RSSI、さまざまな TX および RX パケット カウンタ、無線統計などの Wi-Fi リンク固有の詳細が含まれます。 Wi-Fi フレームワークは、リンク層の統計情報と RSSI を定期的にポーリングして、最適なネットワークを選択するか、接続されたネットワークの品質を評価します。 Android 14 以降を実行しているデバイスの場合、リンク層の統計にはマルチリンクのサポートが含まれます。 Wi-Fi 7 をサポートするために、Android はリンク層統計と信号ポーリングの両方で MLO をサポートします。
リンク固有の統計は、次のリンク層 AIDL インターフェイスにあります。
-
hardware/interfaces/wifi/aidl/android/hardware/wifi/StaLinkLayerIfaceStats.aidl
-
hardware/interfaces/wifi/aidl/android/hardware/wifi/StaLinkLayerLinkStats.aidl
android.net.wifi.WifiManager#addOnWifiUsabilityStatsListener()
システム API は、すべてのリンク層の統計をリッスンします。フレームワークはこの API を定期的に呼び出して、Wi-Fi ユーザビリティ統計を更新します。
次のリンク固有の API は、 android.net.wifi.WifiUsabilityStatsEntry
で利用できます。
int getRssi(int linkId)
int getLinkState(int linkId)
int getRadioId(int linkId)
int getTxLinkSpeedMbps(int linkId)
long getTotalTxSuccess(int linkId)
long getTotalTxRetries(int linkId)
long getTotalTxBad(int linkId)
long getTotalRxSuccess(int linkId)
long getTotalBeaconRx(int linkId)
int getRxLinkSpeedMbps(int linkId)
int getTimeSliceDutyCycleInPercent(int linkId)
ContentionTimeStats getContentionTimeStats(int linkId, @WmeAccessCategory int ac)
List<RateStats> getRateStats(int linkId)
利用可能なリンク ID をクエリするために、アプリはandroid.net.wifi.WifiUsabilityStatsEntry#getLinkIds()
メソッドを呼び出すことができます。
単一リンク (MLO ではない) のandroid.net.wifi.WifiUsabilityStatsEntry
の API は、MLO 接続の集約された統計を返します。集計基準は次のとおりです。
次の集約されたパケット統計では、リンクごとの統計の合計が使用されます。
public long getTotalTxSuccess() public long getTotalTxRetries() public long getTotalTxBad() public long getTotalRxSuccess() public int getRxLinkSpeedMbps()
次の統計では、RSSI が最も高いリンクからのデータが使用されます。
public int getRssi() public int getLinkSpeedMbps() public long getTotalBeaconRx() public int getTimeSliceDutyCycleInPercent() public ContentionTimeStats getContentionTimeStats(@WmeAccessCategory int ac) public List<RateStats> getRateStats()
Android 13 のリンク層の統計情報
Android 13 を実行しているデバイスの場合、リンク層の統計では、単一のインターフェイスに対する複数のリンクの使用状況が考慮されません。 MLO をサポートするには、ベンダー ソフトウェアはIWifi# getLinkLayerStats_1_6()
HAL API を通じてLinkLayerStats
報告するときに、次の集計ロジックを適用する必要があります。最良のリンクは、RSSI が最も高いリンクです。
-
StaLinkLayerStats.iface.beaconRx
: インターフェイスに使用される最適なリンクのビーコン数を報告します。 -
StaLinkLayerStats.iface.avgRssiMgmt
: インターフェイスに使用される最適なリンクのavgRssiMgmt
をレポートします。 -
StaLinkLayerStats.iface.wmeXxPktStats
(Xx = Vo、Vi、Be、Bk): インターフェイスのリンク上の集約されたパケット統計 (合計) をレポートします。 -
StaLinkLayerStats.iface.wmeXxContentionTimeStats
(Xx = Vo、Vi、Be、Bk): インターフェイスで使用されている最適なリンクの競合時間統計 (最低の競合時間統計) をレポートします。
MLO リンクの再構成
Wi-Fi 7 アクセス ポイントのリンクの 1 つが再利用されると、AP は MLO リンク再構成を通じてリンクの削除を通知できます。ステーションは、残りのリンクで再接続することなく、AP とのシームレスな接続を維持できます。
Wi-Fi サプリカントのISupplicantStaIfaceCallback.aidl
にあるonMloLinksInfoChanged
AIDL インターフェイスは、リンクの再構成 (AP によるリンクの削除) をサポートします。
Wi-Fi フレームワークがリンクの削除を処理するとき、リンク状態はMLO_LINK_STATE_UNASSOCIATED
に設定されます。次に、フレームワークは、リンク状態の変更のためにConnectivityManager.NetworkCallback#onCapabilitiesChanged()
をトリガーします。
WifiInfo#getAffiliatedMloLinks
メソッドは、関連付けられた MLO リンクを返します。 MloLink#getState
メソッドはリンクの状態を返します。リンクが削除された場合、返されるリンク状態はMLO_LINK_STATE_UNASSOCIATED
です。
チップMLO戦略
MLO を使用すると、デバイスが複数の Wi-Fi リンク上で同時にデータを送受信できるようになり、低遅延、高帯域幅、低電力などの特定の要件を持つアプリのパフォーマンスを向上させることができます。チップ ベンダーは、利用可能なリンクの使用方法に関するアルゴリズムを開発できます。
特権アプリは、 Wifimanager
のsetMloMode
メソッドを使用してこれらのアルゴリズムを変更し、次のモードを設定できます。
-
MLO_MODE_DEFAULT = 0
-
MLO_MODE_LOW_LATENCY = 1
-
MLO_MODE_HIGH_THROUGHPUT = 2
-
MLO_MODE_LOW_POWER = 3
フレームワークは、 IWifiChip
AIDL インターフェイスのsetMloMode
使用して MLO モードを設定します。