问题标签 [hci]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3581 浏览

bluetooth - 最大数量 使用 BlueZ 的 BLE 连接

Q1。使用 BlueZ 5.34 连接到 BLE 外围设备时,BLE Central Device 是否存在连接限制?

我的问题是使用 BlueZ 而非白名单的一般连接功能。

Q2。如果没有。连接取决于控制器。有没有办法找到最大限制?

Q3。主机 BlueZ 或 Bluedroid 是否/可以对最大数量添加限制。控制器支持的 LE 连接数?

Q4。如果 LE 设备有连接限制,那么作者所说的“无固有限制”是什么意思,如下段引用的块。

Robin Heydon BLE 开发人员手册中的信息

这也意味着给定设备可以同时与之通信的设备数量不应该有固有的限制。如果一个设备想与另一个设备通信,那么它应该能够做到这一点,不用担心只有七个可能的从设备可以同时连接,这是经典蓝牙施加的限制。

实验:如下面的参考资料所示,我还看到了使用不同控制器时的各种 LE 白名单大小,32 个用于可插拔的 usb4btle,24 个用于内部蓝牙适配器。(使用命令:hcitool lewlsz)在我的测试设置中,我能够连接到 12 个 BLE 设备。(我最多有 12 个 BLE 外围设备)。我在 Ubuntu 15.04 中使用 BlueZ 5.34 并使用了可插入的 usbbt4le 加密狗。

0 投票
1 回答
189 浏览

linux - 根据数据包类型拆分 TTY 设备

我有一个 TTY 设备设置来监控组合蓝牙/GPS 芯片的串行端口。我正在使用 blueZ 来实现蓝牙堆栈并做所有与蓝牙相关的事情。通过此端口发送的数据都是 HCI 数据包,甚至是 GPS 数据。GPS 数据包装在 HCI 类型的数据包中0xXX(由 HCI 数据包的第一个字节表示)。

我想知道是否已经有任何内核工具可以将 TTY 设备分成两个单独的设备。/dev/ttyS0例如,我想使用 blueZ读取和写入所有 HCI 数据包(GPS 数据包除外) 。然后,我想要另一个 TTY 设备来读取所有类型的 HCI 数据包0xXX,比如说/dev/ttyGPS

最后,我正在寻找将某种类型的所有 HCI 数据包过滤到不同的“伪”TTY 设备的东西。如果这不可能,我将需要使用 hcidump 解析应用程序空间中的所有 HCI 数据包。虽然这是可能的,但拥有两个 TTY 设备会因为之前完成的工作而大大减少应用程序开发。

0 投票
3 回答
11848 浏览

linux - 低功耗蓝牙:被动扫描 - 但不会永远循环?

参考这篇文章,我成功地获得了一个 Linux 设备(A Raspberry Pi Model A+)将我的蓝牙 4.0 USB 加密狗切换到“广告”状态:

或者

我使用运行“LightBlue Explorer”应用程序的 Ipod 验证了这一点。

到目前为止一切都很好。

从另一个也有蓝牙 4.0 加密狗的 Linux 机器(另一个 Pi);我还可以使用以下命令查看设备:

它返回如下内容:

但是命令循环不断刷新设备列表。

所以我的主要问题是:是否有可以运行的命令变体,听(比如说)5 秒;返回它发现的广告设备列表并退出?

我想构建一个简单的脚本(理想情况下是 Python 程序),它会定期唤醒,(被动地)监听广告流量几秒钟,然后返回源设备列表。

另外:我不确定为什么该命令对其找到的设备显示“未知”。(而 LightBlue 确实识别了名称)。

0 投票
1 回答
663 浏览

linux - hci_send_req api 实现中的事件数据包标头如何获取?

嗨,我正在通过 hci.c 文件中的 hci_send_req 实现。在向控制器发送 hci 命令后在此函数中。控制器发送事件包。通过 读取缓冲区中的事件包后 read(dd, buf, sizeof(buf)) (dd is hci socket descriptor),现在我们需要事件包头并获取事件包头,buf 被筛选 1 个字节。为什么??

请让我知道这件事。谢谢。

0 投票
1 回答
2669 浏览

raspberry-pi - HCI LE 连接 - 不允许命令

我通过 node.js 使用 noble & bleno 从 Rasbian 连接到 BLE 外围设备,但出现问题并且无法建立连接。我尝试了多个不同的 BLE 加密狗,它们都以相同的方式失败。目前我有一个 CSR 4.0 附加。当从 OS X、iOS 或 Android 进行连接时,连接工作得很好。

这是 HCI 转储:

现在,当我尝试通过连接hcitool leccgatttool建立连接时 - 但尝试写入特征值失败时Characteristic Write Request failed: Attribute requires authentication before read/write. 这有关系吗?

我在Linux raspberrypi 4.1.13+ #826 PREEMPT Fri Nov 13 20:13:22 GMT 2015 armv6l GNU/Linux

0 投票
1 回答
1320 浏览

bluetooth - 蓝牙 A2DP 和 RFCOMM

