BLE mesh not sending messages when debugging from a different computer

I am using the DK PCA10041 with SDK 17 and mesh SDK 5.0.0. I have run into an odd issue. I set up the dimming mesh example with a client and two servers and provisioned them. When I debug the client from my main Apple computer with Segger everything works fine and I can change the LEDs on/off. I also have a Linux computer running Ubuntu 20.04 and Segger that I can debug the same client with the same code and everything works fine. 

I set up another computer that is running Windows 10 and Segger with a copy of the same code and the same SDKs that I am using on the other machines. I set up this Windows machine so that I could connect to the client remotely to remotely debug/update firmware. I have been testing my dimming example with it and I have noticed that when I debug from the Windows machine, the code output logs show that everything is working smoothly but the client seems that it is not actually sending the messages to the servers because the LEDs on the servers are not turning on/off. 

I am not erasing the chip only debugging it and the only way to fix this is to run the debugger on the client from my Apple or Linux computer and then everything goes back to working again. I have full control of the LEDs from the client again. 

Is this an issue with Segger or the SoftDevice? I am thinking that something is not getting onto my BLE chip when I debug with the Windows machine but I am not quite sure what is happening here. 

Thank you

Parents
  • Hi, 

    Could you explain what you meant by "remotely debug/update firmware" ? How did you connect the Windows machine and the nRF board ? 

    Have you tried to debug any simple application and check if it can step in the code and can operate normally ? 

  • Could you explain what you meant by "remotely debug/update firmware" ? How did you connect the Windows machine and the nRF board ? 

    It is just a windows machine that I can connect to remotely through a VNC. I have the DK connected to the Windows machine with a USB cable. 

    Have you tried to debug any simple application and check if it can step in the code and can operate normally ? 

    Yes, I tried the 'dimming' example and it seems to work from a fresh downloaded mesh SDK. When I use my code that works on the other computers, I can provision the node but it times out while 'Requesting Composition Data'. It is almost as if the mesh features are not there. 

    Thank you

  • Hi SS, 

    Just to clarify, you have 2 Windows machines ? And  by VNC you meant Virtual Network Computing ? Like a remote desktop  ?

    Do you have any trouble if you debug directly from the first Windows machine that connects directly to the DK via USB  ? 

    When you do provisioning, can you do "Identify" the device ? How did you do provisioning, via a phone or via another DK ? Have you tried both way ? 

    Have you checked if there is any log on the DK when you provision ? 

Reply
  • Hi SS, 

    Just to clarify, you have 2 Windows machines ? And  by VNC you meant Virtual Network Computing ? Like a remote desktop  ?

    Do you have any trouble if you debug directly from the first Windows machine that connects directly to the DK via USB  ? 

    When you do provisioning, can you do "Identify" the device ? How did you do provisioning, via a phone or via another DK ? Have you tried both way ? 

    Have you checked if there is any log on the DK when you provision ? 

Children
  • Just to clarify, you have 2 Windows machines ? And  by VNC you meant Virtual Network Computing ? Like a remote desktop  ?

    The machine that the debugger is attached to is running Windows 11 and the computer that I use to access the Windows machine is running Ubuntu 20.04. I do use a remote desktop kind of way to access the Windows computer. 

    Do you have any trouble if you debug directly from the first Windows machine that connects directly to the DK via USB  ? 

    When I debug from the Windows machine then I can run the debugger and provision my device. The problem is after it finishes provisioning then it will timeout during the "Status Requesting Composition Data..." process and I get an "Error Request timed out." on the phone that I use to provision the node. 

    After this happens I cannot add an "Application Key". I cannot even "Reset" the node. 

    When I am debugging from my Ubuntu machine, I have no issues whatsoever. I can debug, provision and control my servers after provisioning the node. 

    The odd part is that I have copied and pasted the entire SDK and examples from the Ubuntu computer to the Windows machine. I have actually successfully done this on other computers and it works fine, just not on this Windows machine. 

    When you do provisioning, can you do "Identify" the device ? How did you do provisioning, via a phone or via another DK ? Have you tried both way ? 

    I use an iPhone 13 to provision the nodes using the mesh APP. I have also used an Android tablet to provision the nodes as well and it doesn't work when I program the node with the Windows machine. 

    I have noticed that when I look at the device memory layout in nRF Connect Programmer after programming with the Windows machine and compare it to the device memory layout after programming from the Ubuntu machine the Application region is different. The softdevice regions are they same.

    After some time of looking into this I eventually got it to work with a very simple solution. I downgraded Segger Studio from V6.32b to V5.40c and everything just worked. 

    Thank you

  • Hi SS, 

    Thanks for letting me know about the finding. It's quite strange that only when debugging the issue happens. 
    I would suggest to try with the recommended SES version of 6.16a as in the documentation for nRF5 SDK for mesh. 

Related