[riot-devel] gcoap blockwise transfer

Ken Bannister kb2ma at runbox.com
Tue May 21 12:49:37 CEST 2019


Ashim, Brenton and I were able to resolve the issues they experienced. 
The issue link below includes examples to test reception of a large 
payload with gcoap PR #11057.


Ken


On 5/9/19 6:21 PM, Ken Bannister wrote:
>
> Sorry to hear you're having issues. It will be easier to track this 
> problem in a GitHub issue, so I created one [1]. Let's move the 
> discussion there.
>
>
> Ken
>
>
> [1] https://github.com/kb2ma/RIOT/issues/29
>
>
>
> On 5/9/19 11:37 AM, Ashim Asharaph wrote:
>> 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:
>>
>>     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
>>
>>
>> _______________________________________________
>> devel mailing list
>> devel at riot-os.org
>> https://lists.riot-os.org/mailman/listinfo/devel
>
> _______________________________________________
> devel mailing list
> devel at riot-os.org
> https://lists.riot-os.org/mailman/listinfo/devel
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.riot-os.org/pipermail/devel/attachments/20190521/cc87e893/attachment.html>


More information about the devel mailing list