Bluetooth RSSI 스캐닝을 수행하려면 커널/모듈을 수정해야 합니까?

Bluetooth RSSI 스캐닝을 수행하려면 커널/모듈을 수정해야 합니까?

근처의 Bluetooth 장치와 RSSI 값을 표시하는 스캐너를 작성하고 싶습니다. 장치를 페어링하거나 연결하고 싶지도 않습니다. 장치가 완전히 조용해야 합니다. 내가 아는 한, Unix 블루투스 프레임워크(예: bluez)에는 최소한 하나의 연결이 필요합니다. 커널/블루투스 모듈에 의해 결정됩니까?

답변1

쿼리 스캔 결과와 함께 RSSI 정보가 반환되는지 여부는 Bluetooth 어댑터에 따라 다릅니다. 일부에는 이 기능이 포함되어 있고 일부에는 포함되지 않습니다. hciconfig를 사용하여 "RSSI" 문자열을 검색하여 로컬 Bluetooth 어댑터의 기능을 식별할 수 있습니다.

# hciconfig -a hci0 features | grep RSSI
    <park state> <RSSI> <channel quality> <SCO link> <HV2 packets> 
    <interlaced iscan> <interlaced pscan> <inquiry with RSSI> 

하드웨어가 RSSI 쿼리를 지원하는 경우 Bluetooth 어댑터의 커널 드라이버를 수정할 필요가 없습니다. RSSI 정보를 추출하려면 쿼리 스캔 결과를 구문 분석하기 위해 Bluetooth 소켓을 여는 코드를 작성해야 합니다. BTFfind에 Python 구현이 있습니다.https://github.com/joswr1ght/btfind/blob/master/btfind.pyBTPoller 클래스에서.

쿼리 모드 스캐닝은 자동이 아닙니다. "탐색자"가 쿼리 요청 패킷을 보내고 있으므로 스니퍼가 감지할 수 있습니다. 조용한 대안은 Ubertooth One 하드웨어를 사용하여 패킷 스니퍼 모드에서 실행하는 것입니다. 하지만 두 번째 Bluetooth 어댑터가 없으면 Bluetooth 네트워크에 참여할 수 없습니다.

관련 정보