This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

In Gazell mode, the device sends data to the host failure.

The device sending data will be accepted to the callback function nrf_gzll_device_tx_failed,But the host side receives the data and calls the function nrf_gzll_host_rx_data_ready。Sometimes the host is loaded with ACK, but the device terminal shows that the received ack is empty, and the host can also receive the device information at the same time.

Parents
  • Hi

    This is expected behavior. 

    If the ACK is lost on the way to the device, and the device doesn't send any more re-transmissions, the packet might be received by the host without the device knowing about it. 

    The assumption is that for applications where receiving all packets is critical you will use an unlimited amount of retransmits, and in this case the ACK will eventually be received. (If the device stops responding for a long amount of time, the link should be considered broken.)

    Best regards
    Torbjørn

     

  • hi,ovrebekk.

    The rate of transmission I use is 1M, and this phenomenon almost does not appear at the distance of 50cm. When the distance reaches 3M, there will be two or three times every 10 times.Whether distance is the cause of this problem。

    thanks.

  • Hi 

    You will get higher packet loss when the distance increases, so you should see it more often when the distance is longer, yes. 

    Three times out of 10 sounds a bit too much though. How many retransmits have you configured on the device side?
    You could try to increase the number of retransmits, and it should happen less frequently. 

    Best regards
    Torbjørn

  • hi, ovrebekk:

    the device and the host gall parameters:

    table_size = 3;

    nrf_gzll_set_timeslots_per_channel(2);
    nrf_gzll_set_sync_lifetime(18);
    nrf_gzll_set_max_tx_attempts(15);
    nrf_gzll_set_timeslot_period(2800);
    nrf_gzll_set_timeslots_per_channel_when_device_out_of_sync(6);
    nrf_gzll_set_device_channel_selection_policy(NRF_GZLL_DEVICE_CHANNEL_SELECTION_POLICY_USE_CURRENT);

    The length of the sent data and ACk data is less than 32 bytes。

    thanks。

Reply
  • hi, ovrebekk:

    the device and the host gall parameters:

    table_size = 3;

    nrf_gzll_set_timeslots_per_channel(2);
    nrf_gzll_set_sync_lifetime(18);
    nrf_gzll_set_max_tx_attempts(15);
    nrf_gzll_set_timeslot_period(2800);
    nrf_gzll_set_timeslots_per_channel_when_device_out_of_sync(6);
    nrf_gzll_set_device_channel_selection_policy(NRF_GZLL_DEVICE_CHANNEL_SELECTION_POLICY_USE_CURRENT);

    The length of the sent data and ACk data is less than 32 bytes。

    thanks。

Children
Related