Sending the udp packets does not work with the xbee module

Hello everybody,

I just played little bit with the gnrc_networking example and tried to send an udp package with xbee module. Unfortunately this doesn’t work.

To see what the problem is, I switched on the debugging in the gnrc_netdev2_xbee.c but the program does not address this adaptation layer. Even the gnrc_netdev2.c is not addressed.

Ping6 works perfectly and the creation of an udp server and the receiving of udp packets goes well. Only sending makes problems, and only with xbee module with samr21-xpro everything goes perfectly.

Does any of you know what is going wrong?

Best regards,

Friedrich

Hi Friedrich, the xbee module has some tricky restrictions on sent packets. Did you make sure that the (link-layer) payload fits these? Regarding debugging: Try compiling with CFLAGS_OPT=-O0 and CFLAGS="-g3 -gdwarf-3". This usually leads to more satisfying results. I don't have an xbee module at hand at the moment, otherwise I would test it myself.

Best regards, Martine

Hi Marine,

first of all, thanks for your answer. The payload of my udp massage is only "TEST", the maximum PSDU size for xbee modul is 100 bytes and my payload is only 80 bytes. The next thing I noticed is following, if I set "GNRC_NETIF_NUMOF :=2" then I can send the udp messages. And the transceiver send periodically some messages as the samd21-xpro does.

Is this helpful in any way?

The Problem is when I set " GNRC_NETIF_NUMOF :=2" I get some stack overflow if I want to set some global address of my interface.

Best regard,

Friedrich

Hi Friedrich, on what board are you using the xbee? Is there an on-board radio? It seems like there is another interface already initialized. Best regards, Martine

Hi Marine, for xbee I use arduino zero board this haven’t other radio on board.

Best regards,

Friedrich

Hi Friedrich, then it is indeed weird, that you have to increase the number of static interfaces. Same goes for the stack overflow. Usually the stack should be big enough. Are you sure it is a stack overflow and not just a failed assertion? They look very similar in RIOT, since both let the node crash.

Best regards, Martine

Ah ok. I did not know that the failed assertion behaves exactly like stack overflow. Then it must be the failed assertion. That behavior with the increase of the number of interfaces I find out as I tried to realize a border router. I really can not understand why sending, the UDP packets with two interfaces works and with only one not.

With the help of your master thesis I have also tried to understand in which layer that problem occurs but didn't found what's going wrong. The one thing I know is that the gnrc_netdev2 does not receive a massage that he is now supposed to send something.

Is there a way to avoid the failed assertion when I increase the number of interfaces to 2 but use one or is it only one interfaces available?

Best regard,

Friedrich

Hi,

[…]

I try to get my hands on the hardware, and try it out myself.

Is there a way to avoid the failed assertion when I increase the number of interfaces to 2 but use one or is it only one interfaces available?

if there is enough memory space on your board you can set the `DEBUG_ASSERT_VERBOSE` macro [1] so you can at least find out which assertion is hit. You can also deactivate the assertion by unsetting the DEVELHELP macro [2] (in gnrc_networking this is set), but usually a failed assertion points to a problem ;-).

Hope this was helpful for now.

Best regards, Martine

[1] Kernel Utilities [2] Utilities