Index: apps/gui/usb_screen.c
===================================================================
--- apps/gui/usb_screen.c	(revision 28222)
+++ apps/gui/usb_screen.c	(working copy)
@@ -241,7 +241,7 @@
     }
 }
 
-void gui_usb_screen_run(void)
+void gui_usb_screen_run(bool early_usb)
 {
     int i;
     struct usb_screen_vps_t usb_screen_vps_ar[NB_SCREENS];
@@ -262,14 +262,18 @@
     usb_keypad_mode = global_settings.usb_keypad_mode;
 #endif
 
-    /* The font system leaves the .fnt fd's open, so we need for force close them all */
+    if(!early_usb)
+    {
+        /* The font system leaves the .fnt fd's open, so we need for force close them all */
 #ifdef HAVE_LCD_BITMAP
-    font_reset(NULL);
+        font_reset(NULL);
 #ifdef HAVE_REMOTE_LCD
-    font_load_remoteui(NULL);
+        font_load_remoteui(NULL);
 #endif
-    skin_font_init(); /* unload all the skin fonts */
+        skin_font_init(); /* unload all the skin fonts */
 #endif
+    }
+
     FOR_NB_SCREENS(i)
     {
         struct screen *screen = &screens[i];
@@ -324,9 +328,12 @@
     status_set_usb(false);
 #endif /* HAVE_LCD_CHARCELLS */
 #ifdef HAVE_LCD_BITMAP
-    /* Not pretty, reload all settings so fonts are loaded again correctly */
-    settings_apply(true);
-    settings_apply_skins();
+    if(!early_usb)
+    {
+        /* Not pretty, reload all settings so fonts are loaded again correctly */
+        settings_apply(true);
+        settings_apply_skins();
+    }
 #endif
 
     FOR_NB_SCREENS(i)
Index: apps/gui/usb_screen.h
===================================================================
--- apps/gui/usb_screen.h	(revision 28222)
+++ apps/gui/usb_screen.h	(working copy)
@@ -22,9 +22,9 @@
 #define _USB_SCREEN_H_
 
 #ifdef USB_NONE
-static inline void gui_usb_screen_run(void) {}
+static inline void gui_usb_screen_run(bool early_usb) {}
 #else
-extern void gui_usb_screen_run(void);
+extern void gui_usb_screen_run(bool early_usb);
 #endif
 
 #endif
Index: apps/main.c
===================================================================
--- apps/main.c	(revision 28222)
+++ apps/main.c	(working copy)
@@ -573,7 +573,7 @@
                 (mmc_remove_request() == SYS_HOTSWAP_EXTRACTED))
 #endif
             {
-                gui_usb_screen_run();
+                gui_usb_screen_run(true);
                 mounted = true; /* mounting done @ end of USB mode */
             }
 #ifdef HAVE_USB_POWER
@@ -600,7 +600,7 @@
             lcd_update();
 
             while(button_get(true) != SYS_USB_CONNECTED) {};
-            gui_usb_screen_run();
+            gui_usb_screen_run(true);
             system_reboot();
         }
     }
Index: apps/misc.c
===================================================================
--- apps/misc.c	(revision 28222)
+++ apps/misc.c	(working copy)
@@ -547,7 +547,7 @@
                 check_bootfile(false); /* gets initial size */
 #endif
 #endif
-                gui_usb_screen_run();
+                gui_usb_screen_run(false);
 #ifdef BOOTFILE
 #if !defined(USB_NONE) && !defined(USB_HANDLED_BY_OF)
                 check_bootfile(true);
