Index: apps/menus/settings_menu.c
===================================================================
--- apps/menus/settings_menu.c	(revision 12966)
+++ apps/menus/settings_menu.c	(working copy)
@@ -190,7 +190,7 @@
 
 /* Time & Date */
 #if CONFIG_RTC
-static int timedate_set(void)
+int timedate_set(void)
 {
     struct tm tm;
     int result;
@@ -223,7 +229,8 @@
 MENUITEM_FUNCTION(time_set, 0, ID2P(LANG_TIME), 
                     timedate_set, NULL, NULL, Icon_NOICON);
 MENUITEM_SETTING(timeformat, &global_settings.timeformat, NULL);
-MAKE_MENU(time_menu, ID2P(LANG_TIME_MENU), 0, Icon_NOICON, &time_set, &timeformat);
+MENUITEM_SETTING(rtc_prompt, &global_settings.rtc_prompt, NULL);
+MAKE_MENU(time_menu, ID2P(LANG_TIME_MENU), 0, Icon_NOICON, &time_set, &timeformat, &rtc_prompt);
 #endif
 
 /* System menu */
Index: apps/root_menu.c
===================================================================
--- apps/root_menu.c	(revision 12966)
+++ apps/root_menu.c	(working copy)
@@ -21,6 +21,7 @@
 #include <stdlib.h>
 #include <stdbool.h>
 #include "config.h"
+#include "settings_menu.h"
 #include "menu.h"
 #include "root_menu.h"
 #include "lang.h"
@@ -412,6 +413,11 @@
         next_screen = (int)global_status.last_screen;
     else next_screen = global_settings.start_in_screen - 2;
     
+#ifdef CONFIG_RTC
+    if(!valid_time(get_time()) && global_settings.rtc_prompt)
+        timedate_set();
+#endif
+
 #ifdef HAVE_RTC_ALARM
     if ( rtc_check_alarm_started(true) ) 
     {
Index: apps/settings_menu.h
===================================================================
--- apps/settings_menu.h	(revision 12966)
+++ apps/settings_menu.h	(working copy)
@@ -23,5 +23,6 @@
 
 bool settings_menu(void);
 bool manage_settings_menu(void);
+int timedate_set(void); 
 
 #endif
Index: apps/settings.h
===================================================================
--- apps/settings.h	(revision 12966)
+++ apps/settings.h	(working copy)
@@ -437,6 +437,7 @@
     int volume_type;   /* how volume is displayed: 0=graphic, 1=percent */
     int battery_display; /* how battery is displayed: 0=graphic, 1=percent */
     int timeformat;    /* time format: 0=24 hour clock, 1=12 hour clock */
+    bool rtc_prompt;
     bool playlist_shuffle;
     bool play_selected; /* Plays selected file even in shuffle mode */
     int ff_rewind_min_step; /* FF/Rewind minimum step size */
Index: apps/settings_list.c
===================================================================
--- apps/settings_list.c	(revision 12966)
+++ apps/settings_list.c	(working copy)
@@ -439,6 +439,7 @@
     CHOICE_SETTING(0, timeformat, LANG_TIMEFORMAT, 0,
         "time format", "24hour,12hour", NULL, 2,
         ID2P(LANG_24_HOUR_CLOCK), ID2P(LANG_12_HOUR_CLOCK)),
+    OFFON_SETTING(0, rtc_prompt, LANG_RTC_PROMPT, false, "prompt if date is invalid", NULL),
 #endif /* HAVE_LCD_BITMAP */
     OFFON_SETTING(0,show_icons, LANG_SHOW_ICONS ,true,"show icons", NULL),
     /* system */
Index: apps/lang/english.lang
===================================================================
--- apps/lang/english.lang	(revision 12966)
+++ apps/lang/english.lang	(working copy)
@@ -3937,6 +3937,20 @@
   </voice>
 </phrase>
 <phrase>
+  id: LANG_RTC_PROMPT
+  desc: setting to prompt for a time and date on startup when RTC is wrong
+  user:
+  <source>
+    *: "Prompt to Set Time/Date if Invalid"
+  </source>
+  <dest>
+    *: "Prompt to Set Time/Date if Invalid"
+  </dest>
+  <voice>
+    *: "Prompt to Set Time/Date if Invalid"
+  </voice>
+</phrase>
+<phrase>
   id: LANG_12_HOUR_CLOCK
   desc: option for 12 hour clock
   user:
