嗨,让我首先说这个是一个真正的僵局,因为我的自定义设备与我的服务工作几乎没有一个例外。
所以这是我的情况:
我有一个定制的设备设计,它使用the Murata LBCA2HNZYZ chip (this is actually just a Dialog DA14580 that has been put into a package that contains an antenna). FYI, the Murata chip is a great solution for speeding your design through the hurdles of FCC/CE certification because it has already been stamped with an approval. Anyway, what this device does is not so relevant, but suffice it to say that it connects to a smartphone app that I also wrote (both iOS and Android). Both the apps work fine, I can connect to my custom device and send/receive data without any problems, and I have tested using a variety of devices. For iOS my devices are iPad2, iPhone4S, iphone6, running OS's from 7.1 to 9. In Android, my test devices are Samsung and Motorola, running OS's 4.4, 5.1, and 6.0. So I am feeling pretty good about my app's/device's readiness for the open market. Until yesterday, ha.
有一个Android设备发现我无法连接到我的自定义设备。马上我想责怪Android设备或可能是我的应用程序,但这就是我不能:
(这很难跟随,我认为我已经确定了问题的来源,只是为了让它不合理,所以也许在你跳到一个结论之前,两次阅读它)
- 我可以访问多个同一Android设备运行OS 5.1,它们都响应相同(我扫描时找不到BLE设备)。所以这不是一个“坏”的单位,它在这个Android模型上是一致的。这是我的应用程序吗?没有为什么;
- 在任何这些Android设备上,我可以使用免费的Android应用程序'蓝牙Le Scanner',它也没有看到我的设备。这是Android设备的这个模型还是OS 5.1的“味道”?没有为什么;
- 如果我关闭我的自定义设备,然后将DA14580开发套件连接到我的PC,然后启动调试会话,现在我可以在任何那些Android设备上看到我的服务,使用'蓝牙LE Scanner App'。因此,这似乎是消除Android设备作为问题的来源。是我正在使用的穆拉塔芯片吗?不,恶意;
- 如果我断开DA14580开发套件,现在连接MURATA DEV套件(P2ML3078)并开始调试会话,我可以再次看到我的服务。这是显着的,因为它消除了Murata芯片本身以及对OTP的任何可能的修改,Murata可能已经对DA14580芯片进行了。这是我固件的东西吗?我不这么认为,因为;
- 请记住上面的所有调试会话都使用我在我的自定义设备上运行的相同项目固件。唯一的区别是,对于我的自定义设备,我实际上从外部闪存芯片启动。所以我的设备使用引导加载程序从闪存芯片获取固件,但它一旦运行的代码就是一样的。并记住 - 固件正在做它应该是什么,因为我可以用各种其他智能手机扫描/连接它。
- 最后一件事;失败扫描的日志(当Bluetooth LE扫描仪未显示时,当Bluetooth LE扫描仪时)几乎与成功扫描的日志相同(设备确实显示出)。如果它有帮助,那么我可以在这里包含日志,但我真的不认为他们揭示任何东西。
So I think that I have arrived at the fact that it must be something that is happening only when the firmware is running on my custom device. So the question becomes, if its something in my device, then why might it only be affecting this particular Android Model with its flavor of the Android OS?
任何人都可能是绝对欢迎的任何洞察力(甚至狂野猜测),特别是如果我忽略了一些明显的东西。如果有的话,让我知道
谢谢 - 克林
klim9531,
我没有看到它背后的任何逻辑解释,或者为什么HW应该影响你的设备的服务在那个特定的Android手机上运行的那个特定的fw,允许我重新拍摄以便直接,仅发生问题(设备不可见在使用时:
最烦恼我最重要的是,当能够使服务启用时,设备根本不会被扫描,我已经正确理解了吗?
例如,我所做的,是专注于从DEV套件和自定义设备(在DEV套件上设置但不在您的自定义板上设置的任何数据)之间的任何差异,例如,您尝试使用不同的BD地址(据我所知,Murata模块让他们的OTP标题用设备ID字段刻录,它不应该影响任何东西,但你可以给它一个尝试 - 疯狂猜测你说)。另外,我也明白这里描述的调试程序很长,所以可以很容易地发生错误,所以我会说明显而易见的,因为android缓存了服务和特征的数据,你试过擦掉android缓存吗?有问题的手机?来自发现过程的嗅探器日志也有助于检查正在发生的事情。
谢谢mt_dialog.
嗨mt_dialog,
谢谢你的帮助,我甚至非常感谢'疯狂的猜测'。上面的关键点都完全正确。你给了我一个伟大的想法与商品编号2 ---我已经将Suota服务集成到我的设计中,目前正常工作(几个月前归功于您的帮助 - 再次谢谢!)。因此,我将将对话框Suota应用程序下载到正在测试的手机上,看看它是否能够查看我的设备运行该服务。我会在这里报告结果。
我不知道在Murata Dev套件中设置的任何数据,这些数据会与我的自定义PCB上的不同。Murata Dev套件P2ML3078有几张可以购买的女儿卡,这些子卡只不过是一种简单的方法来交换对话框DA14580的各种Murata封装变体。它可能是我的女儿卡上的村田芯片不会将与他们实际销售的穆塔塔芯片相同的数据,但这似乎不太可能。BD地址被烧毁到Murata OTP标题中,以便不同,但这不应该。
如我了解Android操作系统的工作方式,关闭设备的电源将清除有关BLE设备的任何缓存数据。我不知道任何其他方式来'清除缓存'duing操作系统运行时。因为我只是使用第三方应用程序(蓝牙LE扫描仪)来扫描任何设备,这应该返回任何结果的广告。它确实这样做,当我使用对话框或Murata开发套件时。
我会看看我是否可以找到如何将嗅探器日志放在一起,但我没有BLE Packet Sniffer,但似乎我又看了一眼嗅探器设备,而且它们非常便宜。我永远不会实际需要一个人。
谢谢,克林
嗨mt_dialog,
我有一个更新,我认为我发现了这个问题:
- 我下载了Suota应用程序并运行了它,我首先测试了我在DA-14580开发套件上运行我的固件时,我能够看到Suota服务。是的,我能够看到它(到目前为止,事情就像我之前描述过)。
- 现在我将电池连接到我的自定义设备并将其转动,然后再次运行Suota应用程序并按“扫描”。我惊讶地看到我的服务出现,并拿起我的自定义设备以按下它的按钮。在我的自定义服务按下按钮通常简要地改变广告数据,这是我用来将我的应用程序连接到这个特定的设备/ BD地址 - 按下按钮不应该对Suota服务无关紧要,但我正在尝试。无论如何,正如我拿起自定义PCB的那样,我碰巧将它带到Android测试设备的约6英寸内。突然,我的设备名称的另一个实例出现在Suota应用程序的扫描列表中。他们有不同的BD地址,它花了我一瞬间意识到我没有断开我的电脑的DA_14580开发套件 - 它仍然从上次测试中运行。这就是我看到我设备的2个实例的原因。
--But the significant thing was that I was now seeing MY CUSTOM DEVICE appear on the Android test device!
所以我停止了Suota应用程序,抛光了定制设备,并试图重复该过程。在没有任何成功的情况下,我开始发现该密钥是“拾取”我的自定义设备,并在距Android测试设备的一定距离处以某个方向保持一定的方向。在能够始终持续再现行为之后,我能够将必须发生的事情拼凑起来。
1.这些Android测试设备具有极短的传输/接收范围,其中所有测试的所有其他Android / IOS设备可以在大约100米处执行双向通信。
2.我的自定义设备还具有短于理想的传输/接收范围,小于DEV套件。Murata的我芯片的文档声明了“理论范围”为30M,然而,在用我的习惯进行测试期间,我发现其范围为约5-10米。
3.这个Android测试设备的极短的范围,加上了我的自定义设备比DA-14580DK和MURATA DEV套件更短的范围,导致我的设备根本没有看到,除非我在字面上右边握住它到Android测试设备。
感谢您的帮助MT_DIALOG,我现在有我的答案。- klim.
klim9531,
很高兴你找到了它,谢谢你让我们知道。
Best Regards MT_dialog