Thanks to your steep pass it IT finally WORKS !!!

Here are a few more stumbling blocks to be aware of:

#define FB_ENABLE_EXTERNAL_CLIENT must be set for Ethernet connection. For WLAN it must be deactivated. Therefore WLAN worked again after reinstalling the lib as described above.

you need to define the GPIO´s for Core 2 as following in the code

trust_anchors URL => www.google.com seems to work as Firebase is a google product

#include <M5Core2.h> is NOT necessary => if you use it with M5.begin you need to delete Serial.begin(115200) => otherwise your CPU will crash => known issue also thanks to felmue

NTP server is not working => always returns 0 => seems to work without NTP

Here is the working code i use:

/**

Created by K. Suwatchai (Mobizt) Email: k_suwatchai@hotmail.com Github: https://github.com/mobizt/Firebase-ESP-Client Copyright (c) 2022 mobizt

*/

/** This example shows the basic RTDB usage with external Client.

This example used your Arduino device and WIZnet W5500 (Ethernet) device which SSLClient https://github.com/OPEnSLab-OSU/SSLClient will be used as the external Client. This SSLClient, https://github.com/OPEnSLab-OSU/SSLClient can't use in ESP8266 device due to wdt reset error. Don't gorget to define this in FirebaseFS.h #define FB_ENABLE_EXTERNAL_CLIENT
*/

#include <Firebase_ESP_Client.h>

// Provide the token generation process info.
#include <addons/TokenHelper.h>

// Provide the RTDB payload printing info and other helper functions.
#include <addons/RTDBHelper.h>

#include <Ethernet.h>

/* 1. Install SSLClient library */
// https://github.com/OPEnSLab-OSU/SSLClient
#include <SSLClient.h>

/* 2. Create Trus anchors for the server i.e. www.google.com */
// https://github.com/OPEnSLab-OSU/SSLClient/blob/master/TrustAnchors.md
// or generate using this site https://openslab-osu.github.io/bearssl-certificate-utility/
#include "trust_anchors.h"

// For NTP time client
#include "MB_NTP.h"

// For the following credentials, see examples/Authentications/SignInAsUser/EmailPassword/EmailPassword.ino

/* 3. Define the API Key */
#define API_KEY "Key"

/* 4. Define the RTDB URL */
#define DATABASE_URL "URL" //<databaseName>.firebaseio.com or <databaseName>.<region>.firebasedatabase.app

/* 5. Define the user Email and password that alreadey registerd or added in your project */
#define USER_EMAIL "Email"
#define USER_PASSWORD "password"

/* 6. Defined the Ethernet module connection */
#define WIZNET_RESET_PIN 19 // Connect W5500 Reset pin to GPIO 19 for Core 2
#define WIZNET_CS_PIN 26 // Connect W5500 CS pin to GPIO 26 for Core 2
#define WIZNET_MISO_PIN 38 // Connect W5500 MISO pin to GPIO 38 for Core 2
#define WIZNET_MOSI_PIN 23 // Connect W5500 MOSI pin to GPIO 23 for Core 2
#define WIZNET_SCLK_PIN 18 // Connect W5500 SCLK pin to GPIO 18 for Core 2

/* 7. Define the analog GPIO pin to pull random bytes from, used in seeding the RNG for SSLClient */
const int analog_pin = 27; // Core 2 => GPIO 27 (Analog pin)

/* 8. Define MAC */
uint8_t mac[] = { 0x12, 0x12, 0x12, 0x12, 0x12, 0x12 };

/* 9. Define IP (Optional) */
IPAddress ip(192, 168, 1, 50);
IPAddress myDns(8, 8, 8, 8);

// Define Firebase Data object
FirebaseData fbdo;

FirebaseAuth auth;
FirebaseConfig config;

unsigned long sendDataPrevMillis = 0;

int count = 0;

volatile bool dataChanged = false;

EthernetClient basic_client;

SSLClient ssl_client(basic_client, TAs, (size_t)TAs_NUM, analog_pin);

// For NTP client
EthernetUDP udpClient;

MB_NTP ntpClient(&udpClient, "pool.ntp.org" /* NTP host /, 123 / NTP port /, 0 / timezone offset in seconds */);

uint32_t timestamp = 0;

void ResetEthernet() {
Serial.println("Resetting WIZnet W5500 Ethernet Board... ");
pinMode(WIZNET_RESET_PIN, OUTPUT);
digitalWrite(WIZNET_RESET_PIN, HIGH);
delay(200);
digitalWrite(WIZNET_RESET_PIN, LOW);
delay(50);
digitalWrite(WIZNET_RESET_PIN, HIGH);
delay(200);
}

void networkConnection() {

Ethernet.init(WIZNET_CS_PIN);

ResetEthernet();

Serial.println("Starting Ethernet connection...");

Ethernet.begin(mac);

unsigned long to = millis();

while (Ethernet.linkStatus() == LinkOFF || millis() - to < 2000) {
delay(100);
}

if (Ethernet.linkStatus() == LinkON) {
Serial.print("Connected with IP ");
Serial.println(Ethernet.localIP());
} else {
Serial.println("Can't connect");
}
}

// Define the callback function to handle server status acknowledgement
void networkStatusRequestCallback() {
// Set the network status

fbdo.setNetworkStatus(Ethernet.linkStatus() == LinkON);
}

// Define the callback function to handle server connection
void tcpConnectionRequestCallback(const char *host, int port) {

// You may need to set the system timestamp to use for
// auth token expiration checking.

if (timestamp == 0) {
timestamp = ntpClient.getTime(2000 /* wait 2000 ms */);
Serial.print("timestamp from NTP: ");
Serial.println(timestamp);

if (timestamp > 0) { Firebase.setSystemTime(timestamp); Serial.print("Firebase => setSystemTime done"); }

}

Serial.print("Connecting to server via external Client... ");
if (!ssl_client.connect(host, port)) {
Serial.println("failed.");
return;
}
Serial.println("success.");
}

void setup() {

SPI.begin(WIZNET_SCLK_PIN, WIZNET_MISO_PIN, WIZNET_MOSI_PIN, -1);
Serial.begin(115200);

networkConnection();

Serial_Printf("Firebase Client v%s\n\n", FIREBASE_CLIENT_VERSION);

/* Assign the api key (required) */
config.api_key = API_KEY;

/* Assign the user sign in credentials */
auth.user.email = USER_EMAIL;
auth.user.password = USER_PASSWORD;

/* Assign the RTDB URL (required) */
config.database_url = DATABASE_URL;

/* Assign the callback function for the long running token generation task */
config.token_status_callback = tokenStatusCallback; // see addons/TokenHelper.h

/* fbdo.setExternalClient and fbdo.setExternalClientCallbacks must be called before Firebase.begin */

/* Assign the pointer to global defined external SSL Client object */
fbdo.setExternalClient(&ssl_client);

/* Assign the required callback functions */
fbdo.setExternalClientCallbacks(tcpConnectionRequestCallback, networkConnection, networkStatusRequestCallback);

Firebase.setDoubleDigits(5);

Firebase.begin(&config, &auth);
}

void loop() {

// Firebase.ready() should be called repeatedly to handle authentication tasks.

if (Firebase.ready() && (millis() - sendDataPrevMillis > 15000 || sendDataPrevMillis == 0)) {
sendDataPrevMillis = millis();

Serial_Printf("Set bool... %s\n", Firebase.RTDB.setBool(&fbdo, F("/test/bool"), count % 2 == 0) ? "ok" : fbdo.errorReason().c_str()); count++;

}
}