繁体   English   中英

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

[英]How do I get bluez 5 to accept a fixed pin?

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

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

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

本文最后一篇文章中提供的解决方案可以正常工作http://www.linuxquestions.org/questions/linux-wireless-networking-41/setting-up-bluez-with-a-passkey-pin-to-be-使用-AS-耳机换iphone-816003 /

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

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

首先运行hciconfig hci0 sspmode 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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM