M5Stack SD Card firmware Update

That is weird. Can you modify the function to

void updateFromFS(fs::FS &fs) {
   File updateBin = fs.open("/update.bin");
   M5.Lcd.println("Update file has size " + String(updateBin.size()));
   delay(1000);
   /*... */

to see if the file size is also seen correctly in the updateFromFS function? If yes, the if(..) check must be wrong, although it looks absolutely right through the overloaded bool() operator of the file object.