Bluetooth
我需要修改過的核心/模組來進行藍牙 RSSI 掃描嗎?
我想編寫一個掃描器,顯示附近的藍牙設備及其 RSSI 值。我不想配對甚至連接到設備,它必須完全靜音。從我所見,諸如 bluez 之類的 unix 藍牙框架至少需要一個連接。它是由核心/藍牙模組決定的嗎?
RSSI 資訊是否與查詢掃描結果一起返回取決於您的藍牙適配器 - 有些包含此功能,有些則不包含。您可以使用 hciconfig 辨識本地藍牙適配器的功能,搜尋字元串“RSSI”:
# hciconfig -a hci0 features | grep RSSI <park state> <RSSI> <channel quality> <SCO link> <HV2 packets> <interlaced iscan> <interlaced pscan> <inquiry with RSSI>
如果硬體支持 RSSI 查詢,則無需為您的藍牙適配器修改核心驅動程序。您將需要編寫一些程式碼來打開藍牙套接字以解析查詢掃描結果以提取 RSSI 資訊。我在 BTPoller 類中的 BTFind 中有一個 Python 實現https://github.com/joswr1ght/btfind/blob/master/btfind.py。
請注意,查詢模式掃描不是靜默的——“搜尋者”正在發送查詢請求數據包,因此可以被嗅探器檢測到。一個無聲的替代方案是使用 Ubertooth One 硬體並在數據包嗅探器模式下執行,但如果沒有第二個藍牙適配器,您也無法參與藍牙網路。