cancel
Showing results for 
Search instead for 
Did you mean: 

Wi-Fi Combo

HyKi_4229111
New Contributor II

Here I make 2 devices talking to each other over mDNS multicast protocol.

Device A:

   - WICED SDK 6.6.0 based application runs over 4343WA1 wifi chip. Configured FreeRTOS + LwIP.

   - The app joined a multicast group (224.0.0.251) and send a packet of igmp v2 member report.

 Device B:

   - The app running over Linux Ubuntu 20.04 joined the same multicast group by calling 

           setsockopt(aSocket, IPPROTO_IP, IP_ADD_MEMBERSHIP, ...);

Upon this condition, the devB sends a query packet to the group and the devA receives it. Then, the devA makes a reply packet and send to the same group, but the devB never receives it. Wireshark has no packet dump for the devA reply packet, either. 

I put some debug message at the function wwd_thread_send_one_packet() in WWD/internal/wwd_thread.c and make sure the packet transfer to the WiFi chip done well as expected.

Here is my question that is any reason the WiFi chip doesn't send a multicast packet out to the network?

(added: it seems to be none of multicast transmit packets actually going out to the network. The call wwd_wifi_get_counters( STA, &counters ) returns counters.txmulti unchanged at all.)

Your comment is highly appreciated. Thanks.

 

0 Likes
2 Replies
AditiB_81
Moderator
Moderator

Hi,

Can you provide the code example you're using and the wireshark traces? Also, provide pointers to reproduce this issue on my end.

Thanks

Aditi

0 Likes
HyKi_4229111
New Contributor II

Hi Aditi,

I did additional work on this. Actually, it works with UDP tx example app in SDK 6.6.0 (apps/snip/udp_transport). See attached udp_transmit.c, that I slightly modified for my test. I changed the dst ip address and port number to target multicast group. I also used the packet data from my app. IT WORKS! (tcu_dump at client side prints the packet.)

However, my app doesn't, though it goes exact same udp steps, that is, create PCB, bind, join multicast group and send/receive. I confirmed the packet present at the final end of wwd thread (wwd_sdpcm_send_common() and thus wwd_bus_sdio_cmd53()). I am 100% sure the packet sent over to WiFi chip (4343WA1). Unicast packets are all okay and send/receive done nicely.

As the WiFi chip is a black box for me, I would ask you what would cause this multicast packet problem? I mean what would make WiFi chip never sent the packet? Is there any register setting required for multicast? You may see it clearly if you have the source code of it.

I add the first few lines of debug output.

Starting WICED Wiced_6.6.0.9
Started FreeRTOS v9.0.0
WICED_core Initialized
Initialising LwIP v2.0.3
WWD SDIO interface initializing with US/0
WLAN MAC Address : DC:EF:CA:25:0D:1F
WLAN Firmware : wl0: Jun 18 2020 08:48:22 version 7.45.98.102 (r726187 CY) FWID 01-36dd36be
WLAN CLM : API: 12.2 Data: 9.10.39 Compiler: 1.29.4 ClmImport: 1.36.3 Creation: 2020-06-18 08:36:02

I repeat the fact, wiced udp tx app is all okay, my app is unicast tx/rx okay, multicast rx okay, but multicast tx not okay. I am using same LwIP, which is in the SDK.

Thanks.

0 Likes