我想用一些蓝牙低能量开发套件创建我自己的iBeacon.Apple还没有发布iBeacons规范,但是一些硬件开发商已经反向使用AirLocate示例代码设计iBeacon并开始销售iBeacon开发套件.
那么iBeacon蓝牙配置文件是什么?
Bluetooth Low Energy使用GATT进行LE配置文件服务发现.所以我认为我们需要知道属性句柄,属性类型,属性值,以及iBeacon属性的属性权限.那么,对于UUID为E2C56DB5-DFFB-48D2-B060-D0F5A71096E0的iBeacon,主要值为1,次要值为1,蓝牙GATT配置文件服务是什么?
这是我在Apple论坛和文档讨论中做出的一些假设.
您只需要查看蓝牙外围设备的配置文件服务(GATT)即可知道它是iBeacon.
Major和Minor键在此配置文件服务中的某处编码
有些公司使用iBeacon Dev Kits似乎已经有了这个数字:
希望我们能及时在Bluetooth.org上发布这样的个人资料:https://www.bluetooth.org/en-us/specification/adopted-specifications
reverse-engineering bluetooth ios bluetooth-lowenergy ibeacon
我正在尝试通过Linux机器与BLE模块通信(该模块正在运行心率配置文件).到目前为止,除了听取通知和指示(例如,听取心率测量通知)之外,我已经能够做我需要的一切.我正在使用内核版本3.5和bluez-5.3.
到目前为止使用的成功命令:
hcitool lescan
hcitool lecc
gatttool -b <Mac Address> --primary
gatttool -b <MAC Address> --characteristics
gatttool -b <MAC Address> --char-read
gatttool -b <MAC Address> --char-desc
gatttool -b <MAC Address> --interactive
Run Code Online (Sandbox Code Playgroud)
命令失败:
gatttool -b <MAC Address> --listen
Run Code Online (Sandbox Code Playgroud)
任何帮助是极大的赞赏.
我想基于BlueZ构建ac文件,但在我的系统中似乎没有bluetooth.h文件.
fatal error: bluetooth/bluetooth.h: No such file or directory
Run Code Online (Sandbox Code Playgroud)
我确信蓝牙加密狗运行正常,我已经成功构建了Bluez.
更新
对于我的情况,我在/ user/include/bluetooth文件夹中找到bluetooth.h
我正在尝试使用覆盆子pi上的hcitool做一个lescan.
该命令打印出来
Set scan parameters failed: Input/output error.
Run Code Online (Sandbox Code Playgroud)
我不确定,这里究竟发生了什么.我的iPhone在这里做广告.
我正在使用IOGear的BLE加密狗.
但是,如果我重新启动我的机器,它会在我发出lescan
命令后显示一个MAC地址,并在我发出一次lescan命令后再开始显示相同的错误.是不是,lescan命令不能发出多次?
我正在使用Linux的蓝牙低功耗调制解调器.我正在使用命令行选项,即hcitool
.我能够使用命令查找设备:$ hcitool scan
它对我来说很好,我也可以使用以下方式广播我的设备:
sudo hciconfig hci0 leadv
Run Code Online (Sandbox Code Playgroud)
它也工作正常.但我想将调制解调器设备的服务和特性添加到其他设备中.我试过了,sdptool add
但它不适合我.有没有人知道如何使用ubuntu中的命令行工具将服务和特性添加到外设?
编辑:我的调制解调器正在广播,但无法探索其他BLE设备的服务和特性.现在我可以使用设置设备的名称hcio name command
编辑:现在我可以通过同时运行sudo hcidump
命令来呈现服务和特性.但我无法追踪我从哪里获得这些服务和特征.一个明确的观察是那些服务是从机器渲染的.
您好有什么办法可以通过linux中的bluetooth le设备获得近乎信号强度?或者nodejs,php或mono的任何好的库(我确实知道一些c ++或python但更愿意说它们),如果一个工具不存在但是很容易写
谢谢
我们正在做下面的过程做对与BLE装置.
Connect()+ discoverServices()+ Pairing(Bonding).
有时Android操作系统以奇怪的方式取消配对我们的BT设备,即:
当设备成功配对的ACTION_BOND_STATE是如下改变.
[6:19:28 PM] Himen Patel:04-09 18:18:27.325:D/BluetoothGatt(8380):onCharacteristicWrite() - Device = C2:69:E9:57:93:A4 UUID = 860b2c07-e3c5- 11e2-a28f-0800200c9a66状态= 5 04-09 18:18:27.365:E/millisUntilFinished(8380):millisUntilFinished = 15 04-09 18:18:28.105:E/BelwithDeviceActor(8380):债券状态改为:C2: 69:E9:57:93:A4新状态:11上一个:10
04-09 18:18:28.105:E/millisUntilFinished(8380):millisUntilFinished = 20 04-09 18:18:29.135:E/millisUntilFinished(8380):millisUntilFinished = 18 04-09 18:18:30.135:E/millisUntilFinished (8380):millisUntilFinished = 17 04-09 18:18:31.145:E/millisUntilFinished(8380):millisUntilFinished = 16 04-09 18:18:32.145:E/millisUntilFinished(8380):millisUntilFinished = 15
04-09 18:18:33.105:D/BluetoothGatt(8380):onCharacteristicWrite() - Device = C2:69:E9:57:93:A4 UUID = 032a0000-0000-0000-0000-000000000000 Status = 137 04-09 18:18:33.115:E/BelwithDeviceActor(8380):C2:69:E9:57:93:粘结状态改变A4新的状态:12前:11
04-09 18:18:33.115:I/System.out(8380):unregisterReceiver true
现在,当操作系统以奇怪的方式删除配对时,ACTION_BOND_STATE将如下更改..... 债券状态改为:C2:69:E9:57:93:A4新状态:10.
我们也在我们的APP中立即获得了act = android.bluetooth.device.action.ACL_DISCONNECTED flg = 0x4000010的事件.
这里有什么重要的,在这一点上,我们失去了与设备的配对,受保护的特性对我们来说不再适用.如果我们使用系统设置应用程序或BluetoothAdapter :: …
我想知道是否有办法从Linux命令行设置gatt服务器.我知道BlueZ gatttool命令允许你充当gatt客户端并询问远程gatt服务器,但是,我不认为这个工具可以用来设置服务器.
我想要实现的是一个gatt服务器,从命令行创建,可以被任何中央设备(例如iOS或Android设备)查询,以连接到GATT服务器,发现服务和特性,并操纵数据.特点.
例:
Gatt Server具有1个服务,包含3个特征.
我使用的是内核版本3.11.0和BlueZ 5.19
我正在尝试在Linux机器上使用BlueZ堆栈来创建具有自定义服务和特征的GATT服务器.最终目标是使用任何中央设备(例如iOS或Android设备)连接到GATT服务器,发现服务和特征,并操纵特征中的数据.
例:
从中央设备,我应该看到外围设备,连接到它并发现一个服务(0xFFFF),它有三个特性(0xAAAA,0xBBBB,0xCCCC).然后,我应该能够读取0xAAAA的值,读取和写入0xBBBB的值,并启用0xCCCC上的通知.
请注意,我知道存在类似的问题,但它只解释了如何将外围设备用作广告客户.另一个解决的问题解释了如何创建GATT服务器,但没有解释如何使用特征的属性(例如可读,可通知等),或者我可能缺少某些东西.
先感谢您.
关于如何将USB蓝牙4加密狗设置为iBeacon,有一篇着名的博客文章.它归结为这个神奇的命令:
sudo hcitool -i hci0 cmd 0x08 0x0008 1e 02 01 1a 1a ff 4c 00 02 15 e2 c5 6d b5 df fb 48 d2 b0 60 d0 f5 a7 10 96 e0 00 00 00 00 c5 00 00 00 00 00 00 00 00 00 00 00 00 00
Run Code Online (Sandbox Code Playgroud)
这个例子的问题是它是如此不透明,很难以任何更通用的格式使用它.我已经能够分开一点:
sudo hcitool -i hci0 cmd
Run Code Online (Sandbox Code Playgroud)
将hci命令发送到hci0设备
0x08 0x0008
Run Code Online (Sandbox Code Playgroud)
设置广告包是神奇的,其他stackoverflow命令说"只是使用它,不要问
1e
Run Code Online (Sandbox Code Playgroud)
是以字节为单位的数据包后面的整个ENTIRE的长度
02 01 1a 1a
Run Code Online (Sandbox Code Playgroud)
是用于设置广告包的标志(详情请求)
ff 4c 00 ...
Run Code Online (Sandbox Code Playgroud)
是编码iBeacon信息的"公司特定数据"
我试图做的是将"FF ..."字节替换为用于设置NAME参数"04 09 41 42 43"的操作码(应将其设置为ABC),但这不起作用. …