Hi Will,
Thanks for the explanation. I found it in the BluetoothCore v4.2 spec in
section 5.1.9 - Data Length Update Procedure.
I agree with your conclusion that it sounds like the controller must accept
LL_UNKNOWN_RSP but must not require it.
Thanks again this was really very helpful.
-Pritish

On Fri, Mar 17, 2017 at 11:05 AM, will sanfilippo <wi...@runtime.io> wrote:

> I can elaborate. It has been discussed at fair length on the dev list
> before but I will summarize.
>
> The issue is that our controller automatically attempts to do data length
> extension with a peer. The default configuration sets a larger receive size
> than the minimum size and this causes the controller to initiate that
> control procedure automatically (without any host intervention).
>
> We have seen that other controllers do not like it when they get a
> LL_LENGTH_REQ_PDU when they do not support the data length update
> procedure. They are supposed to send back an UNKNOWN_RSP but some do not.
> Actually, we have seen different controllers with different behavior.
>
> And re-reading the specification, it could be that I simply
> mis-interpreted it. It was my understanding that if a controller receives a
> control PDU that it does not understand it should reply with
> LL_UNKNOWN_RSP. The spec sort of hints at that in the Feature Exchange
> Procedure section, but maybe it is not required. Technically I am probably
> wrong as it says that an implementation must accept LL_UNKNOWN_RSP but does
> not say that you have to send it. I thought I had read it somewhere but
> maybe not.
>
> Anyway, we will address this issue soon enough so for now just disable
> data length extension and you should be fine.
>
> > On Mar 17, 2017, at 10:47 AM, Pritish Gandhi <prit...@aylanetworks.com>
> wrote:
> >
> > Hey Will,
> > That worked!! The blecent is staying connected to the bleprph almost
> > indefinitely now.
> >
> > Can you please elaborate on the reason: "And sure enough, I think this is
> > the same issue we have seen before. The data length update procedure is
> not
> > completing and the connection is timing out."
> >
> > Do you mean that the blecent device is trying to enable data length
> > extension with the bleprph but that is failing?
> >
> > Thanks,
> > Pritish
> >
> > On Fri, Mar 17, 2017 at 10:11 AM, will sanfilippo <wi...@runtime.io>
> wrote:
> >
> >> BTW: Lukasz did have a really good suggestion for future debugging (why
> >> didnt I think of that?) :-)
> >>
> >> A sniffer with wireshark is a really handy tool. I mentioned the
> debugger
> >> as it was something we could look at really quickly to see if it is an
> >> issue that I already know about with some controllers.
> >>
> >> And sure enough, I think this is the same issue we have seen before. The
> >> data length update procedure is not completing and the connection is
> timing
> >> out.
> >>
> >> A quick fix for now would be to disable the data length extension
> feature
> >> to see if this addresses the issue.
> >>
> >> In the syscfg.yml file in net/nimble/controller you should set
> >> BLE_LL_CFG_FEAT_DATA_LEN_EXT to 0. This should disable the controller
> >> automatically sending the data length update procedure. Hopefully this
> >> solves the problem.
> >>
> >> Will
> >>
> >>> On Mar 17, 2017, at 9:43 AM, Pritish Gandhi <prit...@aylanetworks.com>
> >> wrote:
> >>>
> >>> Hi Will,
> >>> Sorry I was mistaken, I jumbled up the issues in my own head. You are
> >>> correct in that the blecent is running on the nrf52dk and the logs I
> >>> provided are from the blecent application.
> >>>
> >>> As you requested I put the breakpoint at ble_ll_ctrl_proc_rsp_timer_cb(
> )
> >> please
> >>> see the dump below:
> >>>
> >>> *console logs:*
> >>>
> >>> 92626:[ts=723640584ssb, mod=64 level=1] Connection established
> >>>
> >>> 92627:[ts=723648396ssb, mod=4 level=1] GATT procedure initiated:
> discover
> >>> all services
> >>>
> >>> 92703:[ts=724242172ssb, mod=4 level=1] GATT procedure initiated:
> discover
> >>> all characteristics; start_handle=1 end_handle=11
> >>>
> >>> 92748:[ts=724593712ssb, mod=4 level=1] GATT procedure initiated:
> discover
> >>> all characteristics; start_handle=12 end_handle=15
> >>>
> >>> 92786:[ts=724890568ssb, mod=4 level=1] GATT procedure initiated:
> discover
> >>> all characteristics; start_handle=16 end_handle=19
> >>>
> >>> 92818:[ts=725140616ssb, mod=4 level=1] GATT procedure initiated:
> discover
> >>> all characteristics; start_handle=20 end_handle=32
> >>>
> >>> 92863:[ts=725492156ssb, mod=4 level=1] GATT procedure initiated:
> discover
> >>> all characteristics; start_handle=33 end_handle=65535
> >>>
> >>> 92927:[ts=725992124ssb, mod=4 level=1] GATT procedure initiated:
> discover
> >>> all descriptors; chr_val_handle=14 end_handle=15
> >>>
> >>> 92940:[ts=726093744ssb, mod=4 level=1] GATT procedure initiated:
> discover
> >>> all descriptors; chr_val_handle=18 end_handle=19
> >>>
> >>> 92953:[ts=726195300ssb, mod=4 level=1] GATT procedure initiated:
> discover
> >>> all descriptors; chr_val_handle=24 end_handle=25
> >>>
> >>> 92978:[ts=726390600ssb, mod=4 level=1] GATT procedure initiated:
> discover
> >>> all descriptors; chr_val_handle=29 end_handle=30
> >>>
> >>> 92991:[ts=726492156ssb, mod=4 level=1] GATT procedure initiated:
> discover
> >>> all descriptors; chr_val_handle=37 end_handle=65535
> >>>
> >>> 93004:[ts=726593712ssb, mod=64 level=3] Service discovery complete;
> >>> status=0 conn_handle=1
> >>>
> >>> 93006:[ts=726609336ssb, mod=4 level=1] GATT procedure initiated: read;
> >>> att_handle=22
> >>>
> >>> 93008:[ts=726624960ssb, mod=4 level=1] GATT procedure initiated: write;
> >>> att_handle=32 len=2
> >>>
> >>> 93011:[ts=726648396ssb, mod=4 level=1] GATT procedure initiated: write;
> >>> att_handle=30 len=2
> >>>
> >>> 93036:[ts=726843696ssb, mod=64 level=1] Read complete; status=0
> >>> conn_handle=1 attr_handle=22 value=
> >>>
> >>> 93042:[ts=726890568ssb, mod=64 level=1] Write complete; status=0
> >>> conn_handle=1 attr_handle=32
> >>>
> >>> 93049:[ts=726945252ssb, mod=64 level=1] Subscribe complete; status=0
> >>> conn_handle=1 attr_handle=30
> >>>
> >>> *gdb: (took a break point at ble_ll_ctrl_proc_rsp_timer_cb)*
> >>>
> >>> (gdb) p/x *(struct ble_ll_conn_sm *)ev->ev_arg
> >>>
> >>> $4 = {
> >>>
> >>> csmflags = {
> >>>
> >>>   cfbit = {
> >>>
> >>>     pkt_rxd = 0x0,
> >>>
> >>>     terminate_ind_txd = 0x0,
> >>>
> >>>     terminate_ind_rxd = 0x0,
> >>>
> >>>     allow_slave_latency = 0x0,
> >>>
> >>>     slave_set_last_anchor = 0x0,
> >>>
> >>>     awaiting_host_reply = 0x0,
> >>>
> >>>     send_conn_upd_event = 0x0,
> >>>
> >>>     conn_update_sched = 0x0,
> >>>
> >>>     host_expects_upd_event = 0x0,
> >>>
> >>>     version_ind_sent = 0x1,
> >>>
> >>>     rxd_version_ind = 0x1,
> >>>
> >>>     chanmap_update_scheduled = 0x0,
> >>>
> >>>     conn_empty_pdu_txd = 0x0,
> >>>
> >>>     last_txd_md = 0x0,
> >>>
> >>>     conn_req_txd = 0x1,
> >>>
> >>>     send_ltk_req = 0x0,
> >>>
> >>>     encrypted = 0x0,
> >>>
> >>>     encrypt_chg_sent = 0x0,
> >>>
> >>>     le_ping_supp = 0x1
> >>>
> >>>   },
> >>>
> >>>   conn_flags = 0x44600
> >>>
> >>> },
> >>>
> >>> conn_handle = 0x1,
> >>>
> >>> conn_state = 0x1,
> >>>
> >>> conn_role = 0x1,
> >>>
> >>> max_tx_octets = 0x1b,
> >>>
> >>> max_rx_octets = 0xfb,
> >>>
> >>> rem_max_tx_octets = 0x1b,
> >>>
> >>> rem_max_rx_octets = 0x1b,
> >>>
> >>> eff_max_tx_octets = 0x1b,
> >>>
> >>> eff_max_rx_octets = 0x1b,
> >>>
> >>> max_tx_time = 0x148,
> >>>
> >>> max_rx_time = 0x848,
> >>>
> >>> rem_max_tx_time = 0x148,
> >>>
> >>> rem_max_rx_time = 0x148,
> >>>
> >>> eff_max_tx_time = 0x148,
> >>>
> >>> eff_max_rx_time = 0x148,
> >>>
> >>> chanmap = {0xff, 0xff, 0xff, 0xff, 0x1f},
> >>>
> >>> req_chanmap = {0x0, 0x0, 0x0, 0x0, 0x0},
> >>>
> >>> chanmap_instant = 0x0,
> >>>
> >>> hop_inc = 0xb,
> >>>
> >>> data_chan_index = 0x5,
> >>>
> >>> unmapped_chan = 0x5,
> >>>
> >>> last_unmapped_chan = 0x1f,
> >>>
> >>> num_used_chans = 0x25,
> >>>
> >>> conn_rssi = 0xd0,
> >>>
> >>> tx_seqnum = 0x1,
> >>>
> >>> next_exp_seqnum = 0x1,
> >>>
> >>> cons_rxd_bad_crc = 0x0,
> >>>
> >>> last_rxd_sn = 0x0,
> >>>
> >>> last_rxd_hdr_byte = 0x5,
> >>>
> >>> rpa_index = 0xff,
> >>>
> >>> reject_reason = 0x0,
> >>>
> >>> host_reply_opcode = 0x0,
> >>>
> >>> master_sca = 0x4,
> >>>
> >>> tx_win_size = 0x1,
> >>>
> >>> cur_ctrl_proc = 0x8,
> >>>
> >>> disconnect_reason = 0x0,
> >>>
> >>> rxd_disconnect_reason = 0x0,
> >>>
> >>> common_features = 0x0,
> >>>
> >>> vers_nr = 0x7,
> >>>
> >>> pending_ctrl_procs = 0x100,
> >>>
> >>> event_cntr = 0x320,
> >>>
> >>> completed_pkts = 0x0,
> >>>
> >>> comp_id = 0xf,
> >>>
> >>> sub_vers_nr = 0x2209,
> >>>
> >>> auth_pyld_tmo = 0xbb8,
> >>>
> >>> access_addr = 0x14258862,
> >>>
> >>> crcinit = 0x742bf8,
> >>>
> >>> ce_end_time = 0x2d8b779d,
> >>>
> >>> terminate_timeout = 0x0,
> >>>
> >>> last_scheduled = 0x2d8aaaa6,
> >>>
> >>> conn_itvl_min = 0x18,
> >>>
> >>> conn_itvl_max = 0x28,
> >>>
> >>> conn_itvl = 0x28,
> >>>
> >>> slave_latency = 0x0,
> >>>
> >>> supervision_tmo = 0x100,
> >>>
> >>> min_ce_len = 0x10,
> >>>
> >>> max_ce_len = 0x50,
> >>>
> >>> tx_win_off = 0x0,
> >>>
> >>> anchor_point = 0x2d8b6e97,
> >>>
> >>> last_anchor_point = 0x2b290d01,
> >>>
> >>> slave_cur_tx_win_usecs = 0x0,
> >>>
> >>> slave_cur_window_widening = 0x0,
> >>>
> >>> own_addr_type = 0x0,
> >>>
> >>> peer_addr_type = 0x0,
> >>>
> >>> peer_addr = {0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa},
> >>>
> >>> conn_spvn_timer = {
> >>>
> >>>   bsp_timer = 0x20002ee4,
> >>>
> >>>   cb_func = 0x19865,
> >>>
> >>>   cb_arg = 0x20003298,
> >>>
> >>>   expiry = 0x2db1bca8,
> >>>
> >>>   link = {
> >>>
> >>>     tqe_next = 0x0,
> >>>
> >>>     tqe_prev = 0x200036a4
> >>>
> >>>   }
> >>>
> >>> },
> >>>
> >>> conn_spvn_ev = {
> >>>
> >>>   ev_queued = 0x0,
> >>>
> >>>   ev_cb = 0x1ac05,
> >>>
> >>>   ev_arg = 0x20003298,
> >>>
> >>>   ev_next = {
> >>>
> >>>     stqe_next = 0x0
> >>>
> >>>   }
> >>>
> >>> },
> >>>
> >>> conn_ev_end = {
> >>>
> >>>   ev_queued = 0x0,
> >>>
> >>>   ev_cb = 0x1a6a5,
> >>>
> >>>   ev_arg = 0x20003298,
> >>>
> >>>   ev_next = {
> >>>
> >>>     stqe_next = 0x0
> >>>
> >>>   }
> >>>
> >>> },
> >>>
> >>> cur_tx_pdu = 0x0,
> >>>
> >>> conn_txq = {
> >>>
> >>>   stqh_first = 0x0,
> >>>
> >>>   stqh_last = 0x20003358
> >>>
> >>> },
> >>>
> >>> {
> >>>
> >>>   act_sle = {
> >>>
> >>>     sle_next = 0x0
> >>>
> >>>   },
> >>>
> >>>   free_stqe = {
> >>>
> >>>     stqe_next = 0x0
> >>>
> >>>   }
> >>>
> >>> },
> >>>
> >>> ctrl_proc_rsp_timer = {
> >>>
> >>>   c_ev = {
> >>>
> >>>     ev_queued = 0x0,
> >>>
> >>>     ev_cb = 0x1c1ed,
> >>>
> >>>     ev_arg = 0x20003298,
> >>>
> >>>     ev_next = {
> >>>
> >>>       stqe_next = 0x0
> >>>
> >>>     }
> >>>
> >>>   },
> >>>
> >>>   c_evq = 0x2000313c,
> >>>
> >>>   c_ticks = 0x17dd2,
> >>>
> >>>   c_next = {
> >>>
> >>>     tqe_next = 0x200018e4,
> >>>
> >>>     tqe_prev = 0x0
> >>>
> >>>   }
> >>>
> >>> },
> >>>
> >>> conn_sch = {
> >>>
> >>>   sched_type = 0x3,
> >>>
> >>>   enqueued = 0x1,
> >>>
> >>>   start_time = 0x2d8b6dd9,
> >>>
> >>>   end_time = 0x2d8b779d,
> >>>
> >>>   cb_arg = 0x20003298,
> >>>
> >>>   sched_cb = 0x19d35,
> >>>
> >>>   link = {
> >>>
> >>>     tqe_next = 0x0,
> >>>
> >>>     tqe_prev = 0x200036ac
> >>>
> >>>   }
> >>>
> >>> },
> >>>
> >>> auth_pyld_timer = {
> >>>
> >>>   c_ev = {
> >>>
> >>>     ev_queued = 0x0,
> >>>
> >>>     ev_cb = 0x1a2d1,
> >>>
> >>>     ev_arg = 0x20003298,
> >>>
> >>>     ev_next = {
> >>>
> >>>       stqe_next = 0x0
> >>>
> >>>     }
> >>>
> >>>   },
> >>>
> >>>   c_evq = 0x2000313c,
> >>>
> >>>   c_ticks = 0x0,
> >>>
> >>>   c_next = {
> >>>
> >>>     tqe_next = 0x0,
> >>>
> >>>     tqe_prev = 0x0
> >>>
> >>>   }
> >>>
> >>> },
> >>>
> >>> enc_data = {
> >>>
> >>>   enc_state = 0x1,
> >>>
> >>>   tx_encrypted = 0x0,
> >>>
> >>>   enc_div = 0x0,
> >>>
> >>>   tx_pkt_cntr = 0x0,
> >>>
> >>>   rx_pkt_cntr = 0x0,
> >>>
> >>>   host_rand_num = 0x0,
> >>>
> >>>   iv = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0},
> >>>
> >>>   enc_block = {
> >>>
> >>>     key = {0x0 <repeats 16 times>},
> >>>
> >>>     plain_text = {0x0 <repeats 16 times>},
> >>>
> >>>     cipher_text = {0x0 <repeats 16 times>}
> >>>
> >>>   }
> >>>
> >>> },
> >>>
> >>> conn_param_req = {
> >>>
> >>>   handle = 0x0,
> >>>
> >>>   conn_itvl_min = 0x0,
> >>>
> >>>   conn_itvl_max = 0x0,
> >>>
> >>>   conn_latency = 0x0,
> >>>
> >>>   supervision_timeout = 0x0,
> >>>
> >>>   min_ce_len = 0x0,
> >>>
> >>>   max_ce_len = 0x0
> >>>
> >>> },
> >>>
> >>> conn_update_req = {
> >>>
> >>>   winsize = 0x0,
> >>>
> >>>   winoffset = 0x0,
> >>>
> >>>   interval = 0x0,
> >>>
> >>>   latency = 0x0,
> >>>
> >>>   timeout = 0x0,
> >>>
> >>>   instant = 0x0
> >>>
> >>> },
> >>>
> >>> conn_cp = {
> >>>
> >>>   interval_min = 0x0,
> >>>
> >>>   interval_max = 0x0,
> >>>
> >>>   latency = 0x0,
> >>>
> >>>   timeout = 0x0,
> >>>
> >>>   pref_periodicity = 0x0,
> >>>
> >>>   ref_conn_event_cnt = 0x0,
> >>>
> >>>   offset0 = 0x0,
> >>>
> >>>   offset1 = 0x0,
> >>>
> >>>   offset2 = 0x0,
> >>>
> >>>   offset3 = 0x0,
> >>>
> >>>   offset4 = 0x0,
> >>>
> >>>   offset5 = 0x0
> >>>
> >>> }
> >>>
> >>> }
> >>>
> >>>
> >>> Thanks,
> >>>
> >>> Pritish
> >>>
> >>> On Thu, Mar 16, 2017 at 3:22 PM, will sanfilippo <wi...@runtime.io>
> >> wrote:
> >>>
> >>>> Maybe I read your email incorrectly, but I thought the error was
> coming
> >>>> from blecent on the nrf52dk?
> >>>>
> >>>>> On Mar 16, 2017, at 3:11 PM, Pritish Gandhi <
> prit...@aylanetworks.com>
> >>>> wrote:
> >>>>>
> >>>>> Hi Will,
> >>>>> I'm not building the controller lib for the image that runs on the
> >>>>> stm32f4Discovery board. I'm building it as a Host Only. So I build
> the
> >>>>> host, HCI, and uart transport. Broadcom's Bluetooth core is really a
> >>>>> BlackBox to me, I don't have any way to debug what's going on there
> >>>> (except
> >>>>> maybe using a BLE sniffer and seeing packets going out on the
> >> interface)
> >>>>> Thanks,
> >>>>> Pritish
> >>>>>
> >>>>> On Thu, Mar 16, 2017 at 2:48 PM, will sanfilippo <wi...@runtime.io>
> >>>> wrote:
> >>>>>
> >>>>>> I do not think there is a simple way to debug this. As Chris points
> >> out,
> >>>>>> the first problem is a LL control procedure timeout. I think I can
> >> help
> >>>>>> figure some things out there. There is a function called
> >>>>>> ble_ll_ctrl_proc_rsp_timer_cb. If you set a breakpoint at this
> >> function
> >>>> in
> >>>>>> the debugger when you get the first error you can examine the
> >> connection
> >>>>>> state machine. The parameter passed in to that function is an event
> >> and
> >>>>>> ev->ev_arg is a pointer to the connection state machine. In the
> >>>> debugger,
> >>>>>> just dump ev_arg after typecasting it to a connection state machine:
> >> p/x
> >>>>>> (struct ble_ll_conn_sm *)ev->ev_arg
> >>>>>>
> >>>>>> I presume you are OK with using gdb? I would ‘set print pretty on’
> >>>> before
> >>>>>> dumping the connection state machine. If you send me the output of
> >> that
> >>>> I
> >>>>>> might be able to help.
> >>>>>>
> >>>>>> Thanks
> >>>>>>
> >>>>>>> On Mar 16, 2017, at 2:30 PM, Christopher Collins <ch...@runtime.io
> >
> >>>>>> wrote:
> >>>>>>>
> >>>>>>> Hi Pritish,
> >>>>>>>
> >>>>>>> On Thu, Mar 16, 2017 at 01:50:12PM -0700, Pritish Gandhi wrote:
> >>>>>>>> Hi All,
> >>>>>>>> I'm trying to run blecent on an nrf52dk and am running the bleprph
> >>>>>>>> application on another BLE module (stm32f4discovery talking to a
> >>>>>> broadcom
> >>>>>>>> BLE core). Anyways, when try to run blecent it seems like I
> >>>> successfully
> >>>>>>>> connect to the peripheral and are able to discover it, however
> after
> >>>>>> that
> >>>>>>>> the connection seems to be timing out and then am never able to
> >>>> discover
> >>>>>>>> the peripheral again.
> >>>>>>>
> >>>>>>> [...]
> >>>>>>>
> >>>>>>> Hmm, that is odd, indeed.  The disconnect reason codes you are
> seeing
> >>>>>>> are mapped as follows:
> >>>>>>>
> >>>>>>> 546 - LMP RESPONSE TIMEOUT / LL RESPONSE TIMEOUT
> >>>>>>> 520 - CONNECTION TIMEOUT
> >>>>>>>
> >>>>>>> I'm afraid I don't have any ideas at the moment.  Could you please
> >>>>>>> clarify the setup you are using?  Here is my understanding:
> >>>>>>>
> >>>>>>> Device A: blecent on nRF52dk (combined host-controller)
> >>>>>>> Device B:
> >>>>>>> * bleprph on stm32f4discovery (host-only)
> >>>>>>> * broadcom controller
> >>>>>>>
> >>>>>>> Is that correct?  If so, I assume the host and controller on
> device B
> >>>>>>> communicate via UART?
> >>>>>>>
> >>>>>>> Thanks,
> >>>>>>> Chris
> >>>>>>>
> >>>>>>>>
> >>>>>>>> 1) Connected and Discovered the bleprph:
> >>>>>>>>
> >>>>>>>> 37493:[ts=292914004ssb, mod=4 level=1] GAP procedure initiated:
> >>>>>> discovery;
> >>>>>>>> own_addr_type=0 filter_policy=0 passive=1 limited=0
> >>>> filter_duplicates=1
> >>>>>>>> duration=forever
> >>>>>>>>
> >>>>>>>> 37503:[ts=292992124ssb, mod=4 level=1] GAP procedure initiated:
> >>>> connect;
> >>>>>>>> peer_addr_type=0 peer_addr=aa:aa:aa:aa:aa:aa scan_itvl=16
> >>>> scan_window=16
> >>>>>>>> itvl_min=24 itvl_max=40 latency=0 supervision_timeout=256
> >>>> min_ce_len=16
> >>>>>>>> max_ce_len=768 own_addr_ty
> >>>>>>>>
> >>>>>>>> 37517:[ts=293101556ssb, mod=64 level=1] Connection established
> >>>>>>>>
> >>>>>>>> 37519:[ts=293117180ssb, mod=4 level=1] GATT procedure initiated:
> >>>>>> discover
> >>>>>>>> all services
> >>>>>>>>
> >>>>>>>> 37588:[ts=293656208ssb, mod=4 level=1] GATT procedure initiated:
> >>>>>> discover
> >>>>>>>> all characteristics; start_handle=1 end_handle=11
> >>>>>>>>
> >>>>>>>> 37627:[ts=293960876ssb, mod=4 level=1] GATT procedure initiated:
> >>>>>> discover
> >>>>>>>> all characteristics; start_handle=12 end_handle=15
> >>>>>>>>
> >>>>>>>> 37658:[ts=294203112ssb, mod=4 level=1] GATT procedure initiated:
> >>>>>> discover
> >>>>>>>> all characteristics; start_handle=16 end_handle=19
> >>>>>>>>
> >>>>>>>> 37684:[ts=294406224ssb, mod=4 level=1] GATT procedure initiated:
> >>>>>> discover
> >>>>>>>> all characteristics; start_handle=20 end_handle=32
> >>>>>>>>
> >>>>>>>> 37722:[ts=294703080ssb, mod=4 level=1] GATT procedure initiated:
> >>>>>> discover
> >>>>>>>> all characteristics; start_handle=33 end_handle=65535
> >>>>>>>>
> >>>>>>>> 37761:[ts=295007812ssb, mod=4 level=1] GATT procedure initiated:
> >>>>>> discover
> >>>>>>>> all descriptors; chr_val_handle=14 end_handle=15
> >>>>>>>>
> >>>>>>>> 37774:[ts=295109368ssb, mod=4 level=1] GATT procedure initiated:
> >>>>>> discover
> >>>>>>>> all descriptors; chr_val_handle=18 end_handle=19
> >>>>>>>>
> >>>>>>>> 37786:[ts=295203112ssb, mod=4 level=1] GATT procedure initiated:
> >>>>>> discover
> >>>>>>>> all descriptors; chr_val_handle=24 end_handle=25
> >>>>>>>>
> >>>>>>>> 37799:[ts=295304668ssb, mod=4 level=1] GATT procedure initiated:
> >>>>>> discover
> >>>>>>>> all descriptors; chr_val_handle=29 end_handle=30
> >>>>>>>>
> >>>>>>>> 37812:[ts=295406224ssb, mod=4 level=1] GATT procedure initiated:
> >>>>>> discover
> >>>>>>>> all descriptors; chr_val_handle=37 end_handle=65535
> >>>>>>>>
> >>>>>>>> 37825:[ts=295507780ssb, mod=64 level=3] Service discovery
> complete;
> >>>>>>>> status=0 conn_handle=1
> >>>>>>>>
> >>>>>>>> 2) Read/Write/Subscribe for notifications. Finally fails with
> >>>> reason=546
> >>>>>>>>
> >>>>>>>> 37827:[ts=295523404ssb, mod=4 level=1] GATT procedure initiated:
> >> read;
> >>>>>>>> att_handle=22
> >>>>>>>>
> >>>>>>>> 37829:[ts=295539028ssb, mod=4 level=1] GATT procedure initiated:
> >>>> write;
> >>>>>>>> att_handle=32 len=2
> >>>>>>>>
> >>>>>>>> 37832:[ts=295562464ssb, mod=4 level=1] GATT procedure initiated:
> >>>> write;
> >>>>>>>> att_handle=30 len=2
> >>>>>>>>
> >>>>>>>> 37851:[ts=295710892ssb, mod=64 level=1] Read complete; status=0
> >>>>>>>> conn_handle=1 attr_handle=22 value=
> >>>>>>>>
> >>>>>>>> 37857:[ts=295757764ssb, mod=64 level=1] Write complete; status=0
> >>>>>>>> conn_handle=1 attr_handle=32
> >>>>>>>>
> >>>>>>>> 37863:[ts=295804636ssb, mod=64 level=1] Subscribe complete;
> status=0
> >>>>>>>> conn_handle=1 attr_handle=30
> >>>>>>>>
> >>>>>>>> 42637:[ts=333101556ssb, mod=64 level=1] disconnect; reason=546
> >>>>>>>>
> >>>>>>>>
> >>>>>>>> 3) Once it disconnects, blecent gets stuck in this loop of trying
> to
> >>>>>>>> discover, but the discovery always fails:
> >>>>>>>>
> >>>>>>>> 42638:[ts=333109368ssb, mod=4 level=1] GAP procedure initiated:
> >>>>>> discovery;
> >>>>>>>> own_addr_type=0 filter_policy=0 passive=1 limited=0
> >>>> filter_duplicates=1
> >>>>>>>> duration=forever
> >>>>>>>>
> >>>>>>>> 42973:[ts=335726516ssb, mod=4 level=1] GAP procedure initiated:
> >>>> connect;
> >>>>>>>> peer_addr_type=0 peer_addr=aa:aa:aa:aa:aa:aa scan_itvl=16
> >>>> scan_window=16
> >>>>>>>> itvl_min=24 itvl_max=40 latency=0 supervision_timeout=256
> >>>> min_ce_len=16
> >>>>>>>> max_ce_len=768 own_addr_ty
> >>>>>>>>
> >>>>>>>> 42982:[ts=335796824ssb, mod=64 level=1] Connection established
> >>>>>>>>
> >>>>>>>> 42983:[ts=335804636ssb, mod=4 level=1] GATT procedure initiated:
> >>>>>> discover
> >>>>>>>> all services
> >>>>>>>>
> >>>>>>>> 43020:[ts=336093744ssb, mod=64 level=3] Error: Service discovery
> >>>> failed;
> >>>>>>>> status=7 conn_handle=1
> >>>>>>>>
> >>>>>>>> 43022:[ts=336109368ssb, mod=4 level=1] GAP procedure initiated:
> >>>>>> terminate
> >>>>>>>> connection; conn_handle=1 hci_reason=19
> >>>>>>>>
> >>>>>>>> 43025:[ts=336132804ssb, mod=64 level=1] disconnect; reason=520
> >>>>>>>>
> >>>>>>>> 43027:[ts=336148428ssb, mod=4 level=1] GAP procedure initiated:
> >>>>>> discovery;
> >>>>>>>> own_addr_type=0 filter_policy=0 passive=1 limited=0
> >>>> filter_duplicates=1
> >>>>>>>> duration=forever
> >>>>>>>>
> >>>>>>>> 43038:[ts=336234360ssb, mod=4 level=1] GAP procedure initiated:
> >>>> connect;
> >>>>>>>> peer_addr_type=0 peer_addr=aa:aa:aa:aa:aa:aa scan_itvl=16
> >>>> scan_window=16
> >>>>>>>> itvl_min=24 itvl_max=40 latency=0 supervision_timeout=256
> >>>> min_ce_len=16
> >>>>>>>> max_ce_len=768 own_addr_ty
> >>>>>>>>
> >>>>>>>> 43046:[ts=336296856ssb, mod=64 level=1] Connection established
> >>>>>>>>
> >>>>>>>> 43047:[ts=336304668ssb, mod=4 level=1] GATT procedure initiated:
> >>>>>> discover
> >>>>>>>> all services
> >>>>>>>>
> >>>>>>>> 43084:[ts=336593712ssb, mod=64 level=3] Error: Service discovery
> >>>> failed;
> >>>>>>>> status=7 conn_handle=1
> >>>>>>>>
> >>>>>>>> 43086:[ts=336609336ssb, mod=4 level=1] GAP procedure initiated:
> >>>>>> terminate
> >>>>>>>> connection; conn_handle=1 hci_reason=19
> >>>>>>>>
> >>>>>>>> 43089:[ts=336632772ssb, mod=64 level=1] disconnect; reason=520
> >>>>>>>>
> >>>>>>>> 43091:[ts=336648396ssb, mod=4 level=1] GAP procedure initiated:
> >>>>>> discovery;
> >>>>>>>> own_addr_type=0 filter_policy=0 passive=1 limited=0
> >>>> filter_duplicates=1
> >>>>>>>> duration=forever
> >>>>>>>>
> >>>>>>>> 43101:[ts=336726516ssb, mod=4 level=1] GAP procedure initiated:
> >>>> connect;
> >>>>>>>> peer_addr_type=0 peer_addr=aa:aa:aa:aa:aa:aa scan_itvl=16
> >>>> scan_window=16
> >>>>>>>> itvl_min=24 itvl_max=40 latency=0 supervision_timeout=256
> >>>> min_ce_len=16
> >>>>>>>> max_ce_len=768 own_addr_ty
> >>>>>>>>
> >>>>>>>> Any ideas whats going on and how to debug this further?
> >>>>>>>> The only way to recover seems to be to reset my bleprph device.
> >>>>>>>> Appreciate the help,
> >>>>>>>> Pritish
> >>>>>>
> >>>>>>
> >>>>
> >>>>
> >>
> >>
>
>

Reply via email to