2014-03-06 237 views
4

我從具有以下配置源安裝的bluez-5.15:藍牙LE上Raspbian

$ ./configure --prefix=/usr --mandir=/usr/share/man --sysconfdir=/etc \ 
--localstatedir=/var --libexecdir=/lib --disable-systemd 

然後我不得不復制gatttool手動到/ usr /本地/ bin目錄

$ sudo cp attrib/gatttool /usr/local/bin/ 

我重新啓動了樹莓派,並試圖下面連接到我的BLE裝置:

$ sudo hciconfig hci0 up 

$ sudo hcitool lescan 
LE Scan ... 
EA:FB:B5:CE:B0:13 DfuTarg 

$ sudo hcitool lewladd EA:FB:B5:CE:B0:13 

$ sudo hcitool lecc EA:FB:B5:CE:B0:13 
Could not create connection: Input/output error 

於是我嘗試用gatttool連接:

$ gatttool -b EA:FB:B5:CE:B0:13 --interactive 
[EA:FB:B5:CE:B0:13][LE]> connect 
Attempting to connect to EA:FB:B5:CE:B0:13 
Error: connect error: Device or resource busy (16) 
[EA:FB:B5:CE:B0:13][LE]> 

缺少什麼我在這裏 - 這是一個配置問題?錯誤是什麼意思?

+0

這是一個USB加密狗嗎?如果你嘗試拔掉它並重新插入它,它是否可以修復它? –

回答

11

首先,我用我的配置和Raspbian(或者更具體地說,Debian的)同事談到他推薦了以下配置設置:

./configure --prefix=/usr --mandir=/usr/share/man --sysconfdir=/etc --localstatedir=/var --enable-library --with-systemdsystemunitdir=/lib/systemd/system --with-systemduserunitdir=/usr/lib/systemd 

後來,經過進一步檢查,這裏我是怎麼了能夠成功連接。所以發生了什麼事情是我試圖連接到的設備(基於NRF的BLE設備)需要將LE地址標誌設置爲「隨機」。請看下圖:

gatttool -t random -b EA:FB:B5:CE:B0:13 -I 

那麼結果:

[EA:FB:B5:CE:B0:13][LE]> connect 
Attempting to connect to EA:FB:B5:CE:B0:13 
Connection successful 
[EA:FB:B5:CE:B0:13][LE]> characteristics 
handle: 0x0002, char properties: 0x0a, char value handle: 0x0003, uuid: 00002a00 
-0000-1000-8000-00805f9b34fb 

好哇!此外,可能需要將安全級別設置爲低於高的級別:

[EA:FB:B5:CE:B0:13][LE]> sec-level medium 
+0

當我嘗試使用'-t'參數時,我總是收到錯誤:'未知選項-t'。這可能是什麼原因? –

+0

檢查bluez的版本。我爲Debian使用5.15。 – Sekkou527

+0

沒關係,我重新安裝了最新版本的bluez,現在它運行良好。不管怎麼說,還是要謝謝你! –

5

我與配合bluez 5.15

  1. 經驗,確保你有BLE裝置沒有連接(請與hcitool CON)。
  2. 不是運行hcitool lecc
  3. 開始gatttool喜歡你的問題。
  4. gatttool運行連接命令。如果該命令掛起,則按設備上的按鈕(即,連接到SensorTag時有時需要)。

我相信Bluez的早期版本需要hcitool lecc步驟,但現在不是這樣了。

+0

感謝您的幫助,但我相信我解決了連接問題。我終於能夠使用gatttool中的隨機地址標誌進行連接。此外,我的設備沒有按鈕(我不起訴SensorTag)。 – Sekkou527