MB 無線電狀態
概觀
本主題描述用來設定和讀取 MB 裝置的無線電電源狀態 () 的作業。 如果適當的交換器) 存在,這些狀態可以透過軟體 (飛機模式) 或硬體 (來控制。 本主題說明如何控制無線電電源狀態、如何測試無線電電源狀態功能,以及如何調查無線電電源狀態問題。
詞彙
系統無線電狀態 - 系統無線電狀態 是全系統的狀態。 這是飛機模式狀態的最明顯指標。 系統無線電狀態是由 Radio Management Service (RmSvc) 管理。
Radio Manager - RmSvc 會逐一查看數個 RadioManagers (MediaManagers) 系統中,例如 WlanRadioManager、BlueTooth 和 WwanRadioManager。 WwanRadioManager (.lib) 裝載于 RmSvc.dll,並管理無線電邏輯的 wwan 端。 WwanRadioManager 使用 WWAN 服務 (WwanSvc) RPC 來:
- 查詢並設定行動資料無線電。
- 控制飛機模式前後的流程。
單選實例 - 每個 RadioManager 可以包含多個無線電實例。 例如,如果系統中有兩個行動數據機,WwanRadioManager 可以有兩個無線電實例。 每個無線電實例都是抽象物件,應該對應至一個硬體無線電模組。 在大部分情況下,每個無線電實例都會對應至一個行動數據機。
相關服務和驅動程式
RmSvc.dll - 管理全系統無線電事件,例如飛機模式。 它也裝載所有無線電管理員,包括 WwanRadioManager。
WwanSvc.dll - 行動電話數據機是由 WwanSvc 管理。 因此, (OID/CID) 的命令是透過 WwanSvc 發出。 從 RmSvc 或其他元件 (UI 的外部要求) 會透過 WwanSvc RPC 來查詢或設定行動裝置無線電狀態。
MbbCx.sys - 管理裝置電源狀態的核心模式驅動程式,特別是在 D0 和 Dx 轉換之間。 在某些系統設定上,裝置可以轉換為 Dx 狀態,並在需要時才復原至 D0。 MbbCx.sys 管理 D0 和 Dx 之前的無線電狀態復原邏輯和控制。
架構/流程
從 WwanSvc 到數據機硬體的無線電控制
透過 WwanSvc API 設定無線電
裝置抵達時的初始無線電狀態
MBIM_CID_RADIO_STATE
如上圖所示,飛機模式作業中使用的 CID MBIM_CID_RADIO_STATE。 此 CID 會設定或傳回 MB 裝置無線電電源狀態的相關資訊。
查詢
不會使用MBIM_COMMAND_MSG上的 InformationBuffer。 MBIM_RADIO_STATE_INFO會在 MBIM_COMMAND_DONE 的 InformationBuffer 中傳回。
集合
MBIM_COMMAND_MSG上的 InformationBuffer 包含MBIM_SET_RADIO_STATE。 MBIM_RADIO_STATE_INFO會在 MBIM_COMMAND_DONE 的 InformationBuffer 中傳回。
未經請求的事件
事件資訊Buffer 包含MBIM_RADIO_STATE_INFO結構。
參數
集合 | 查詢 | 通知 | |
---|---|---|---|
命令 | MBIM_SET_RADIO_STATE | 空白 | N/A |
回應 | MBIM_RADIO_STATE_INFO | MBIM_RADIO_STATE_INFO | MBIM_RADIO_STATE_INFO |
資料結構
集合
Offset | 大小 | 欄位 | 類型 | 描述 |
---|---|---|---|---|
0 | 4 | RadioState | MBIM_RADIO_SWITCH_STATE | 設定軟體控制的無線電狀態。 請參閱下表。 |
MBIM_RADIO_SWITCH_STATE
類型 | 值 |
---|---|
MBIMRadioOff | 0 |
MBIMRadioOn | 1 |
查詢
InformationBuffer 會是 Null ,InformationBufferLength 會是 零。
回應
MBIM_RADIO_STATE_INFO
Offset | 大小 | 欄位 | 類型 | 描述 |
---|---|---|---|---|
0 | 4 | HwRadioState | MBIM_RADIO_SWITCH_STATE | W_DISABLE參數的狀態。 如果裝置沒有W_DISABLE參數,此函式必須在此欄位中傳回 MBIMRadioOn。 |
4 | 4 | SwRadioState | MBIM_RADIO_SWITCH_STATE | 軟體設定的無線電狀態。 |
通知
請參閱上述 MBIM_RADIO_STATE_INFO 表格。
狀態碼
此 CID 只會使用泛型狀態碼。
測試
行動資料無線電測試
函數名稱 | 描述 |
---|---|
CellularRadioWinrtTest::VerifyCellularModemExistence | 判斷提示 winrt api 可以查詢行動數據機和無線電狀態 |
CellularRadioWinrtTest::VerifyCellularRadioToggle | 判斷提示 winrt api 可以在每個 wwan 配接器上切換無線電狀態 |
CellularRadioRecoveryTest::VerifyCellularRadioRecoveryToOnAfterAPM | 離開飛機模式時,判斷提示行動無線電狀態會復原到 [開啟] |
CellularRadioRecoveryTest::VerifyCellularRadioRecoveryToOffAfterAPM | 離開飛機模式時,判斷提示行動無線電狀態會保持關閉 |
CellularRadioRecoveryTest::VerifyCellularRadioAcrossSvcRestart | 判斷提示行動資料無線電狀態在 WwanSvc 重新開機時保持一致 |
CellularRadioRecoveryTest::VerifyCellularRadioAcrossDevNodePnp | 判斷提示行動裝置無線電狀態在裝置抵達/移除之間保持一致 |
CellularRadioTest.dll 包含這些測試。
硬體實驗室套件 (HLK) 測試
請參閱 安裝 HLK 的步驟。
在 HLK Studio 中,連線到行動資料數據機驅動程式並執行下列測試:
或者,您也可以依netsh-mbn 和 netsh-mbn-test-installation執行TestRadioStateHardware 和 TestRadioStateSoftware HLK測試清單。
netsh mbn test feature=radio testpath="C:\data\test\bin" taefpath="C:\data\test\bin" param="AccessString=internet"
顯示 HLK 測試結果的兩個檔案應該已在執行 'netsh mbn test' 命令的目錄中產生: TestRadioStateSoftware.htm
和 TestRadioStateHardware.htm
。
您可以使用下列指示收集及解碼記錄: MB 收集記錄。
分析記錄
篩選追蹤的實用關鍵字/RegExp
OID_WWAN_RADIO_STATE
CWwanRadioInstance::OnSysRadioChange
輸入 CUIRadioManager::_SetSysRadio
離開 CUIRadioManager::_SetSysRadio
CWwanRadioInstance::_SetSoftwareRadioState
[WwanRadioManager]
PostD0Entry:previousPowerState
CWwanRadioManager::OnSystemRadioStateChange (.) +sysradiostate
RMAPI (.) +OnSystemRadioStateChange
RMAPI (.) +OnSystemRadioStateChange
Wwan-svc (.) +radio
mbbcx (.) +radio
調查秘訣
- 識別這是全域 (全系統) 或本機 (僅限行動資料) 無線電問題。
- 區分裝置電源狀態 (D0-Dx) 與無線電狀態。 它們是不同的概念,但高度相互關聯。
- 請確定記錄中包含必要的 ETW 提供者。
- 使用案例縮社區域範圍。 例如:
- 如果與飛機模式相關,請專注于 RmSvc 和 WwanRadioManager。
- 如果與 D0-Dx <> 、休眠或睡眠轉換有關,請專注于 MBBCx。
- 如果 UI 顯示或狀態同步處理相關,請從 WwanSvc 開始。
WinRT API
Windows.Devices.Radios
Windows.Devices.Radios 是由 Radio Management Service 所擁有,可管理所有無線電管理員和實例。 針對 WWAN 端,RadioKind 是 RadioKind::MobileBroadband。
- GetRadiosAsync ( )
- SetStateAsync ( )
Windows.Networking.NetworkOperators
Windows.Networking.NetworkOperators 檔頁面
此命名空間下的唯一實用公用程式是 MobileBroadbandDeviceInformation.CurrentRadioState。