Jam 偵測

在 GitHub 中查看來源

如要為任何 OpenThread 節點提供可設定訊號的偵測機制,請啟用 Jam 偵測功能。

這項功能對於需要偵測特定頻道訊號信號的裝置認證很有幫助。您可以設定符合各種認證類型的要求。

運作方式

Jam Detection 會在指定時間範圍內監控節點的 RSSI (接收訊號強度指標),藉此判斷管道是否受到干擾。

啟用 Jam 偵測功能時:

  1. Jam 偵測狀態已設為「false」。
  2. 節點每隔一秒間隔對 RSSI 進行多次取樣。
  3. 如果整個一秒間隔的 RSSI 仍高於每個樣本的 RSSI 門檻上限,系統會將一秒間隔視為卡住。
  4. 如果卡住一秒間隔的總數大於或等於 等於設定的忙碌期間秒數在任何先前設定偵測視窗秒的任何時間點,Jam 偵測狀態就會設為 true
  5. 如果 Jam 的時間間隔等於 1 秒低於設定的總數忙碌時段在先前設定的偵測視窗任何時間點的 Jam 偵測狀態設為false的 Google Ads 新帳戶重新申請驗證。

記錄點陣圖

OpenThread APIwpantund 屬性中,無法擷取先前 63 秒的點陣圖。這個點陣圖會指出 RSSI 是否超過前 63 秒的 RSSI 門檻。

舉例來說,您可以擷取下列點陣圖:

0xC248068C416E7FF0

轉換為二進位檔後,RSSI 會在過去 63 秒內,超過 RSSI 門檻的每個執行個體:

11000010 01001000 00000110 10001100 01000001 01101110 01111111 11110000

如果偵測視窗設為 16 秒,且忙碌期間設為 8 秒,Jam Detection 狀態會在 51 秒後變成 true,也就是第一個 RSSI 門檻為超過 16 秒至少 8 秒。在這個示例中,Jam Detection 狀態在接下來 13 秒內仍會維持 true

11000010 01001000 00000110 10001100 01000001 01101110 01111111 11110000
                                      [00001 01101110 011] = 8 in 16

如果配置的 -45 dBm 是設定的 RSSI 值,則可由下列圖表表示:

OT Jam 偵測

如何啟用

這項功能預設為停用。

根據定義

如要啟用 Jam 偵測,請在建立 OpenThread 之前,在 openthread/src/core/config/openthread-core-default-config.h 檔案中將 OPENTHREAD_CONFIG_JAM_DETECTION_ENABLE 定義為 1

#ifndef OPENTHREAD_CONFIG_JAM_DETECTION_ENABLE
#define OPENTHREAD_CONFIG_JAM_DETECTION_ENABLE 1
#endif

依選項

您也可以在建立 OpenThread 時使用 -DOT_JAM_DETECTION=ON 建構選項:

./script/build -DOT_JAM_DETECTION=ON

參數

Jam 偵測參數只能透過 OpenThread API、Spinel 通訊協定或 wpanctl (用於網路共同處理者 (NCP) 管理的 wpantund 指令列工具) 設定。如果在啟用這項功能的情況下,系統會啟用預設值。

請使用下列參數自訂這項功能:

參數
RSSI 門檻
預設值
0 分貝
說明
指定以 dBm 為單位的 RSSI 門檻,頻道會受阻。
偵測視窗
預設值
63 秒
說明
指定期間檢查一塊訊號幹擾的期間 (以秒為單位)。範圍:1-63。
忙碌期間
預設值
63 秒
說明
指定偵測視窗中的匯總秒數,如果 RSSI 超過 RSSI 門檻,就會觸發 Jam 偵測。必須小於偵測視窗。範圍:1-63。

API

OpenThread

使用 Jam Detection API,直接在 OpenThread 應用程式中管理 Jam 偵測功能。OpenThread API 提供以下功能:

  • 開始及停止這項功能
  • 查看 Jam 偵測狀態
  • 管理所有參數
  • 擷取目前的 Jam 偵測記錄點陣圖
  • 註冊要在偵測到 Jam 時呼叫回呼函式

in 粉

Spinel 通訊協定可讓主機裝置直接與 NCP 通訊。這個通訊協定會在 openthread/src/lib/spinel/spinel.h 中顯示 Jam 屬性,並提供下列功能:

  • 開始及停止這項功能
  • 查看 Jam 偵測狀態
  • 管理所有參數
  • 擷取目前的 Jam 偵測記錄點陣圖

CLI

OpenThread

沒有與這個功能相關的 OpenThread CLI 指令。

Wpantund

使用 wpanctl CLI 管理 OpenThread NCP 設定的 Jam 偵測功能。wpantund 會在 NCP 重設時保留所有 Jam 偵測設定。

wpanctl 提供下列 wpantund 屬性的存取權:

屬性
JamDetection:Status
格式
布林值
說明
唯讀。Jam 偵測狀態。指出目前是否偵測到信號卡。
JamDetection:Enable
格式
布林值
說明
啟用或停用 Jam 偵測功能。
JamDetection:RssiThreshold
格式
dBm
說明
指定以 dBm 為單位的門檻 RSSI 層級,頻道會遭到封鎖。
JamDetection:Window
格式
說明
指定期間檢查一塊訊號幹擾的期間 (以秒為單位)。範圍:1-63。
JamDetection:BusyPeriod
格式
說明
指定 JamDetection:Window 中的匯總秒數,其中 RSSI 必須高於 JamDetection:RssiThreshold 才能觸發 Jam 偵測。必須小於 JamDetection:Window, 範圍:1-63。
JamDetection:Debug:HistoryBitmap
格式
64 位元值
說明
提供 Jam 偵測狀態記錄以便監控及偵錯。

舉例來說,如要取得 NCP 的 Jam 偵測狀態,請按照下列步驟操作:

sudo wpanctl getprop JamDetection:Status
JamDetection:Status = false

如何在 NCP 上將 Jam 偵測 RSSI 門檻設為 -45 dBm:

sudo wpanctl setprop JamDetection:RssiThreshold -45
sudo wpanctl getprop JamDetection:RssiThreshold
JamDetection:RssiThreshold = -45

如要進一步瞭解 wpantund 屬性,請參閱 wpantund GitHub 存放區一文。