Forum Rule: Always post complete source code & details to reproduce any issue!
Results 1 to 11 of 11

Thread: Teensy 3.5 and WIZ850 Multicast

  1. #1

    Teensy 3.5 and WIZ850 Multicast

    Anyone who can help please!

    I am using the Teensy 3.5 and WIZ8510, trying to receive a UDP multicast data stream on, port 41000.

    I am using the sketch 'UDPSendReceiveString', which works perfectly if the data is sent out from the 'sending' computer to (say) port 55278, and I set that as the IP address of the WIZ8510 and local port 55278.

    But I can't get it to receive the data from the multicast address of port 41000, which is being used by the 'sending' computer, even with the WIZ8510 set to that IP and port.
    I am using the MAC address 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED as in the sketch example.

    Can anyone suggest what I am doing wrong?

    Thank you in anticipation of your help,


  2. #2
    Senior Member crees's Avatar
    Join Date
    Dec 2016
    Need more info . Code examples are helpful. What Ethernet library are you using because Older ones did not support multicast. Fire up wireshark and see if you get any igmp registrations coming from your wiz. If using a managed switch that is strictly following multicast flow will require a igmp querier. If so just use a non managed switch or directly connect the wiz to your testing source.

  3. #3
    Many thanks for your help - the relevant code for the UDP is as follows:

    #include <Ethernet.h>
    #include <EthernetUdp.h>

    byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; //Assign MAC address
    IPAddress ip(192, 168, 0, 177); // Assign IP address
    unsigned int localPort = 55278; // local port to listen on as defined in Condor setup file

    // buffers for receiving and sending data

    char packetBuffer[UDP_TX_PACKET_MAX_SIZE]; // buffer to hold incoming packet,
    char SendBuffer[UDP_TX_PACKET_MAX_SIZE]; // buffer to send out revised data
    EthernetUDP Udp;

    #define UDP_TX_PACKET_MAX_SIZE 1024

    void setup()

    Ethernet.init(10); // For Teensy 3.5
    Ethernet.begin(mac, ip); // start the Ethernet
    Udp.begin(localPort); // start UDP


    void loop()

    // if there's data available, read a packet
    int packetSize = Udp.parsePacket();
    if (packetSize)

    // read the packet into packetBufffer, UDP_TX_PACKET_MAX_SIZE);
    String Datapacket = packetBuffer;
    int ASI = Datapacket.indexOf('d');
    Speed = (Datapacket.substring((ASI+2),(ASI+4)));
    int Velocity = (Speed.toInt());
    analogWrite(FFPin,(255-(Velocity * 5)));

    // send a reply to the IP address and port that sent us the packet we received
    Udp.beginPacket(Udp.remoteIP(), Udp.remotePort());


    The code is directly from the 'examples' for the Teensy board, with the change for the buffer size.

    I will experiment with Wireshark and send you the received data. I am using a non-managed hub / switch (5 port 'NetGear') to connect the WIZ and other computers.

    Many thanks,


  4. #4
    Correction - that is the code that actually receives the UDP data - the changes for the multicast that I make are:

    IPAddress ip(224,11,5,62); // Assign IP address
    unsigned int localPort = 41000; // local port to listen on for the multicast

    This does NOT receive the multicast data.



  5. #5
    Senior Member+ manitou's Avatar
    Join Date
    Jan 2013
    I think you need Udp.beginMulticast(). Here is a 3 year old example

    and a little python script ( to exercise mutlicast:
    import socket
    import struct
    multicast_addr = ''
    bind_addr = ''
    port = 7654
    sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    membership = socket.inet_aton(multicast_addr) + socket.inet_aton(bind_addr)
    sock.setsockopt(socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP, membership)
    sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
    sock.bind((bind_addr, port))
    while True:
        message, address = sock.recvfrom(255)
        print message
    For MAC and linux users, you can send a UDP packet to a multicast IP with netcat
    echo "1234" | nc -u -w0 7654
    Last edited by manitou; 01-11-2020 at 02:29 PM.

  6. #6
    Dear Manitou,

    Many thanks - that example looks very promising! I will give it a test and let you know!

    Best wishes,


  7. #7
    Dear Manitou,

    Sorry - just another question - does the Udp.beginMulticast() apply to a CAT5 connection as well as WiFi? I am only using CAT5 - all the Ardunio examples appear to relate to WiFi for Udp.beginMulticast().

    Many thanks,


  8. #8
    Senior Member+ manitou's Avatar
    Join Date
    Jan 2013
    the example sketch provided was run with wiznet hardware (hardwired Ethernet RJ45) -- example should also work with wifi

  9. #9
    Senior Member crees's Avatar
    Join Date
    Dec 2016
    The Udp.beginMulticast() Initializes the wiz chips built in multicast capabilities. This is essential since it is what handles IGMP for you. Just remember that once you place this on a managed switched network that you will need to make sure your network is configured for multicast (igmp snooping, igmp querier etc) . On the other hand multicast traffic on a unmanaged switch also becomes broadcasts.

  10. #10
    Thanks for the clarification!


  11. #11
    Thanks Manitou!


Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts