Index: apps/lang/english.lang
===================================================================
--- apps/lang/english.lang	(revision 29372)
+++ apps/lang/english.lang	(working copy)
@@ -12744,3 +12744,17 @@
     *: "In custom directories only"
   </voice>
 </phrase>
+<phrase>
+  id: LANG_BUTTONLIGHT_AS_INDICATOR
+  desc: in system settings
+  user:core
+  <source>
+    *: "Use buttonlight as disk activity indicator when connected"
+  </source>
+  <dest>
+    *: "Use buttonlight as disk activity indicator when connected"
+  </dest>
+  <voice>
+    *: "Use buttonlight as disk activity indicator when connected"
+  </voice>
+</phrase>
Index: apps/gui/statusbar.c
===================================================================
--- apps/gui/statusbar.c	(revision 29372)
+++ apps/gui/statusbar.c	(working copy)
@@ -46,6 +46,7 @@
 #endif
 #include "appevents.h"
 #include "timefuncs.h"
+#include "backlight.h"
 
 /* FIXME: should be removed from icon.h to avoid redefinition,
    but still needed for compatibility with old system */
@@ -186,6 +187,17 @@
 
 void gui_statusbar_draw(struct gui_statusbar * bar, bool force_redraw, struct viewport *vp)
 {
+#if CONFIG_LED == LED_VIRTUAL || defined(HAVE_REMOTE_LCD)
+/* Here we turn off the buttonlight if it is on, if the device is connected, 
+   and if the option is enabled.*/
+    if(usb_inserted()) {
+        if(global_settings.buttonlight_as_disk_indicator) {
+            buttonlight_set_timeout(0);
+            buttonlight_off();
+            }
+        }
+#endif 
+ /* Now, the problem is that somehow this overrides the backlight_timeout_plugged
+    setting. But when buttonlight_as_disk_indicator is false, this isn't a 
+    problem. The only real workaround is to engage the hold switch, but that
+    turns off all activity of the wheel light as well as the screen. */
+
     struct screen * display = bar->display;
 
     if (!display)
@@ -601,6 +613,12 @@
                          STATUSBAR_DISK_X_POS(display->getwidth()),
                          STATUSBAR_Y_POS, STATUSBAR_DISK_WIDTH,
                          STATUSBAR_HEIGHT);
+    /* turns on button light to indicate activity */
+    if(usb_inserted()) {
+        if(global_settings.buttonlight_as_disk_indicator) {
+            buttonlight_on();
+        }
+    }
 }
 #endif
 
Index: apps/settings.h
===================================================================
--- apps/settings.h	(revision 29372)
+++ apps/settings.h	(working copy)
@@ -729,6 +729,7 @@
 
 #ifdef HAVE_BUTTON_LIGHT
     int buttonlight_timeout;
+    bool buttonlight_as_disk_indicator;
 #endif
 #ifdef HAVE_BUTTONLIGHT_BRIGHTNESS
     int buttonlight_brightness;
Index: apps/menus/settings_menu.c
===================================================================
--- apps/menus/settings_menu.c	(revision 29372)
+++ apps/menus/settings_menu.c	(working copy)
@@ -277,6 +277,7 @@
 
 #ifdef HAVE_BUTTON_LIGHT
 MENUITEM_SETTING(buttonlight_timeout, &global_settings.buttonlight_timeout, NULL);
+MENUITEM_SETTING(buttonlight_as_disk_indicator, &global_settings.buttonlight_as_disk_indicator, NULL);
 #endif
 
 #ifdef HAVE_BUTTONLIGHT_BRIGHTNESS
@@ -318,6 +319,7 @@
 #endif
 #ifdef HAVE_BUTTON_LIGHT
             &buttonlight_timeout,
+            &buttonlight_as_disk_indicator,
 #endif
 #ifdef HAVE_BUTTONLIGHT_BRIGHTNESS
             &buttonlight_brightness,
Index: apps/settings_list.c
===================================================================
--- apps/settings_list.c	(revision 29372)
+++ apps/settings_list.c	(working copy)
@@ -1684,6 +1684,7 @@
                   UNIT_SEC, backlight_formatter, backlight_getlang,
                   buttonlight_set_timeout, 20,
                   -1,0,1,2,3,4,5,6,7,8,9,10,15,20,25,30,45,60,90,120),
+    OFFON_SETTING(0, buttonlight_as_disk_indicator, LANG_BUTTONLIGHT_AS_INDICATOR, false, "buttonlight as indicator", NULL),
 #endif
 #ifdef HAVE_BUTTONLIGHT_BRIGHTNESS
     INT_SETTING(F_NO_WRAP, buttonlight_brightness, LANG_BUTTONLIGHT_BRIGHTNESS,
