dev academy course broken: BLE fundementals:esson 3 excersice 2

in
Bluetooth Low Energy Fundamentals -> lesson 3-> Exercise 2

I opened the solution, I built the config for nrf52840 dev kit. Problem: 2M PHY is not achieved.
Update to 2M phy only works when I comment out calls to   update_data_length(my_conn)and  update_mtu(my_conn);

SO step 13.5 breaks update_phy in a way that is stuck in 1mPHY. Ths print is 

[00:00:19.797,241] <inf> Lesson3_Exercise2: PHY updated. New PHY: 1M

    /* STEP 7.2 - Update the PHY mode */
    update_phy(my_conn);
    /* STEP 13.5 - Update the data length and MTU */
    update_data_length(my_conn);
    update_mtu(my_conn);
I am running nrf connect app on Samsung S24 Android 14
Would some one from team verify this?
Parents
  • Hello ,

    I participated in creating this lesson, and actually, I was aware of this issue. Most of the time, the problem doesn't surface, but under the right conditions, it does. I have not debugged this yet, but I suspect that what's happening is that the data length update, and the phy update are both what is called "Link Layer Requests", and according to the BLE specification, it is not allowed to have more than one of these requests active at once per device. The reason the issue isn't always visible is that the phone that you connect to would in most cases ask for the data length update before the nRF does. In that case, the nRF will not issue the data length update request, and the phy update is the only Link Layer update request. 

    So this is why adding the delay works. It will make sure that the data length update is completed before requesting the phy update. 

    Thank you for reporting the issue. I will add a delay, or a check that the previous link layer update is complete before the phy update in the next update of the BLE course in DevAcademy.

    Best regards,

    Edvin

Reply
  • Hello ,

    I participated in creating this lesson, and actually, I was aware of this issue. Most of the time, the problem doesn't surface, but under the right conditions, it does. I have not debugged this yet, but I suspect that what's happening is that the data length update, and the phy update are both what is called "Link Layer Requests", and according to the BLE specification, it is not allowed to have more than one of these requests active at once per device. The reason the issue isn't always visible is that the phone that you connect to would in most cases ask for the data length update before the nRF does. In that case, the nRF will not issue the data length update request, and the phy update is the only Link Layer update request. 

    So this is why adding the delay works. It will make sure that the data length update is completed before requesting the phy update. 

    Thank you for reporting the issue. I will add a delay, or a check that the previous link layer update is complete before the phy update in the next update of the BLE course in DevAcademy.

    Best regards,

    Edvin

Children
No Data
Related