我正在尝试使用一些附加组件制作我自己的蓝牙扬声器。我的索尼安卓手机将充当源,而带有 USB 蓝牙加密狗的树莓派将充当接收器。

我已经使用 A2DP 配置文件设置了蓝牙加密狗,并且正在运行环回脚本以将传入的音频链接到连接的声卡。

接下来,我想添加一些具有读/写变量的功能,并通过与 RFCOMM 配置文件相同的蓝牙连接向树莓派发送命令。

当我使用“sdptool add sp”打开RFCOMM连接,然后是“sudo rfcomm listen hci0”并尝试使用android蓝牙模拟器连接我的手机时,模拟器说连接已打开。之后,模拟器立即说连接已关闭。树莓派甚至不会注意到正在打开或关闭的连接。

我已经阅读了这篇文章,其中指出我的目标是可能的,对我来说唯一的问题是如何。

所以我的问题是:

我是否能够为 A2DP 和 RFCOMM 配置文件使用已经配对的蓝牙连接,以及如何使用 HCI 设置我的设置。

如果有人可以通过套接字发送命令,例如连接到我的树莓派,我当然想尝试一下。

- - 编辑 - -

所以上周末我再次尝试解决我的蓝牙问题。我首先尝试从命令行设置 RFCOMM 连接,它按预期工作。

接下来我断开连接,将蓝牙配置文件设置为 0x20041C(便携式音频)并再次设置 RRCOMM 连接。我不太清楚上次尝试时出了什么问题,但这次它确实有效。我什至能够将我的安卓手机作为音频源连接到我的带有pulseaudio的USB声卡。

所以,问题解决了,我猜。

0 投票
1 回答
741 浏览

bluetooth-lowenergy - 特定 UUID 的 HCI 主动蓝牙 LE 扫描/扫描响应?

我正在寻找一种仅针对特定 MAC / UUID 进行活动蓝牙 LE 扫描的方法。换句话说:我只想要特定设备的扫描响应。不应要求所有其他(被动)扫描设备进行扫描响应(以节省电量)。

我看到 HCI 有一个 Whitelist 和一个 Resolvinglist:

  • 白名单会限制对白名单设备的扫描响应吗?
  • 解决列表有什么用?

如果这些选项都不起作用:如果我开始被动扫描,有没有办法通过 HCI 请求特定设备的扫描响应?

0 投票
0 回答
850 浏览

bluetooth - l2ping蓝牙连接最大链接数

我有一个关于使用蓝牙加密狗的最大并发连接数的问题。我的系统基于 10 Raspberry Pi-es 2,我想要完成的是在它们之间为一些研究项目建立蓝牙低功耗连接。我的蓝牙适配器是:Cambridge Silicon Radio, Ltd 蓝牙适配器(HCI 模式)。当我为蓝牙模式(Bluez 等)设置覆盆子时,一切正常,每个覆盆子都可以扫描其他覆盆子(hcitool 扫描),但是当我尝试从其中一个覆盆子中 ping 其他覆盆子时,我只能成功从 7 台设备获得响应,其余设备报告“错误:连接错误:链接过多”。我想知道这是与硬件相关的限制还是技术限制,因为我在一些文章中读到蓝牙在制作微微网时仅支持 8 个设备。

0 投票
1 回答
1227 浏览

xml - 错误!关于我使用的所选 XPath 有什么建议吗?

我正在使用 HANA 云集成来构建集成流 (iFlow)。但是,任何有任何 XML 经验的人都可能对我有所帮助。

我已经构建了一个非常简单的集成流程,它与 openweathermap API 对话,提取“天气”数据,然后通过电子邮件发送特定的数据点。这是我在下面使用的 XML:

为此,需要提取根元素weather中的元素并使用该字段。这是由 XPath 字符串形成的。最后一个更新字段也需要传递到集成中的下一个进程,并且可以以相同的方式提取。currentvalue/current/weather/@value

我创建了两个标题属性,它们是名为currentConditionsand的字符串currentReport,它们指向 XPath 属性/current/weather/@value/current/lastupdate/@value. 在 XPath 中,@指的是属性而不是元素。还要记住制作这些标头值,以便可以将它们传递给外部服务调用。如果它们是属性,它们将不会被发送到外部进程。但是,我收到此错误:

org.apache.camel.builder.xml.InvalidXPathExpression:无效的 xpath:/current/weather/@value。原因:javax.xml.xpath.XPathExpressionException:转换类javax.xml.transform.sax.SAXSource的节点失败:org.xml.sax.SAXParseException;行号:1;列号:1;序言中不允许内容,原因:javax.xml.xpath.XPathExpressionException:转换类 javax.xml.transform.sax.SAXSource 的节点失败:org.xml.sax.SAXParseException;行号:1;列号:1;序言中不能有内容。

有什么建议么?

0 投票
2 回答
2420 浏览

pipe - grep hcitool lescan 输出

我如何 grep 'hcitool lescan' 的输出,或者就此而言,将它传递给任何东西。似乎当我从“hcitool lescan”管道传输任何内容时,我没有得到任何输出。