2011-10-02 23 views
5

किसी भी लिनक्स BlueZ/बीटी विशेषज्ञों यहाँ के लिए (कनेक्ट किए बिना?):लिनक्स ब्लूटूथ सिग्नल की शक्ति के साथ l2ping

मैं एक तरह से करने के लिए "पिंग" ज्ञात बीटी उपकरणों (ज्ञात BDADDR) और में वे कर रहे हैं, तो के लिए देख रहा हूँ रेंज मैं अनुमानित सिग्नल शक्ति जानना चाहता हूं।

मुझे पता है कि मैं पहले l2ping चला सकता हूं, फिर डिवाइस से कनेक्शन स्थापित कर सकता हूं और अंत में कनेक्शन को आरएसएसआई या लिंक गुणवत्ता की जांच कर सकता हूं यदि कनेक्शन पहले जोड़े बिना काम करता है।

हालांकि जो भी मैं खोज रहा हूं वह पहले डिवाइस से कनेक्ट किए बिना सिग्नल की शक्ति प्राप्त करने का एक तरीका है। लापरवाही उत्तर पैकेट से सिग्नल ताकत माप सही होगा, लेकिन मुझे नहीं पता कि वह जानकारी बिल्कुल उपलब्ध है या ढेर के साथ पास हो गई है।

उत्तर

5

आप डिवाइस से कनेक्ट किए बिना पूछताछ स्कैन के दौरान आरएसएसआई प्राप्त कर सकते हैं। यहां pybluez का उपयोग कर एक उदाहरण दिया गया है। आप लिनक्स पर ब्लूज़ का उपयोग कर सीधे सी से भी वही कर सकते हैं।

inquiry-with-rssi.py

+0

लिंक और विचार के लिए धन्यवाद, लेकिन इस डिवाइस को खोजने योग्य मोड में होना आवश्यक है जो वे आवश्यक नहीं हैं। मैं उन सभी उपकरणों के bd_addr को जानता हूं जिन्हें मैं पिंग/मापना चाहता हूं, यही कारण है कि मैंने l2ping के साथ शुरुआत की जहां लक्ष्य खोजने योग्य मोड में लक्ष्य की आवश्यकता नहीं है। – Tom

+1

उस स्थिति में, आप hcitool (ब्लूज़ेड स्टैक का हिस्सा) का उपयोग कर सकते हैं। [Hcitool] (http://linuxcommand.org/man_pages/hcitool1.html)। यदि आप 'hcitool cc' करते हैं जो एन्क्रिप्शन/प्रमाणीकरण के बिना कनेक्शन बनाता है, तो आप 'hcitool rssi' का उपयोग कर आरएसएसआई की निगरानी कर सकते हैं। एकमात्र समस्या यह है कि यदि आप प्रमाणित नहीं करते हैं तो कुछ डिवाइस कनेक्शन सक्रिय रहने की अनुमति नहीं दे सकते हैं (जोड़ी)। – TJD

+1

हाँ, यह काम करता है। मैंने अभी तक किए गए दो उपकरणों में से (अनपेक्षित) कनेक्शन मौजूद होने की अनुमति दी ताकि मैं आरएसएसआई/एलक्यू की जांच कर सकूं। तो यह एक कामकाजी समाधान है, लेकिन अगर किसी को कनेक्ट किए बिना और लक्ष्य के बिना किसी तरीके के बारे में पता है, तो भी मुझे यह देखना अच्छा लगेगा। – Tom

2

मैं अपने iPhone 7 और रास्पबेरी Pi के साथ इस कोड का उपयोग कर रहा है और यह बहुत अच्छा काम करता है।

#!/bin/bash 

sudo hcitool cc AA:BB:CC:DD:EE:FF 2> /dev/null 

while true 
do 
    bt=$(hcitool rssi AA:BB:CC:DD:EE:FF 2> /dev/null) 
    if [ "$bt" == "" ]; then 
     sudo hcitool cc AA:BB:CC:DD:EE:FF 2> /dev/null 
     bt=$(hcitool rssi AA:BB:CC:DD:EE:FF 2> /dev/null) 
    fi 

    echo "$bt" 
done 
संबंधित मुद्दे