diff --git a/Marlin/cardreader.h b/Marlin/cardreader.h
index 70f0d2c1d9407c0b8bb5fb1ca97f657198f57032..67fe58a90a69cc17b340d67becda040e61ac51e2 100644
--- a/Marlin/cardreader.h
+++ b/Marlin/cardreader.h
@@ -31,6 +31,8 @@ public:
   void ls();
   void chdir(const char * relpath);
   void updir();
+  void setroot();
+
 
   FORCE_INLINE bool eof() { return sdpos>=filesize ;};
   FORCE_INLINE int16_t get() {  sdpos = file.curPosition();return (int16_t)file.read();};
diff --git a/Marlin/cardreader.pde b/Marlin/cardreader.pde
index 3d9122497711284fdb249109e4f8ffbc8a91d552..a1f23ce068f23ea986e93b8c375f423dca812dc6 100644
--- a/Marlin/cardreader.pde
+++ b/Marlin/cardreader.pde
@@ -164,6 +164,15 @@ void CardReader::initsd()
     SERIAL_ECHOLNPGM("workDir open failed");
   }
 }
+
+void CardReader::setroot()
+{
+ curDir=&root;
+  if(!workDir.openRoot(&volume))
+  {
+    SERIAL_ECHOLNPGM("workDir open failed");
+  } 
+}
 void CardReader::release()
 {
   sdprinting = false;
diff --git a/Marlin/ultralcd.pde b/Marlin/ultralcd.pde
index ef86d8f32c619c58880c14d4afba17b3016d7712..69be85959a992f41ae1c0ad8ee8a3c59d9162ff1 100644
--- a/Marlin/ultralcd.pde
+++ b/Marlin/ultralcd.pde
@@ -467,7 +467,7 @@ void MainMenu::showPrepare()
       MENUITEM(  lcdprintPGM(" Main \003")  ,  BLOCK;status=Main_Menu;beepshort(); ) ;
       break;
     case ItemP_autostart:
-      MENUITEM(  lcdprintPGM(" Autostart")  ,  BLOCK;card.lastnr=0;card.checkautostart(true);beepshort(); ) ;
+      MENUITEM(  lcdprintPGM(" Autostart")  ,  BLOCK;card.lastnr=0;card.setroot();card.checkautostart(true);beepshort(); ) ;
       break;
     case ItemP_disstep:
       MENUITEM(  lcdprintPGM(" Disable Steppers")  ,  BLOCK;enquecommand("M84");beepshort(); ) ;