我正在嘗試在我的Linux計算機上創建藍牙低功耗外設(目標是通過藍牙從iPhone發送數據)。我目前使用工具hciconfig
,hcitool
和hcidump
。使用HCITool廣告藍牙LE服務
我目前的實驗是用一個特定的UUID通告一個服務,iOS CoreBluetooth庫會選擇。 (注意:我沒有試圖創建一個iBeacon)。
現在,它實際上就像一個單一的命令那樣簡單,正在擾亂我。
hcitool -i hci0 cmd 0x08 0x0008 15 02 01 1a 11 07 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f 50
我覺得應該做的是以下幾點:
- 0x08的:設置組到BLE
- ×0008:設定命令HCI_LE_Set_Advertising_Data
- 爲0x15 :設置th中重要字節的長度e報頭至21(3字節的標誌分組,18字節用於服務結構)
- 0×02:的標誌結構的長度設置爲2字節
- 0×01:設置結構類別以AD標誌
0X1A:標誌值:
bit 0 (OFF) LE Limited Discoverable Mode bit 1 (ON) LE General Discoverable Mode bit 2 (OFF) BR/EDR Not Supported bit 3 (ON) Simultaneous LE and BR/EDR to Same Device Capable (controller) bit 4 (ON) Simultaneous LE and BR/EDR to Same Device Capable (Host)
(標誌結束)
- 爲0x11設置萊恩服務結構的GTH到17個字節
- 0x07的設置結構類型爲128位完整的服務UUID列表
- 的0x41 ......爲0x50設置測試服務的UUID到ABCDEFGHIJKLMNOP
至於我能請參閱hcidump
,它正確執行,看起來是我想要的。但它被拒絕與錯誤:
LE Set Advertising Data (0x08|0x0008) ncmd 1
status 0x12
Error: Invalid HCI Command Parameters
我花了整整一天,試圖讓它正確。有人熟練看我做錯了什麼嗎?這是宣傳服務的正確方法嗎?
(上下文感興趣的讀者:我已經成功地完成了我想在NodeJs中使用Bleno庫做的事情,但是這並不適合我們系統中的大圖,直接使用HCITool進行實驗並且將在稍後用Python編寫)
我向你的專業技能屈服。我曾嘗試零填充,但我猜想當時還有其他錯誤。 – Joakim
對於hcidump --raw部分,我使用的是-X,它以ascii和hex打印......會不會有使用raw的優勢? – Joakim
-X更好,我猜:) –