[riot-devel] gcoap blockwise transfer

Ashim Asharaph AAsharaph at csir.co.za
Thu May 9 13:37:32 CEST 2019


Dear Ken

So I decided to use the gcoap blockwise transfer from PR #11057 with a GET request. On native it works fine. When testing on real hardware using two samr21-xpro boards with one running the gnrc _border_router example, the block transfer only completes successfully about 50% of the time with a 50kB file and 128 byte packets. The application says "gcoap: timeout for msg ID xxxxx". The time at which the timeout occurs seems random at any point during the blockwise transfer. 


The final plan is to integrate the gcoap with wakaama and use both together for an OTA firmware update. When the integrated version is used, the success rate is about 5%. Are there any parameters or code that could be tweaked on either the RIOT application or on the Californium file server to improve the success rate? What could be causing the issue or how can I try to determine the problem?


Kind regards
Ashim Asharaph




>>> Ken Bannister <kb2ma at runbox.com> 05/02/19 4:45 PM >>>
[The e-mail server of the sender could not be verified (SPF Record)]    Hi Ashim and welcome to RIOT!
    
    
    As you say, we have two CoAP tools -- nanocoap and gcoap. Here      are your options.
    
    
    
    In the latest release, 2019.04, nanocoap has server-based block      capabilities. So, it would work if Californium acted as a client      and PUT/POSTed the file contents to your nanocoap server. See the      nanocoap_server example in the source repository and documentation      at Modules > Networking > Nanocoap.
    
    
    There also are PRs for full client/server block capabilities. In      this case it's probably easier to use gcoap because it's fully      documented, but a nanocoap client would work, too. See #11057 for      the final PR in the series. If you build the source documentation      (make doc), you will find detailed instructions and links to      examples. See the Modules > Networking > Gcoap topic.
    
    
    
    I am the author of the PR series, and would appreciate you      testing it out. We are actively (if slowly) reviewing and merging      these PRs.
    
    
    
    Ken
    
    On 5/2/19 2:05 PM, Ashim Asharaph      wrote:
    
                      body p {
    margin: 0.0px;
}
      Dear RIOT developers
      
      
      I'm sending a GET request from gcoap running on native to a        californium server hosting a file. The file is about 56kB in        size. I can receive the file correctly (multiple blocks) when        using Californium Copper. I can only receive one 512 byte block        of data through gcoap. I have tried changing GCOAP_PDU_BUF_SIZE        but this only affects whether I can receive the one block. How        do I receive multiple blocks? Has coap blockwise transfer been        implemented in gcoap? Is nanocoap a suitable alternative for        receiving the file?
      
      
      
      Kind regards
      Ashim Asharaph
      
      
            _______________________________________________devel mailing listdevel at riot-os.orghttps://lists.riot-os.org/mailman/listinfo/devel          

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.riot-os.org/pipermail/devel/attachments/20190509/aafb87c9/attachment.html>


More information about the devel mailing list