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

Nordic provide a BLE USB dongle for applications running on a PC?

Does Nordic provide a BLE functionality with a USB dongle that a PC application can use? I do NOT want to use the Windows 10 BLE as it is buggy and does not provide the low level control I need. I am writing an extensive health device BLE test suite for centrals and I do not want to download HEX files onto a chip for each test. What is needed is to call the BLE APIs from the PC application and get signaled of BLE events in the PC application. I am thinking Visual Studio 19 using C or C++. I am forced to select things in the product and I will pick something at random. I have no idea which one will do. Pretty stupid requirement on Nordic's part.

  • Yes, there is no additional HEX files you need to build apart from the connectivity HEX file that you find in the release. However, you would still need to setup the other build tools, to compile the driver itself and generate the projects.

    If you are looking for a cleaner solution, you can also consider porting our serialization libraries to your desktop. This is the same solution as pc-ble-driver is using, but will require more effort on your end to make it work on your platform.

  • Okay, I thought the connectivity HEX file WAS the driver. The word 'driver' is confusing to me as it is used in so many contexts. Is the driver something that sits on the PC that has to be installed into the OS (like a USB driver one often gets with a USB product) or is it a library that my VS project will use. You mention 'generate the projects'. I assumed I would generate my projects in VS.

    I guess I do not understand the setup/config system yet (those are always the most difficult stages in any endeavor). Before I dig deeper I am waiting on another question. I was looking at the APIs and noted there was no GATT event signaled to a peripheral on a generic client read. There was an event on an 'authorized' read/write but it is not clear to me what that is. However, if the Nordic chips do NOT signal the peripheral application on a client read and allow the application to control what is then sent back to the client then we cannot use it. It's funny that the high level Android API allows this ... which is wonderful but it has far too little control over everything else BLE to be useful for our purposes.

  • The connectivity HEX file is the firmware that runs on the nRF chip and provides serialized control of the BLE softdevice. The pc-ble-driver implements the serialization libraries that run on the host side (PC), allowing you to call softdevice APIs from your C/C++ application. These function calls will be serialized and transported over the serial link by the pc-ble-driver.

    When I said "generate projects" I was referring to the projects for building the driver libraries and generation of the example projects. I assume you can also build the libraries only, and link these in your VS project yourself.

    [EDIT]: The zipped release on GitHub also includes the linkable library, meaning you should be able to link this into your VS project, given that you develop on one of the platforms that we provide releases for (win x86_32/64, linux x86_64, macos x86_64).

  • This is starting to sound much easier. Since I am running on a 64 bit Windows machine, the driver libraries are already available and I do not have to build them. The connectivity HEX file is also available, so I don't have to build that either. All I need (that I do not have) is a tool to install the connectivity HEX file through the JSEGGER interface. Once that is done, I could, in theory, start a new VC studio project and create a BLE peripheral or central using the SoftDevice APIs. Love the sound of that.

  • Note that if you want to use the nRF52840 Dongle that I linked above, this does not contain a Segger debugger to program the device. Instead, the device comes loaded with our serial bootloader, allowing you to program the connectivity hex through the USB port of the dongle. Please see this tutorial for more details.

Related