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

Nordic Mesh using USB Dongle and provision via GATT

Hello, 

I have a project that does what the title states, create a Mesh Network using the Nordic USB Dongles then provision a smartphone using GATT to access the Mesh network. 

So far I've combined the two examples from Light Switch Mesh, creating both a client and server proxy node on the Nordic USB Dongle; This works great as expected and I can turn on the LEDs simultaneously on both Nordic USB Dongles via the Mesh Network. 

My next step is to provision a smartphone or web Bluetooth device with the mesh. I've read other forum posts on this subject and they mentioned using the coexist example to run both the mesh and the peripheral on the same device (Nordic USB Dongle), so I followed the steps I used to create a Mesh compatible version of the client and server to get the Coexist example to run. I compiled it once I removed all the `hal_led_init()` and `rtt_input` related functions and it compiled successfully. I also changed the PCA10XX version to match PCA10059 using SEGGER to match the dongle.

This is the problem:

Once I flash the HEX file to the dongle using the nRF Programmer, it finishes successfully but when the dongle initializes, it halts and turns all it LED lights on. I also searched that up and the forum post mentioned it's returning a non-zero error. 

I have been tweaking the code to make sure there are no logic errors and it's basically the same code just without `rtt_input` and `hal_init` functions so I'm left clueless.

Any help would be appreciated.

Maybe I can already provision the smartphone with a client/server proxy node using GATT? I looked around but there isn't a clear explanation if all you need is a proxy node to provision via GATT.  

Thanks in advance,

Luis

Parents
  • Hi Iconstjs, 

    Please clarify how you provision the Nordic USB Dongle running light switch example ? Did you use the provisioner firmware or using PyACI ? or using a phone ? 

    How did you program the USB Dongle ? 

    When you mention "provision the smart phone" what exactly you meant ? You want to provision the smart phone or do you want to use the smart phone to provision the nodes ? 

    If you want to use the smart phone to provision the node you only need to use the nRF Mesh app on the phone to do so. PB-GATT (provision using GATT) is enabled by default in light switch example (Unless you use very old SDK, which SDK version you are using ? ) 

    If you want to disable (or enable) the PB-GATT provisioning in the example, please look for MESH_FEATURE_PB_GATT_ENABLED in nrf_mesh_config_app.h file. 

    Note that the coexistence example has nothing to do with provisioning. It's the example so that you can do BLE and having mesh at the same time. 

  • Please clarify how you provision the Nordic USB Dongle running light switch example ? Did you use the provisioner firmware or using PyACI ? or using a phone ? 

    - I am provisioning the USB Dongle that is running the light switch with my iPhone using nRF Mesh.

    How did you program the USB Dongle ? 

    I programmed the USB Dongle using the nRF Programmer with a hex file built using the lightswitch example.

    When you mention "provision the smart phone" what exactly you meant ? You want to provision the smart phone or do you want to use the smart phone to provision the nodes ? 

    By provisioning I meant I want to connect a device like (web bluetooth, smartphone bluetooth) using the Mesh Proxy Service or Mesh Provisioning Service standard from the Bluetooth.com website and I am having problems exposing the GATT server and connecting to it. 

    See this link: https://www.bluetooth.com/blog/in-market-bluetooth-low-energy-devices-and-bluetooth-mesh-networking/

    Topology:   phone/web-bluetooth > proxy > mesh

    Note that the coexistence example has nothing to do with provisioning. It's the example so that you can do BLE and having mesh at the same time. 

    Would this help accomplish the above topology?

    Thanks for your response,

    Luis

Reply
  • Please clarify how you provision the Nordic USB Dongle running light switch example ? Did you use the provisioner firmware or using PyACI ? or using a phone ? 

    - I am provisioning the USB Dongle that is running the light switch with my iPhone using nRF Mesh.

    How did you program the USB Dongle ? 

    I programmed the USB Dongle using the nRF Programmer with a hex file built using the lightswitch example.

    When you mention "provision the smart phone" what exactly you meant ? You want to provision the smart phone or do you want to use the smart phone to provision the nodes ? 

    By provisioning I meant I want to connect a device like (web bluetooth, smartphone bluetooth) using the Mesh Proxy Service or Mesh Provisioning Service standard from the Bluetooth.com website and I am having problems exposing the GATT server and connecting to it. 

    See this link: https://www.bluetooth.com/blog/in-market-bluetooth-low-energy-devices-and-bluetooth-mesh-networking/

    Topology:   phone/web-bluetooth > proxy > mesh

    Note that the coexistence example has nothing to do with provisioning. It's the example so that you can do BLE and having mesh at the same time. 

    Would this help accomplish the above topology?

    Thanks for your response,

    Luis

Children
  • Hi Luis, 

    The USB dongle is not made for firmware development, but to be used as a tool. It's better to use a DK to do development then send the image to the dongle when it's ready. The tool you use to program the dongle is actually not direct programming but doing a firmware update over USB. It's not possible to debug using that. 

    Please be aware that provisioning and proxy are 2 different term. Proxy is to allow a phone which already provisioned to join the network. When provisioning is to assign the mesh credential to a node so that it can start to join the network. 

    Currently what we have is proxy and GATT provisioning on light switch example. You can use a phone to provision the node and then use the phone to access the network as a proxy node. However, you need to use the phone as the provisioner. And there is only one phone in this setup.

    We currently don't have an example to allow other phones to join the network (connect to a proxy) or provision a phone. 

    I would suggest you to get familiar with phone provisioning (PB-GATT) first. You can have a look at this video

    The coexistence example is something else. The example allow the node works as a normal BLE peripheral, connect to a phone and at the same time, being a normal mesh node. It's not standard proxy as defined in the spec. The phone wouldn't be part of the mesh network. But of course you can define your own proxy/bridge protocol to transfer BLE to mesh. 

Related