Tech Support: ESP32 + Ethernet Carrier = no boot. invalid header 0xffffffff

  • - Micromod single slot main board
  • - Micromod ESP32 Processor
  • - Micromod Ethernet
  • If i have only the ESP32 hooked up to the main board I am able to to upload a simple sketch (LED blink) and communicate with the processor via serial. (notwithstanding the hideous bug here: viewtopic.php?f=182&t=55461&p=239992#p239992)

    However if I add then power down, and insert the Ethernet function board and power back up (via a PC’s USB) the sketch no longer runs (LED not blinking), and on a serial monitor I see this:

    rst:0x10 (RTCWDT_RTC_RESET),boot:0x33 (SPI_FAST_FLASH_BOOT)
    invalid header: 0xffffffff
    invalid header: 0xffffffff
    invalid header: 0xffffffff
    invalid header: 0xffffffff
    invalid header: 0xffffffff
    invalid header: 0xffffffff
    invalid header: 0xffffffff
    ets Jul 29 2019 12:21:46
    

    This sequence repeats

    If I remove the Ethernet board the ESP32 seems to work fine again.

    Without the Ethernet board the main board’s lights are all lit except for “CHG”. When the Ethernet board is connected The lights on the main board are the same. The PWR light on the Ethernet board is also lit.

    In none of the above is any Ethernet cable attached.

    If I do use connect the Ethernet board to a PoE source, the PoE light is lit. The main board’s 3V3 and QWC are lit. VIN is not lit. The sketch does not run. If I then plug in a USB cable: VIN lights, and on the serial monitor I see the same message sequence

    Since this is the most basic test I can think of I’m at a loss as to what to do next.

    Thank you.

    First, ensure the standard esp32 library is installed https://learn.sparkfun.com/tutorials/mi … rogramming

    Then, ensure you have altered the arduino sketch being loaded to match the esp32 micromod pin#s https://learn.sparkfun.com/tutorials/mi … no-example

    And try powering over PoE again - any change (does VIN on main board light up)?

    Hi Russel,

    The board is selected in the board manager correctly, see attached images. I have used other ESP32 boards in this way without trouble. The basic sketches (LED blink, or plain serial.println every 500 ms) upload and run fine as long as the Ethernet board is not attached. I confirm with PoE powering the board only the Vin light is NOT lit.

    The sketch I am using does not use the Ethernet board’s functionality in any way, nor does it include any Ethernet libraries so I can’t see how the pins are yet relevant. The only pin I’ve used is the LED pin. I also tried the same sketch without using the LED pin (serial writing only), same result.

    Sketch:

    int ledPin = 2;
    
    void setup() {
      // put your setup code here, to run once:
        pinMode(ledPin, OUTPUT);
        Serial.begin(115200);
    }
    
    void loop() {
      // put your main code here, to run repeatedly:
        Serial.println("Running...");
        digitalWrite(ledPin, HIGH);
        delay(500);
        digitalWrite(ledPin, LOW);
        delay(500);
    }
    

    Alright I guess I’ll have to return the parts. Too bad, I was hoping to use this system in a couple of my company’s instruments.

    Drats - file for a return or refund (preference) here www.sparkfun.com/returns (or contact vendor if purchased elsewhere) and we’ll get ya squared away

    For everyone else coming here, I’d like to point to my recent post from 2025

    The issue is not solved yet but I found out that the problem only happens with a Micromod Single Board + Poe-Ethernet.

    Everything works fine when using a Micromod Double Board + PoE-Ethernet.

    2 Likes

    Looking at the schematics, the issue is related to using GPIO12- PWM1 on the ESP32. A side note on the MM ESP32 states: Pulling GPIO12 high may prevent flashing and/or booting.
    The ESP32 GPIO12 is connected to pin 47 for MM-2222 processor connector.

    On a single MM motherboard, the processor pin 47 is used for for PWR-EN0 and connected to the function board MM connector pin 71. On the Ethernet function board this is can be used to DISABLE power (pulling low). It has a pull-up of 10K to 3v3. Hence is does prevent flashing and booting

    On a double MM motherboard, the processor PIN 47 is used PWM1 on function board connector FC1. And this is not connected and thus it works.

    Just in case you wonder, how is FC0 / pin 71 /PWR-EN0 connected… it is connected to pin 66 on processor MM and on an MM ESP32 this pin is not connected.

    1 Like

    Hi, ok thank you for the explanation.

    As I am not so experienced - what is it that I would have to do now to make it work with the board with 1 function slot?

    And since this seems to be a general issue that I assume should be addressed by Sparkfun (I assume this happens for everyone using the same configuration) - would you mind posting your solution or problem analysis to the new thread I have created (maybe a Sparkfun employee is already looking into that)?

    I will copy/paste the info as indeed everyone with MM ESP32, single MM mother board and MM ethernet will have this issue.

    Not much you can do except for cutting a trace on the ESP32MM, the MM motherboard OR Ethernet MM. Easier, best workaround is using double MM mother board.

    1 Like