【发布时间】:2013-01-05 01:21:57
【问题描述】:
我正在为在运行 Linux 的 ARM 嵌入式设备上设置蓝牙服务而苦苦挣扎了几天。我正在使用通过 USB 连接的蓝牙加密狗。
让我们从头开始。我必须自己编译所有必需的包,这意味着 expat、dbus、zlib、libffi、glib、bluez-3.36-libs 和 bluez-3.36-utils(是的 3.36,我知道它们很旧,但我的 cross-编译器)、libopenobex-1.3、obexd-0.3、obexftp。然后我将二进制文件和库放在设备上。此外,内核中启用了蓝牙。
我可以使用hciconfig hci0 up 命令激活蓝牙,我可以使用hcitool scan 执行扫描,我什至可以使用 l2ping 以前发现的设备进行 ping。
我想要的是能够使用 ftp 协议在该 ARM 设备和另一个蓝牙设备之间传输文件,我的问题就从这里开始了。
这些是我唯一需要的工具吗?
把所有东西都放在设备上后,我使用
hciconfig hci0 up打开蓝牙,然后我使用dbus-launch启动dbus守护进程,之后我尝试启动obexd。当我运行dbus-launch时,它会打印 DBUS_SESSION_BUS_ADDRESS 的值和一些 pid,然后当我尝试启动 obexd 时,它会要求我设置 DBUS_SESSION_BUS_ADDRESS。这是否正常,因为我读到您必须仅出于测试目的进行设置?默认(真实)dbus 会话总线地址是什么?我应该如何正确配置 dbus?我倾向于认为问题出在配对过程中,当两个蓝牙设备尝试进行身份验证时。我如何从命令行执行此操作,因为这就是我所拥有的(没有 GUI)?
能否请您向我介绍为实现我的目标要遵循的详细步骤。我试图从互联网上了解更多关于它们的信息,也试图在网上找到这些步骤,但我找不到我需要的。
能否请您解释一下 obexd、obexd-client、obexd-server、obex-data-server、obexftp 之间的区别?它们是要一起使用还是提供相同的功能?我无法从他们的手册页中澄清这一点。
我知道这是一篇很长的帖子,里面有很多问题,但我没有使用蓝牙的经验,而且我面临着解决这个问题的时间压力。任何帮助将不胜感激。
【问题讨论】:
-
这里发生了很多不同的事情。通过将其分解为关于 SO 的多个问题,您可能会获得更好的运气。
-
我的猜测是这些组件中至少有一些将使用系统而不是会话总线。理想情况下,您应该在启动时通过 init-scripts 或 SystemD 启动。任何用户界面都可以很好地使用会话总线。
dbus-launch通常用于引导 X,以便它及其子进程可以继承必要的环境变量。如果从 shell 执行此操作,请尝试dbus-launch /bin/sh。
标签: bluetooth arm embedded-linux obex bluez