我现在很难在运行Linux的ARM嵌入式设备上设置蓝牙服务几天。我正在使用通过USB连接的蓝牙加密狗。
让我们从头开始吧。我必须自己编译所有必需的软件包,这意味着expat,dbus,zlib,libffi,glib,bluez-3.36-libs和bluez-3.36-utils(是的3.36,我知道它们已经老了,但我的交叉也是如此编译器),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之间的区别吗?它们是打算一起使用还是它们提供相同的功能?我无法从他们的手册页中澄清这一点。
我知道这是一个很长的帖子,有很多问题,但我没有蓝牙经验,而且我有时间压力要解决这个问题。任何帮助将不胜感激。
答案 0 :(得分:1)
您提出了许多问题,但会尝试回答这些问题:
几乎所有你需要的东西。
你为什么要开始使用会话总线?不会启动系统总线帮助和hcid使用系统总线(据我所知)。您需要使用正确的参数执行交叉编译的obexd(或任何其他实用程序)。
你可以使用simple-agent(如果我没有错的话,它在3.36版本的工具目录中)。在非gui模式下(simple-agent --default [跟随你的密码])将起作用。
基本上你需要找到一个设备(做扫描),验证(配对),然后进行文件传输,这将涉及obex级别的请求/响应(用简单的话来说)。
据我所知,最初obexftp / obex-push是唯一一个在openobex上工作以进行文件传输的独立实用程序。 Obex-data-serer是作为GSOC竞赛的一部分开发的,该竞赛被纳入主要发行版。 obexd是obex数据服务器的更薄版本,专为嵌入式使用而设计,并与hcid(以及之后的蓝牙)紧密集成。请仅使用其中一个实用程序,而不是同时使用所有实用程序。