diff -ru ./SD/src/SD.cpp ~/SD/src/SD.cpp --- ./SD/src/SD.cpp 2019-10-11 11:15:02.000000000 -0400 +++ ~/SD/src/SD.cpp 2022-09-13 20:31:19.079137600 -0400 @@ -613,7 +613,8 @@ //Serial.print("try to open file "); //Serial.println(name); - if (f.open(_file, name, mode)) { + uint16_t index = _file->curPosition() / sizeof(dir_t) - 1; + if (f.open(_file, index, mode)) { //Serial.println("OK!"); return File(f, name); } else { diff -ru ./SD/src/utility/SdFat.h ~/SD/src/utility/SdFat.h --- ./SD/src/utility/SdFat.h 2019-10-11 11:15:02.000000000 -0400 +++ ~/SD/src/utility/SdFat.h 2020-02-20 15:35:31.724036500 -0500 @@ -437,7 +437,7 @@ // private data uint8_t flags_; // See above for definition of flags_ bits - uint8_t type_; // type of file see above for values + volatile uint8_t type_; // type of file see above for values uint32_t curCluster_; // cluster for current file position uint32_t curPosition_; // current file position in bytes from beginning uint32_t dirBlock_; // SD block that contains directory entry for file