目标:使用BlueZ和蓝牙4LE加密狗创建一个外围设备,宣传相当于"Hello World"的蓝牙.
我在哪里:我目前有BlueZ堆栈设置和下载,我可以使用hci工具识别并看到蓝牙适配器.我已经使用了hciconfig leadv,但我只是不太了解它/了解正在发生的事情.
我认为我需要什么帮助:我需要进入下一步.如果有人能指出我对一个好的资源,请指导我,或任何事情,非常感谢.如果我需要做额外的腿(搜索)工作,我可以,但我已经用我能想到的这个问题的许多不同衍生物来搜索Google和SO.
*我将此标记为CoreBluetooth,希望可能是iOS开发者在某些时候对此进行了修改.
编辑:回应评论,说明我的最终目标似乎是谨慎的.我最终希望通过加密狗广告最简单的简单消息/信号,并在iOS设备(CoreBluetooth)上进行选择.我已经能够让iOS方面运行良好(与Linux方面相比,大量文档)但对我来说困难的部分是将此适配器设置为外设.BlueZ堆栈对我来说是一个可怕的谜.
编辑:经过更多的挖掘,我最终偶然发现了这篇文章:Raspberry Pi蓝牙4.0连接.这使我走向GATT服务器的主题,我将继续追求这个话题.
编辑:好吧,所以我继续学习.在过去的几天里,我深入研究了hci*,sdptool和gatttool工具.我已经到了能够设置适配器做广告的程度,"hciconfig hci0 leadv".此时,我可以成功"看到"适配器,但我实际上无法读取任何内容.我甚至没有看到友好的名字.我将保持卡车运输,但一如既往,任何帮助/建议都非常受欢迎.
编辑:相关链接,关于iOS的蓝牙LE的可靠概述. https://developer.apple.com/library/content/documentation/NetworkingInternetWeb/Conceptual/CoreBluetooth_concepts/AboutCoreBluetooth/Introduction.html#//apple_ref/doc/uid/TP40013257-CH1-SW1
最后编辑:嘿所有,这个链接涵盖了如何使用Raspberry Pi + BlueZ创建iBeacon ... http://www.wadewegner.com/2014/05/create-an-ibeacon-transmitter-with-the-raspberry -pi /
我正在尝试通过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命令不能发出多次?
如何查看连接的蓝牙设备的电池电量?该设备显示Android上的电池电量,因此我假设该设备支持基于GATT的电池服务.但是,通过在bluetoothctl中输入"menu gatt",然后使用"list-attributes [dev]"列出设备的GATT属性,则不显示任何内容.
一个类似的问题被张贴到SO但OP似乎已经发现,不为我工作的解决方案.当我在bluetoothctl中运行"info [dev]"时,我没有看到电池服务的UUID.
我更喜欢在命令行上运行并且与驱动程序无关的解决方案.
如果这个问题应该发布在SuperUser上,请告诉我.
有没有办法在Linux中配对设备而不需要引脚(出于测试目的,所以我需要在没有人工交互的情况下完成,假设你有root权限)?
bluez-simple-agent似乎需要一个引脚,除了一些简单的设备,如鼠标.
我正在使用Linux的蓝牙低功耗调制解调器.我正在使用命令行选项,即hcitool
.我能够使用命令查找设备:$ hcitool scan
它对我来说很好,我也可以使用以下方式广播我的设备:
sudo hciconfig hci0 leadv
Run Code Online (Sandbox Code Playgroud)
它也工作正常.但我想将调制解调器设备的服务和特性添加到其他设备中.我试过了,sdptool add
但它不适合我.有没有人知道如何使用ubuntu中的命令行工具将服务和特性添加到外设?
编辑:我的调制解调器正在广播,但无法探索其他BLE设备的服务和特性.现在我可以使用设置设备的名称hcio name command
编辑:现在我可以通过同时运行sudo hcidump
命令来呈现服务和特性.但我无法追踪我从哪里获得这些服务和特征.一个明确的观察是那些服务是从机器渲染的.
目标
我正在开发一个运行Linux的简单设备.它具有BLE功能,我目前正在使用bluez 5.8.
我想使用iPhone触发此设备上的操作.
什么有效:
我在linux上设置了这样的蓝牙设备(感谢这个问题):
# activate bluetooth
hciconfig hci0 up
# set advertise data: "hello world"
hcitool -i hci0 cmd 0x08 0x0008 48 45 4c 4c 4f 57 4f 52 4c 44
# start advertising as connectable
hciconfig hci0 leadv 0
Run Code Online (Sandbox Code Playgroud)
iOS代码很简单:
- (int) scanForPeripherals
{
if (self->centralManager.state != CBCentralManagerStatePoweredOn) {
return -1;
}
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:NO], CBCentralManagerScanOptionAllowDuplicatesKey, nil];
[self.centralManager scanForPeripheralsWithServices:nil options:options];
return 0;
}
- (void)centralManagerDidUpdateState:(CBCentralManager *)central
{
if (central.state …
Run Code Online (Sandbox Code Playgroud) 我买了一个FitBit拉链.此设备使用蓝牙4.0 LE.我想至少通过bluez连接到它.如果成功,我想知道我能找出多少协议.
我使用的是联想P500 Ideapad,它集成了对蓝牙4.0的支持.它似乎工作(种类)
当我做:
hcitool lescan
Run Code Online (Sandbox Code Playgroud)
我能够找到设备的蓝牙地址,虽然可能无关紧要,但是:CF:D9:24:DB:F4:7B
现在,我在另一个问题中读到:蓝牙低功耗:在linux中监听通知/指示我可以收听通知和其他协议功能.我曾经使用旧蓝牙,但我没有使用蓝牙LE的经验.
我试图使用hcitool lecc
或gatttool
连接到设备时遇到困难.连接超时并且似乎在Linux机器上使蓝牙处于不良状态.我能够通过重新加载蓝牙相关的内核模块来解决这个问题.
任何提示都表示赞赏.我现在正在尝试最新的bluez.
我想使用任何手机通过蓝牙Classic与串行端口协议(SPP)连接到物联网设备.物联网设备没有屏幕,没有键盘,只要连接电话知道一个秘密密码,就应该自动接受连接(即,我不想强迫每次都进入物联网设备进行配对一部新手机试图连接).
这些是我到目前为止在物联网设备上运行的命令:
# Make the device discoverable:
hciconfig hci0 piscan
# Register SPP:
sdptool add --channel=22 SP
# Start rfcomm:
rfcomm -r watch /dev/rfcomm0 22
Run Code Online (Sandbox Code Playgroud)
不幸的是,我找不到任何设置PIN的方法,当我尝试连接手机时,配对失败了.此外,该设备只能在短时间内被发现.
如何配置物联网设备的蓝牙堆栈(运行最近的Bluez)以与任何知道给定PIN的电话自动配对,以及如何使发现期间永恒?