This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts
This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

nRF Master Control Panel for Android crashes when displaying details of fast advertising peripheral

Dear Nordic team,

I've seen very much reproducible crashes of your Android nRF Master Control Panel app when trying to see details (button "MORE") of particular Peripheral device. When I use aggressive advertising intervals (down to 20ms for connectable beacon) and dynamic advertising data (altering at least couple of bits to have each ADV_IND packet unique) it works only if I go to "MORE" menu at the very early stages of scanning. It seems to me that once number of logged points exceeds certain limit (internal buffer?;) it crashes completely and app must be restarted.

I'm using latest nRF MCP version from Google Play Store (V3.4.1) and Nexus 5 running Android 6.0 but I've seen this on other devices and Android versions as well. I believe that it's OK to drop some parts of the log instead of uncontrolled crash...

Thanks Jan

Update on 3-February-2016

The latest Google Play upgrade (version 4.0.3) fixes the crashes, great work! Thanks for the testing. I'd still change the behavior of manual scan option, also note that for this "dynamic" beacon you don't display any advertising interval - probably because the data are different - but you obviously link reports by Adv. Address so you could easily add the timing estimation as well. But these are rather change requests and end user feedback which is up to you to add to your backlog or not;)

Cheers Jan

  • Hi Alexandre,

    here is testing FW for nRF52 DK (PCA10040). I've discovered interesting detail: unless I make "beacon" discoverable and add Scan Response data MCP android app is actually stable (so it won't crash with generic Nordic Beacon example even if I shorten the interval to 20ms, make the adv. connectable and alter advertising data from packet to packet). So it looks that overload comes only if there are not only 31B (+ metadata) per adv. interval coming (up to 50 per second with 20ms interval) but once there are also up to 31B (+ metadata) of scan response (I'm putting BLE_GAP_AD_TYPE_TX_POWER_LEVEL and BLE_GAP_AD_TYPE_COMPLETE_LOCAL_NAME there so it might be just consequence of suddenly having this information on Android side). I hope this observation helps to find the actual problem in the code.

    I'm also including main.c which could be used in ..\examples\ble_peripheral\ble_app_beacon\ project to get the FW binaries (I'm using nRF5 SDk v11.0.0-2.alpha with Keil MDK and S132 Soft Device V2.0.0-7.alpha). You need to adjust RAM sectors (IRAM1) in target settings because for lower adv. intervals then 100ms we need to use connectable advertisement and that requires to set some stack resources during Soft Device init... Plus you need to add DYNAMIC_BEACON define into C/C++ defines in the same dialogue (see screenshots attached). But I hope HEX files will work out of the box for you.

    Many thanks for your time Jan

    ble_app_beacon_dynamic_only-delta_20160118_1.zip

  • Thanks! I'll look into it soon :)

  • Hi, thanks again for the app. I've run some tests and fixed the bug. I have to say your app was really eager in advertising and was killing the nRF MCP in few seconds :) In version 4.0.3 I keep only 100 most recent different packets (before the 200 was too much for your app). This seems to work and as everyone knows 100 is better than 200 as it has only 1s and 0s ;) I also fixed some other bugs

  • I've updated the question (above) and closing it, thanks for help! Jan

Related