如何让bluez 5接受固定引脚?

问题描述 投票:4回答:2

我怎么也找不到如何做到这一点。我正在使用C语言编写英特尔Edison和使用Java编写Android手机。我想从Android手机配对爱迪生。我认为简单的配对(sspmode 1)可以工作,但我在手机上收到一条错误消息,指出没有请求引脚的错误引脚。使用sspmode 0我会被要求输入密码但不知道它是什么,因为它是在我的NoInputNoOutput Edison中随机生成的。我们还有其他一切工作。如果我们手动配对爱迪生,其余的代码可以连接并从爱迪生到手机来回发送蓝牙信息。但是,从爱迪生到任何随机电话的配对都是不可接受的。我认为这叫做Bluejacking。

我看过一些关于使用简单代理的帖子,但坦率地说,我理解的是BlueZ安全性在4到5之间变化很大,我看到的大多数都不起作用。我也看到从4到5的切换打破了很多系统,所以我不觉得孤单。我会尝试,但简单代理不在爱迪生,我没有找到安装它的程序。而且我不知道我能找到的小版本是否适用于版本5,因为它都引用了版本4,我感觉有点迷失。

任何人都可以指出我正确的方向可以在BlueZ 5上运行吗?我在5.18。

c linux bluetooth intel-edison
2个回答
0
投票

在本文的最后一篇文章中提出的解决方案确实有效http://www.linuxquestions.org/questions/linux-wireless-networking-41/setting-up-bluez-with-a-passkey-pin-to-be-used-as-headset-for-iphone-816003/

编辑简单代理,将其放在某处,使其可执行,将丢失的文件放在同一目录中并运行它。必须保持运行才能使其处于活动状态。

就我而言,丢失的文件是bluezutils.py。

首先运行hciconfig hci0 sspmode 0


0
投票

Pl使用Bluz5.30。最初使用Bluez 5开启蓝牙真的很难。看起来Bluez 4没问题。我在LFS版本上尝试过不同版本的Bluez 5。即使达到Bluez 5.28也不尽如人意。现在它是Bluz5.30,有了这个,LFS doc和很多路径,我可以管理。我觉得Bluez是最糟糕的用户不友好软件之一。我也觉得这很麻烦。它可以挂起机器强制硬启动系统。我见过蓝牙强迫Android手机重启。因此,获取最新版本的软件非常重要。但要使蓝牙音箱工作需要Pulseaudio。最好是获得最新版本;这里也LFS文件很好。所以连接扬声器的过程是使用bluetoothctl如下;

>> power on
>> scan on
>> pairable on
>> pair <device>

>> agent on
>> default-agent

现在实际的声音。这里pactl和pacmd很有用。 paplay -d可以测试设备。使用pacmd和命令'list-sinks'可以显示设备。

pacmd - > list-modules可以显示加载的模块。

如何在连接时自动将音频输出更改为蓝牙音箱?

对于我在一台机器上它工作正常,在另一台机器上使用相同的LFS它不能正常工作。最后,它被确定为缺少模块模块 - 设备管理器,arg do_routing = 1。

一旦装好,一切都很好。脉冲配置中未显示该特定模块。所以我必须找到并加载,pacmd

load-module module-device-manager do_routing = 1可以在/etc/pulse中的默认配置文件中添加一行。或者也可以在用户配置文件中添加一行。现在可以使用新的蓝牙音箱播放声音。对于那个问题,命令'move-sink-input'使用pacmd。你可以找到我发出命令'list-sinks'的接收器名称。如果您的扬声器没有连接,可能是它已连接到其他地方。如果不是这样,请删除设备;扫描;对;并使用bluetoothctl连接。我担心如何使用蓝牙进行文件传输(Bluez5)。实际上,LFS文档或NET中的一般信息很少。对于Bluez来说,这是非常不幸的。他们不提供任何真实的用户文档或网络中没有任何内容。所以步骤如下:您需要安装OBEX库。然后你构建Bluez5(如果还没有完成)。它将安装obexd。安装完成后,您可以在$ PREFIX / libexec / bluetooth / obexd中找到obexd。这也是您找到bluetoothd的地方。一般在/ usr / sbin中为bluetoothd建立链接。也可以为obexd建立类似的链接。一旦启动bluetoothd和obexd,你可以在bluetoothctl-> show中找到对象传输配置文件。如果你需要一个手机将对象推送到计算机,你需要使用选项'-a'和'-r'运行obexd。如果'-a'没有给出电话将无法发送文件。现在如何将文件从计算机推送到手机。为此你需要obexctl,我不认为它是一个完成的工具,并且在我们构建Bluez 5时它不会被安装。我在源代码树中看到它并复制到/ usr / bin /。它应该用于连接电话,当建立连接时,可以“发送”,你必须接受电话中的请求。

作为deamon开始obexd是一个问题。当在文本终端(init 3)上尝试obexd时,它无法启动,因为它需要一个dbus会话,而后者又需要X显示。这意味着在启动obexd之前需要登录X seession。如果您在构建DBUS(--without-x)时不能使用X,那么Window Managers将无法工作。但是有'dus-run-session <command> [args]'的解决方案。这意味着您可以在系统启动时启动服务obexd(如bluetoothd)。因此,只需打开计算机(如果配对,信任等.​​..之前已完成),就可以将文件从手机推送到计算机。

>> connect <device>

第二次以后连接就好了。可能你可以相信这个设备。

>> trust <device>
© www.soinside.com 2019 - 2024. All rights reserved.