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

Thread: Native Ethernet on Teensy 4.1

  1. #1
    Junior Member
    Join Date
    Jun 2021
    Posts
    7

    Native Ethernet on Teensy 4.1

    Hi,

    I'm trying to get started with the native Ethernet on Teensy 4.1 but I can get the UDPSendReceiveString example to work. It works fine on an Arduino Uno with Ethernet shield so on the PC side the script is working fine.
    I don't know much about network communication, are there any steps that I'm missing or settings that I can try?

    Thanks.

    Click image for larger version. 

Name:	Wiring.jpg 
Views:	27 
Size:	114.1 KB 
ID:	25620

    Code:
    #include <NativeEthernet.h>
    #include <NativeEthernetUdp.h>
    
    // Enter a MAC address and IP address for your controller below.
    // The IP address will be dependent on your local network:
    byte mac[] = {
      0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xAD
    };
    IPAddress ip(192, 168, 0, 20);
    
    unsigned int localPort = 8888;      // local port to listen on
    
    // buffers for receiving and sending data
    char packetBuffer[UDP_TX_PACKET_MAX_SIZE];  // buffer to hold incoming packet,
    char ReplyBuffer[] = "acknowledged";        // a string to send back
    
    // An EthernetUDP instance to let us send and receive packets over UDP
    EthernetUDP Udp;
    
    void setup() {
      // You can use Ethernet.init(pin) to configure the CS pin
      //Ethernet.init(10);  // Most Arduino shields
      //Ethernet.init(5);   // MKR ETH shield
      //Ethernet.init(0);   // Teensy 2.0
      //Ethernet.init(20);  // Teensy++ 2.0
      //Ethernet.init(15);  // ESP8266 with Adafruit Featherwing Ethernet
      //Ethernet.init(33);  // ESP32 with Adafruit Featherwing Ethernet
    
      // start the Ethernet
      Ethernet.begin(mac, ip);
    
      // Open serial communications and wait for port to open:
      Serial.begin(9600);
      while (!Serial) {
        ; // wait for serial port to connect. Needed for native USB port only
      }
    
      // Check for Ethernet hardware present
      if (Ethernet.hardwareStatus() == EthernetNoHardware) {
        Serial.println("Ethernet shield was not found.  Sorry, can't run without hardware. :(");
        while (true) {
          delay(1); // do nothing, no point running without Ethernet hardware
        }
      }
      if (Ethernet.linkStatus() == LinkOFF) {
        Serial.println("Ethernet cable is not connected.");
      }
    
      // start UDP
      Udp.begin(localPort);
    }
    
    void loop() {
      // if there's data available, read a packet
      int packetSize = Udp.parsePacket();
      if (packetSize) {
        Serial.print("Received packet of size ");
        Serial.println(packetSize);
        Serial.print("From ");
        IPAddress remote = Udp.remoteIP();
        for (int i=0; i < 4; i++) {
          Serial.print(remote[i], DEC);
          if (i < 3) {
            Serial.print(".");
          }
        }
        Serial.print(", port ");
        Serial.println(Udp.remotePort());
    
        // read the packet into packetBufffer
        Udp.read(packetBuffer, UDP_TX_PACKET_MAX_SIZE);
        Serial.println("Contents:");
        Serial.println(packetBuffer);
    
        // send a reply to the IP address and port that sent us the packet we received
        Udp.beginPacket(Udp.remoteIP(), Udp.remotePort());
        Udp.write(ReplyBuffer);
        Udp.endPacket();
      }
    
      delay(10);
    }

  2. #2
    Junior Member
    Join Date
    Jun 2021
    Posts
    7
    Correction: can't get it to work

  3. #3
    Senior Member+ manitou's Avatar
    Join Date
    Jan 2013
    Posts
    2,655
    Your sketch works for me. What do you observe? Packet is never received ? or reply is not seen by sender? can you ping the Teensy 4.1?
    Can you run wireshark/tcpdump and and observe the packets ?

    do any of the NativeEthernet examples work for you?

    Probably should zero packetBuffer before Udp.read() -- cosmetic

  4. #4
    Senior Member BriComp's Avatar
    Join Date
    Apr 2014
    Location
    Cheltenham, UK
    Posts
    423
    What version of Arduino and Teensyduino are you using?
    Latest Teensduino in beta includes corrections for NativeEthernet.

  5. #5
    Junior Member
    Join Date
    Jun 2021
    Posts
    7
    Thanks, I installed the newest version of Teensyduino and now it works!

    I was indeed not receiving any packets. Thanks for referring me to Wireshark, what an awesome tool! I expect it will make my life a lot easier going forward.

    Indeed it would be cleaner to clear packetBuffer before writing to it, shall do!

    Many thanks!!

Posting Permissions

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