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

Reply
  • 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

Children
  • 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。

  • Hi 

    One trick in Gazell to try and reduce packet loss is to make the timeslot period slightly shorter in the device than in the host. 

    Could you try to reduce the timeslot period by 20-100us and see if it makes a difference?

    Also, try increasing max_tx_attempts to 20-30 and see if that helps. 

    Best regards
    Torbjørn

Related