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

Thread: Teensy 4.1 Ethernet: Problem to assign a static IP if DHCP fails

  1. #1
    Junior Member
    Join Date
    May 2021
    Posts
    10

    Teensy 4.1 Ethernet: Problem to assign a static IP if DHCP fails

    Hello everyone

    I'm trying to get started with the Teensy 4.1 and its built in ethernet capabilities with the NativeEthernet library. I have tried using a static IP and DHCP in two seperate program attempts and both options work great. I'm now trying to first establich a DHCP connection to the network and if that doesn't work the Teensy should use a static IP address.

    Code:
    #include <SPI.h>
    #include <NativeEthernet.h>
    #include <EEPROM.h>
    
    //mac address for the Teensy:
    byte mac[] = {...};  //in my code of course i did put a mac address here :)
    //the IP address:
    IPAddress ip;
    // the subnet mask:
    IPAddress subnet(255, 255, 255, 0 );
    
    //port 23
    EthernetServer server = EthernetServer(23);
    
    void setup()
    {
      //Serial for testing purposes
      Serial.begin(9600);
    
      while (!Serial) {
        ; // wait for serial port to connect. Needed for native USB port only
      }
    
    // start the Ethernet connection and the server:
      if(Ethernet.begin(mac) == 0)
      {
        Serial.println("Failed to configure Ethernet using DHCP");
        // DHCP connection failed, use ip from EEPROM
        ip = IPAddress(EEPROM.read(0), EEPROM.read(1), EEPROM.read(2), EEPROM.read(3));
        Ethernet.begin(mac,ip);
      }
      Ethernet.setSubnetMask(subnet);
    
      // Check for Ethernet hardware
      if (Ethernet.hardwareStatus() == EthernetNoHardware)
      {
        Serial.println("Ethernet Hardware problem with the WizChip :(");
      }
      if (Ethernet.linkStatus() == LinkOFF)
      {
        Serial.println("Ethernet cable is not connected.");
      }
    
      
    
    // start the server
      server.begin();
      Serial.print("Using static IP: ");
      Serial.println(Ethernet.localIP());
    //  client = server.available();
    }
    
    void loop()
    {
    ...
    }
    If the DHCP fails and uses a static IP i get following message form Ethernet.localIP() in the serial monitor:

    Failed to configure Ethernet using DHCP
    Using static IP: 0.0.0.0


    Already checked:
    • EEPROM content is correct
    • Content of the ip variable right before and right after Ethernet.begin(mac,ip); is correct
    • Pinging the Teensy under the assigned IP address didn't work
    • Assigning the numbers directly to the ip variable without the EEPROM.read function worked but still gave me nulls in the serial screen


    I tried the code on the Arduino with an ethernet shield and it worked just fine and gave me the assigned IP address instead of nulls.

    Is there anyone with a clue on what I did wrong in my code?
    Thanks in advance for helping.

  2. #2
    Junior Member
    Join Date
    May 2021
    Posts
    10
    Hello again,
    there is a bugfix for this issue in the new NativeEthernet libraries on Github. Install these libraries in the correct way and everything will work fine.

Posting Permissions

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