Jam 偵測

透過集合功能整理內容 你可以依據偏好儲存及分類內容。

前往 GitHub 查看原始碼

如要在任何 OpenThread 節點上針對設定 Jam 偵測功能的設定機制進行設定,請啟用 Jam 偵測功能。

這項功能適用於需要偵測特定管道信號幹擾情況的裝置認證。可設為滿足各類型認證的要求。

運作方式

Jam Detection 會在指定的時間範圍內監控節點的 RSSI (接收訊號強度指標),判斷管道是否卡住了。

Jam 偵測功能啟用時:

  1. Jam 偵測狀態已設為 false
  2. 節點每隔 1 秒多次對 RSSI 進行取樣。
  3. 如果跨越一個間隔的 RSSI 超過各樣本的 RSSI 門檻,則系統會將該 1 秒的間隔視為卡住。
  4. 如果卡住了一秒的間隔時間,不論其時間多寡,都「等於」或「等於」在上述任一「偵測視窗」秒數內設定的「忙碌時間範圍」秒數,該時間點的 Jam 偵測狀態就會設為 true
  5. 如果卡住了一秒的時間間隔,而且該時間的時間間隔少於先前任何時間點的偵測期間秒數設定的「忙碌期間」秒數,那麼在該時間點的 Jam 偵測狀態就會設為 false

歷史點陣圖

OpenThread APIwpantund 屬性中,您可以使用 63 秒的點陣圖來擷取資料。此點陣圖會指出 RSSI 是否超過了前 63 秒的設定的 RSSI 門檻。

例如,您可以擷取下列點陣圖:

0xC248068C416E7FF0

轉換為二進位檔案後,會讓 RSSI 在上述 63 秒內超過設定的 RSSI 門檻:

11000010 01001000 00000110 10001100 01000001 01101110 01111111 11110000

如果偵測期間設為 16 秒,而忙碌時段設為 8 秒,Jam Detection 狀態會在 51 秒後變成 true,因為這是前 16 秒有 RSSI 門檻超過 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 Detection 參數只能透過 OpenThread API、Spinel 通訊協定或 wpanctl (用於控制網路協同程式 (NCP) 的 wpantund 指令列工具) 設定。如果在不啟用後續設定的情況下啟用這項功能,系統就會套用預設值。

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

參數
RSSI 門檻
預設值
0 dBm
說明
指定 dBm 的 RSSI 門檻值,此數字應視頻道卡住而定。
偵測視窗
預設值
63 秒
說明
指定是否要檢查訊號幹擾的視窗 (以秒為單位)。範圍:1-63。
忙碌時段
預設值
63 秒
說明
指定偵測期間的 RSSI 總數,因為 RSSI 必須高於 RSSI 門檻,才能觸發 Jam 偵測。必須小於偵測期間。範圍:1-63。

API

OpenThread

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

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

尖尾

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 偵測狀態。指出目前是否偵測到訊號 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 存放區一文。