UDP travic between RIOT device and Raspberry PI 6LoWPAN seems not to work

Hello everyone, this week I made some success with exploring RIOT OS. But now I stuck with trying to get a data transfer between a 6LoWPAN equiped Raspberry Pi and "RIOT-MCUs".

All my tests are based on the gnrc_networking example.

First I made a UDP transfer between 2 identical RIOT equiped MCU boards. On the first device I started a UDP server and from the other I generated some data trafic to the other. Result: full success - I have seen the traffic on the shell (pktdump) and it was O.K.

Then I set up a Raspberry for usage with 6LoWPAN as described on the RIOT web page. ping6 works wonderful in each direction but when I tried to get data trafic through UDP I got nothing - neither in one direction nor in the other. I tried also to listen to the UDP port with netcat6 - also no success.

Can anyone give me a hint what's different between a UDP transfer between 2 RIOT devices and a trafic between a Linux-based UDP server and a RIOT-based device? The "basic"-Interface seems O.K. because of the working ping6.

Thanks a lot! Best regards, Bernhard

Hi, Linux uses next header compression (NHC) for UDP communication. Sadly, our implementation of NHC has still some issues when forwarding packets [1, 2, 3], which are about to be fixed in the next few days or so. This is why we currently have it deactivated by default. For now, if you don't use a RIOT node as multihop router (your scenario does not sound like it) you can activate NHC manually by adding the module `gnrc_sixlowpan_nhc_iphc` to your USEMODULE list.

Cheers, Martine

[1] https://github.com/RIOT-OS/RIOT/pull/4544 [2] https://github.com/RIOT-OS/RIOT/pull/5029 [3] https://github.com/RIOT-OS/RIOT/pull/5044

Hi,

Hello Bernhard,

seems like we are following the same route:) for the moment I can only confirm that riot 6lowpan “host” works with rpi2 and mainline kernel “node” implementation. (Linux raspberrypi 4.1.13-v7+) Recently I got working coap server on riot side with coap client on rpi2 side. The only thing I had to do on linux side was to remove nhc_udp module. Dont you have some kind of sniffer, to check what is in the air?

Im not using default build system, but here are my --defines for the reference:

–define=MODULE_AT86RF233 –define=MODULE_AT86RF2XX –define=MODULE_AUTO_INIT –define=MODULE_XTIMER –define=MODULE_AUTO_INIT_GNRC_NETIF –define=MODULE_GNRC_IPV6_NETIF –define=MODULE_GNRC_SIXLOWPAN –define=MODULE_GNRC_SIXLOWPAN_IPHC –define=MODULE_GNRC_SIXLOWPAN_ND_ROUTER –define=MODULE_GNRC_IPV6_NC –define=MODULE_GNRC_IPV6 –define=MODULE_GNRC_ICMPV6 –define=MODULE_GNRC_UDP –define=MODULE_GNRC_CONN_UDP –define=MODULE_GNRC_SIXLOWPAN_ND –define=MODULE_GNRC_NDP –define=MODULE_GNRC_NDP_NODE –define=MODULE_GNRC_PKTBUF –define=MODULE_PS –define=MODULE_GNRC_ICMPV6_ECHO –define=MODULE_MSP430_COMMON –define=GNRC_PKTBUF_SIZE=512 –define=GNRC_IPV6_NC_SIZE=1 –define=GNRC_IPV6_NETIF_ADDR_NUMOF=4 –define=MSP430F2618

–define=MICROCOAP_DEBUGx –define=MODULE_CONN_UDP

wbr malo