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

SD140 6.0.0-6-alpha BLE issues

Greetings -

I recently downloaded the latest SD140 images, 6.0.0-6-alpha, and began having issues with BLE communication.

I'm developing a custom device, based on the nRF52840, and we require both BLE and USB communication. The USB peripheral seems to be pretty much broken when the Soft Device is enabled, so I'm going to ignore that for the moment.

I recently migrated our code from the previous Soft Device, 5.0.0-5-alpha, which had working BLE (NUS and other services). When I attempted to discover and connect to the device using nRF Toolbox, I was unsuccessful. I reverted my code to the last working, pre-USB version, to remove any possible USB issues. This didn't resolve the problem. The only way to get BLE working again was to switch back to the 5.0.0-5-alpha version of the Soft Device.

  • Nice. Not sure how your experience in operating systems relates to understanding of Nordic Soft Device API but it doesn't matter;) And you are right (and I'm sorry), there seems to be no migration guide attached to S140 V6 alpha pack yet. Probably still too early alpha release. So then the only truth is in raw diff and when I compare V5.0.0-alpha.3 and V6.0.0-alpha.6 there are clearly small changes in basically all the layers and modules so you might need to go change per change and see if you use these SD API calls and structures or not.

  • To your disbelief: Nordic "guarantee" support only on certain HW + SD + SDK combinations as per their compatibility matrix. For any other combinations you are on your own, however unless you get really unlucky or you try to bridge too large gap in terms of SDK and SD release dates/versions you typically get successful. And with specific concerns Nordic support team can invest the time here, use the same set-up as you and try to make some obvious examples work again. The main question is: whatever SDK version you decide to use do you have correct header files copied to (replacing the original set!) \components\softdevice\s140\headers\ folder (if you use different SD flavor then indeed path differs in sXXX part)?

  • Yes, I have all of SDK 13.1's s140 headers in my project, and being compiled when I build my application. Just to be clear -- last Friday I was using s140-5.0.0.2-alpha with SDK 13.1 and BLE NUS worked. I mean, I don't have the entire comm layer debugged, but I can connect and do things. Then I found there was a new s140-6.0.0.6-alpha. I modified the .ld file to reflect the new FLASH and RAM sizes, erased my entire device, reflashed the new s140 image, recompiled, flashed the relocated application, and no BLE.

  • That's what I'm saying: delete all header files from that s140 folder in your "old" SDK structure and copy there header files you find in s140_nrf52840_6.0.0-6.alpha.zip\s140_nrf52840_6.0.0-6.alpha_API\include folder. This is at least first step. If you corrected LD file memory regions then at least basic startup should be OK and if you enable UART or RTT debug logging (or at least some simple GPIO debug pulses you put there on your own) it should show that FW is alive. You cannot assume that with new SD and new API compiled in it will work with old SDK (although it might if there are minimum changes).

Related