This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Mobile phone compatibility issue

I used the Nexus 5 with android OS 4.4 and try to use both the "Master control panel" and "Toolbox" Apps to upload firmware.(DFU) When I use the "Master control panel" App , it almost success to upload firmware every time. But when I use the "toolbox" App to upload firmware, it gets the more chances to fail at the beginning to connect the GATT and find the GATT services. Can you tell me what's the difference of implementation between the two Apps about the upload firmware ?

On the other hand, I have two cell phone(samsung Note3 and Nexus5), But obviously, samsung note3 's success rate is higher than the nexus 5, why?

success rate on master control panel in below:

Samsung Note3 10/10 Nexus 5 5/10

And Once successful, error code is 133 for GATT ERROR,What is mean?

Samsung Note3 OS is android 4.3 I use 51422 and softdevice is S310

Thank you!

  • Hi Elliot, Since nRF Toolbox v1.3 there is no significant difference in DFU implementation between MCP and Toolbox. I don't know why uploading succeeds on MCP but on Toolbox it fails. Could you please attach the HEX file that you are using?

    However there are some differences in general application framework. For example in order to start DFU process in MCP you have to connect to the device and discover services. Only then, when the DFU service will be find, the DFU button is shown. The initial connection may filter out some problems while DFU, f.e. you may receive an error during the initial connection, quickly go back, connect again and forget about it. In Toolbox you are not connecting to the device before starting DFU operation. The application assumes that if DFU service UUID was present in the advertisement packet, the device will support it. It may not always be true (Android caches the device information and does not discover services if already obtained). Nothing filter out Bluetooth problems. To be sure, that both implementations will behave the same, it is recommended to restart Bluetooth adapter just before opening app. You may also find out that after successful upload both apps call the hidden method refresh() in BluetoothDevice that clears the cache so next time when you connect to it it may show different services..

    The 133 (0x85) error is something that should never happen. All we know that it is a Gatt Error. You may find more such errors here: android.googlesource.com/.../gatt_api.h. Sometimes it comes after error 129 (0x81) (internal gatt error). When BLE stack on Android gets more and more stable, those errors comes less often. If you have tried Nexus 4 with Android 4.3 when it was released, than it was a real nightmare. Samsung has better implementation of BLE stack. There are much less instability errors. It was working quite good even in Android 4.3. Nevertheless we have found some significant differences between different phone models.

Related