ESp32-POE-ISO: POE problem

Started by IoTLY, May 24, 2021, 09:06:51 am

Previous topic - Next topic

IoTLY

May 24, 2021, 09:06:51 am Last Edit: May 27, 2021, 08:43:29 am by IoTLY
Hello, I hope someone could help us.
We have bought more than 150 ESp32-POE-ISO and currently we are having a serious problem related to POE. All the boards have the same problem. It happens without touching the ethernet connector, we have them all always connected , sometimes the boards freeze up when we power them via POE and the only solution that we have found is to reconnect the ethernet cable. We have been doing some tests and the boards seem to freeze when they enter the ethernet initialization part of the code but it does not happen always, it is random.

olimex

With no information about what software you are running on it, PoE model, etc is hard to speculate what you do wrong.

The randomness and the cure with the re-connection of the cable for me means that the hardware is OK (as it continue to work after cable re-connect), but your software require re-boot from time to time to operate correctly.

Search for memory leaks and/or bugs. I hope you use your own tested code, no untested by you 3rd party libraries from popular frameworks.

IoTLY

We are using the recommended library ETH.h, the boards freeze up in this part of the code:

void WiFiEvent(WiFiEvent_t event)
{
  switch (event) {
    case SYSTEM_EVENT_ETH_START:
      Serial.println("ETH Started");
      //set eth hostname here
      ETH.setHostname("esp32-ethernet");
      delay(2000);
      break;
    case SYSTEM_EVENT_ETH_CONNECTED:
      Serial.println("ETH Connected");
      break;
    case SYSTEM_EVENT_ETH_GOT_IP:
      Serial.print("ETH MAC: ");
      Serial.print(ETH.macAddress());
      Serial.print(", IPv4: ");
      Serial.println(ETH.localIP());
      postInfo(IdDispositivo, ETH.localIP().toString());

      if (ETH.fullDuplex()) {
        Serial.print(", FULL_DUPLEX");
      }
      Serial.print(", ");
      Serial.print(ETH.linkSpeed());
      Serial.println("Mbps");
      eth_connected = true;
      break;
    case SYSTEM_EVENT_ETH_DISCONNECTED:
      Serial.println("ETH Disconnected");
      eth_connected = false;
      break;
    case SYSTEM_EVENT_ETH_STOP:
      Serial.println("ETH Stopped");
      eth_connected = false;
      break;
    default:
      break;
  }
}

IoTLY

The Si3402-B-GM of the boards are getting really hot, i don't know if the problem could be temperature related. We have each board insolated in a PLA box and most of them (150 of 200 boards) freeze up sometimes. Please help

LubOlimex

The code that you posted is the default example except that you added "delay(2000)".

Did you select "ESP32-PoE-ISO" from the board selector in Arduino IDE?

Can you describe the hardware setup when the freeze occurs, and more precisely the following:

1. You have ESP32-POE-ISO connected to an USB cable with micro USB connector, and the USB cable is connected to a personal computer's USB port and then you enable the PoE, is this correct?

2. How do you enable the PoE - is the Ethernet cable already attached and you use software means to turn on the PoE, or maybe the Ethernet cable is detached and you plug it after enabling the PoE?

3. Do you have anything else notable attached to the board? Like Li-Po battery, or serial debug cable or something similar?

The reason I ask these questions is because I can't replicate the issue here no matter how many boards I test.... If there was a hardware problem in the board, it would have been easy to replicate here, but it simply doesn't happen.

Best regards,
Lub/OLIMEX
Technical support and documentation manager at Olimex

ddv2005

IoTLY, to find out is it software or hardware issue please upload default example and leave it for several days..If it freeze on default example then it is hardware issue if not then software.

LubOlimex, it can be hardware issue caused by manufacturer or chip defects but not because of design. My board died on first POE connect and Si3402 & LAN8710A got really hot. May be it is defective batch or etc.

LubOlimex

We test each board with PoE at 50V here, each board is tested empirically and PoE powering is one of the tests. If it was faulty chip we would have caught it on first launch.
Technical support and documentation manager at Olimex

IoTLY

First, thank you for your answer. Yes,  I selected ESP32-PoE-ISO in Arduino IDE.

1) Actually all the devices in the field installation  are connected to POE, we don't use the micro USB connector, we just use it to upload the program.

2) The ethernet cable is always attached and the ESP32-POE-ISO is always power on, we only disconnect it and reconnect it when it freezes up.

3) The setup consists in a ESP32-POE-ISO Rev. D, a Olimex  MOD-RFID1356MIFARE, 3 leds and a snap action switch.

Do you think it could be a temperature related problem? We don't understand why most of the boards we have (150 of 200 ESP32-POE-ISO) have this problem.

Quote from: LubOlimex on May 27, 2021, 01:56:03 pmThe code that you posted is the default example except that you added "delay(2000)".

Did you select "ESP32-PoE-ISO" from the board selector in Arduino IDE?

Can you describe the hardware setup when the freeze occurs, and more precisely the following:

1. You have ESP32-POE-ISO connected to an USB cable with micro USB connector, and the USB cable is connected to a personal computer's USB port and then you enable the PoE, is this correct?

2. How do you enable the PoE - is the Ethernet cable already attached and you use software means to turn on the PoE, or maybe the Ethernet cable is detached and you plug it after enabling the PoE?

3. Do you have anything else notable attached to the board? Like Li-Po battery, or serial debug cable or something similar?

The reason I ask these questions is because I can't replicate the issue here no matter how many boards I test.... If there was a hardware problem in the board, it would have been easy to replicate here, but it simply doesn't happen.

Best regards,
Lub/OLIMEX

LubOlimex

Regarding the heating - check if few of the failing boards behave better if they are outside of the cases, or maybe make some holes in the cases to see if the behavior improves. Worth a try. But I don't think it is temperature problem. Sure the boards get some heat but it is expected since you have to make 50V -> 5V some heat dissipation is expected, 55-60 degrees Celsius are expected.

I think with such big count of fails and the fact that the boards recover upon reset - software problems should be considered - maybe try few of the failing boards with simpler software to limit down the number of possibilities. Use only Ethernet demo, try another Ethernet demo or library or maybe even for the test try with ESP-IDF Ethernet demo.
Technical support and documentation manager at Olimex