Hi, Thanks for the report, however looks like attachments are missing.
First of all you need to understand what read fails i.e check handle and make sure that your application responds correctly. It is very suspicious that read works with -Og, but still I would focus on that failing read first. Thanks Lukasz On Sun, Jun 14, 2020, 20:25 <j...@codingfield.com> wrote: > Hello, > > I'm working on a firmware for the Pinetime, a smartwatch based on the > NRF52832. The code is written in C/C++ and uses FreeRTOS. > I've recently switched from the Nordic Softdevice to NimBLE as BLE > stack. I used the freertos port from the 'porting' folder of the source > code of nimble. > > I did many test using my PC on Linux : it can connect and communicate > with the NRF52 without issue. > However, things are not that easy when I try to connect using Android > phone (I tried with a Huawei Psomething and my old Nexus5) : the > connection fails most of the time. > > I did a lot of debugging, logging, sniffing,.. and I still cannot > understand why it's not working as expected. Here are some of my > observations: > > - When Android successfully connects, I receive the following GAP > events : BLE_GAP_EVENT_CONNECT and then BLE_GAP_EVENT_CONN_UPDATE 2 > times. The first update sets the connection interval to 6, the second > one to 40. > - When it fails, I receive only the BLE_GAP_EVENT_CONNECT event and the > 1st BLE_GAP_EVENT_CONN_UPDATE. > - Using the sniffer, I noticed that the last packet is a read request > from the phone. It looks like the NRF52 never respond to this last read. > - It fails in the discovery steps (when the android phone discover all > the services, characteristics and attributes) but not always at the same > place. > - I noticed that the tasks (ll task and host task are not in deadlock > BUT it looks like the radio ISR (ble_phy_isr() in ble_phy.c) is not > called anymore. > - When I build the very same code in DEBUG (-Og instead of -O3), it > works perfectly! > > You'll find in attachements 2 captures I did with Wireshark and the NRF > Sniffer (running on a NRF52-DK), one failed and one successful attempt > to connect. > > I'm running out of idea to debug this further. Is there a configuration > issue (there are so many parameters in syscfg.h)? What could I try? > Where should I search ? Do you need more info to understand the issue? > > Could you help me fix this issue? > > Thanks, > > JF