DevAcademy Bluetooth LE connection problems

Hi,

I am going through the DevAcademy Bluetooth LE lessons, using nRF5 DK. But I run into problems directly in the exercise of the first lesson. Everything goes fine to step 4.2, but connecting doesn’t work. Connection is established, but almost immediately disconnection happens. LED2 is lit for a short moment. The print outs are like this:

No matter how many times I try, disconnection always happens this way. I have also tested to connect via the Bluetooth low energy desktop app using the Nordic BLE dongle. Then the connection works fine. I have tested with both nRF Connect SDK 2.3.0 and 2.0.0, and the scenario is the same for both versions.

In the desktop app it is possible to read the button state and activate notifications (and receive updates when the button is pressed). But I am not able to control LED3. I have put a breakpoint in write_led() in lbs.c (C:\...\v2.3.0\nrf\subsys\bluetooth\services\lbs.c), but the breakpoint isn't hit when I write to the LED characteristic. Though, a breakpoint in read_button() will be hit when I click "Nordic LED and Button Service", so I should be in the correct file.

 

Best regards,

Lars

Parents Reply Children
  • Lars M said:
    In this file I should have recorded two attempts to connect.

    You also seem to have recorded a lot of other things.

    If you could let me know which of these addresses belong to your devices, I might be able to help you.

  • Yes, I know there is a lot of data. I am new to this and have problems with filtering. So a fast solution now was to take my laptop and go to a place where there should be no other BLE-devices within range. I have added two capture files, one with only the dk powered, and one where I have turned on Bluetooth on my phone and tried to connect two times. I am quite confuced around what is captured. I thought the DK, phone and computer would be the only BLE devices around, but there are more Sources than three. How come? Can my phone and computer have several sources? Is it possible to figure out what is happening when the connection doesn't work?

    Capture dk.pcapng

    Capture dk and phone, 2 tries.pcapng

  • Lars M said:
    I thought the DK, phone and computer would be the only BLE devices around

    Seems like these are the only devices around this time from what I can see.

    f7 seems to be your DK, 35 has a Microsoft tag so I assume that's your laptop, 5a has a Google tag and seems to be your Android phone scanning for devices.

    But yes your phone seems to use a different source when trying to connect.

    What I think is weird is that after the initial connect packet from your phone, nothing more seems to happen until your DK continues advertising 500ms later.

    Are you filtering for LE LL packets? In that case I would be interested in seeing this log without such a filter because some of the communication on setting up a connection happens on different protocols.

    With that said, this is what error code 42 refers to:

    Might be a problem specific to your phone, have you tried with other Android phones?

    -Einar

  • Now I have captured another bunch of data. It seems that I have succeeded in filtering my DK-data.

    I have only this selected:

    I guess this selects LE LL, correct?

    I have also made this selection:

    I’m not sure what selection I had when I captured previous files, but now I get more info about the communication. Does this tell you something more interesting?

    I have not yet tested with another phone, but will hopefully have the possibility pretty soon.

    In the files from my previous post there were only my DK, phone and computer. But quite a lot of addresses were present, of which may appear just a few times. What are these addresses?

    Capture dk and phone, 3 tries.pcapng

  • Hi

    Lars M said:

    now I get more info about the communication. Does this tell you something more interesting?

    Yes this data is more interesting! You can see the devices set up a connection, negotiating connection parameters. Your DK requests to use 2M PHY, your phone acknowledges this and then starts sending read requests, but the strange part is that your DK never seems to answer any of these requests, so the phone repeats this request every 50ms for 5 seconds until it reaches a timeout. I'm not entirely sure why this happens, but it looks like the DK never receives these requests, maybe something goes wrong when the connection is supposed to swap to 2M PHY..

    Lars M said:

    In the files from my previous post there were only my DK, phone and computer. But quite a lot of addresses were present, of which may appear just a few times. What are these addresses?

    The random addresses that seem to just appear once I believe are from corrupted BLE packets. Not sure if this happens when the packet is sent or when it is sniffed, but I don't think those are real addresses, just corrupted data.

    I have put a breakpoint in write_led() in lbs.c

    Also, don't think this is the current issue, but you should avoid breakpoints when doing BLE, breakpoints in BLE functions can break BLE entirely.

    -Einar

Related