2015-12-17 51 views
0
hci_le_create_conn(device,htobs(0x0010),htobs(0x0010),0,0, 
        peeraddr,0,15,15,0,3200,1,1,0,1000); 

我得到errno = 5以上表格,這意味着該命令沒有收到,並且沒有在主機控制器中處理。bluez:連接錯誤5

有人能告訴我哪裏出錯了嗎?

我想用我的linux電腦連接我的藍牙智能設備,但它不起作用。 以下是以下功能hci_le_create_conn的參數。

int hci_le_create_conn(int dd, uint16_t interval, uint16_t window, 
     uint8_t initiator_filter, uint8_t peer_bdaddr_type, 
     bdaddr_t peer_bdaddr, uint8_t own_bdaddr_type, 
     uint16_t min_interval, uint16_t max_interval, 
     uint16_t latency, uint16_t supervision_timeout, 
     uint16_t min_ce_length, uint16_t max_ce_length, 
     uint16_t *handle, int to) 
+1

你真的必須使用hci_lib而不是DBUS接口嗎? hci_lib沒有得到官方支持,並沿着這條路線只是一個痛苦的途徑恕我直言(我以前評估過)。 – kaylum

+0

@kaylum - DBUS接口是否允許訪問非標準和/或不屬於配置文件的GATT屬性?當我開始使用Bluez時,我被告知我無法使用DBUS來做到這一點,所以我最終使用了內核調用(這是共享庫最終做的)。 –

+0

@TimTisdall是的。截至兩三個月前。新的[gatt API](http://git.kernel.org/cgit/bluetooth/bluez.git/tree/doc/gatt-api.txt)現在可用。但它在技術上仍然是實驗性的,可通過將-E傳遞給bluetoothd來使用。我已經使用它,它運作良好。 – kaylum

回答

1

使用藍牙守護重置您的硬件:

sudo bluetoothctl

power off

power on

我相信是的BlueZ在淘汰之類的工具hciconfighcitool的過程。更多的信息可以在here找到。

-1

我應該運行運行函數之前sudo hciconfig hci0 downsudo hciconfig hci0 up

無論如何,我成功地連接到我的BLE設備!

+0

我很確定這就是'hciconfig hci0 reset'的功能。 –

+0

通過hciconfig hci0重置的源代碼並在你的程序中實現類似的功能,所以每次你不需要從命令行發出它 – Jagdish

+0

'hciconfig'正在被逐出BlueZ,就像'hcitool'之類的一樣。它使用原始套接字調用。請不要將這些作爲答案。 – Zimano