4

我找不到有关如何执行此操作的任何信息。我正在用 C 语言编写 Intel Edison 和用 Java 编写 Android 手机。我想从 Android 手机配对 Edison。我认为简单的配对(sspmode 1)会起作用,但我在电话上收到一条错误消息,提示错误的引脚没有请求引脚。使用 sspmode 0 时,我被要求输入密码,但不知道它是什么,因为它是在我的 NoInputNoOutput Edison 中随机生成的。我们有其他一切工作。如果我们手动从 Edison 配对,其余代码可以连接并从 Edison 到手机来回发送蓝牙消息。但是从爱迪生与任何路过的随机手机配对是不可接受的。我认为它被称为Bluejacking。

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

任何人都可以为我指出适用于 BlueZ 5 的正确方向吗?我在 5.18。

4

2 回答 2

0

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

编辑simple-agent,把它放在某个地方,使它可执行,把丢失的文件放在同一个目录中并运行它。它必须保持运行才能处于活动状态。

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

先运行 hciconfig hci0 sspmode 0

于 2014-11-15T22:32:21.307 回答
0

请使用 Bluz5.30。最初使用 Bluez 5 启动蓝牙真的很困难。Bluez 4 似乎没问题。我在 LFS 构建中尝试了不同版本的 Bluez 5。即使到 Bluez 5.28 也不能令人满意。现在是 Bluz5.30,有了这个,LFS 文档和很多线索,我可以管理。我觉得 Bluez 是记录最差的对用户不友好的软件之一。我也觉得它非常有问题。它可以挂起强制硬启动系统的机器。我已经看到蓝牙强制 Android 手机也重新启动。因此,获取最新版本的软件很重要。但要使蓝牙扬声器正常工作,需要 Pulseaudio。最好获取最新版本;这里 LFS 文档也很好。所以使用bluetoothctl连接扬声器的过程如下;

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

>> agent on
>> default-agent

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

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

连接后如何自动将音频输出更改为蓝牙扬声器?

对我来说,在一台机器上运行良好,但在另一台机器上使用相同的 LFS 却无法正常工作。最后,它被识别为缺少模块模块设备管理器,参数为 do_routing=1。

加载后一切正常。此特定模块未显示在脉冲配置中。所以我必须找到它并加载,pacmd

load-module module-device-manager do_routing=1 可以在 /etc/pulse 的默认配置文件中添加一行。或者也可以在用户配置文件中添加。现在让新的蓝牙扬声器用于播放声音。对于该问题,使用 pacmd 命令“move-sink-input”。您可以在我发出命令“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/。

启动 obexd 作为一个守护进程是一个问题。当在文本终端(init 3)上尝试 obexd 时,它无法启动,因为它需要一个 dbus 会话,而后者又需要 X 显示。这意味着在开始 obexd 之前需要登录一个 X 会话。如果您在构建 DBUS(--without-x)时禁用 X,则窗口管理器将不起作用。但是有'dus-run-session <命令> [args]'的解决方案。这意味着您可以在系统启动时启动服务 obexd(如蓝牙)。因此,只需打开计算机(如果之前已完成配对、信任等),就可以将文件从手机推送到计算机。

>> connect <device>

第二次以后只是连接很好。可能您可以信任该设备。

>> trust <device>
于 2015-05-15T14:06:06.493 回答