Can you try to re-compile the code with that section commented out?
mmc_start_read_block(mbr->sector.partition[0].sectorOffset);
if ((vbr->bsFileSysType[0] != 'F') || (vbr->bsFileSysType[4] != '6')){
return 2; // No FAT16 found <<<<<<<<<<<<<< REMOVE TO TEST
}
From what I see here:
uint8_t bsFileSysType[8]; // 54-61 Filesystem type (E.g. "FAT12 ", "FAT16 ", "FAT ", or all zero.)
obviously that line is looking for a string 'FAT16' (positions 0 and 4 must be 'F' and '6' respectively) and not finding it, probably something that today's format tools omit?? strange indeed.