diff --git a/app/src/main/java/se/leap/bitmaskclient/drawer/NavigationDrawerFragment.java b/app/src/main/java/se/leap/bitmaskclient/drawer/NavigationDrawerFragment.java
index 104f1edc452ca92e28775137bd32b97cd96a057a..1097addb445ca3c07b6f4bb9a31ba7903f33e979 100644
--- a/app/src/main/java/se/leap/bitmaskclient/drawer/NavigationDrawerFragment.java
+++ b/app/src/main/java/se/leap/bitmaskclient/drawer/NavigationDrawerFragment.java
@@ -45,6 +45,8 @@ import android.view.View;
 import android.view.ViewGroup;
 import android.widget.TextView;
 
+import java.util.Observable;
+import java.util.Observer;
 import java.util.Set;
 
 import de.blinkt.openvpn.core.VpnStatus;
@@ -63,6 +65,7 @@ import se.leap.bitmaskclient.fragments.AlwaysOnDialog;
 import se.leap.bitmaskclient.fragments.ExcludeAppsFragment;
 import se.leap.bitmaskclient.fragments.LogFragment;
 import se.leap.bitmaskclient.fragments.TetheringDialog;
+import se.leap.bitmaskclient.tethering.TetheringObservable;
 import se.leap.bitmaskclient.utils.PreferenceHelper;
 import se.leap.bitmaskclient.views.IconSwitchEntry;
 import se.leap.bitmaskclient.views.IconTextEntry;
@@ -92,7 +95,7 @@ import static se.leap.bitmaskclient.utils.PreferenceHelper.usePluggableTransport
  * See the <a href="https://developer.android.com/design/patterns/navigation-drawer.html#Interaction">
  * design guidelines</a> for a complete explanation of the behaviors implemented here.
  */
-public class NavigationDrawerFragment extends Fragment implements SharedPreferences.OnSharedPreferenceChangeListener {
+public class NavigationDrawerFragment extends Fragment implements SharedPreferences.OnSharedPreferenceChangeListener, Observer {
 
     /**
      * Per the design guidelines, you should show the drawer on launch until the user manually
@@ -149,9 +152,16 @@ public class NavigationDrawerFragment extends Fragment implements SharedPreferen
                              Bundle savedInstanceState) {
         drawerView = inflater.inflate(R.layout.f_drawer_main, container, false);
         restoreFromSavedInstance(savedInstanceState);
+        TetheringObservable.getInstance().addObserver(this);
         return drawerView;
     }
 
+    @Override
+    public void onDestroyView() {
+        super.onDestroyView();
+        TetheringObservable.getInstance().deleteObserver(this);
+    }
+
     public boolean isDrawerOpen() {
         return drawerLayout != null && drawerLayout.isDrawerOpen(fragmentContainerView);
     }
@@ -313,6 +323,13 @@ public class NavigationDrawerFragment extends Fragment implements SharedPreferen
                 saveBattery(getContext(), false);
             }
         }));
+        boolean enableEntry = !TetheringObservable.getInstance().getTetheringState().isVpnTetheringRunning();
+        enableSaveBatteryEntry(enableEntry);
+    }
+
+    private void enableSaveBatteryEntry(boolean enabled) {
+        saveBattery.setEnabled(enabled);
+        saveBattery.showSubtitle(!enabled);
     }
 
     private void initAlwaysOnVpnEntry() {
@@ -630,4 +647,12 @@ public class NavigationDrawerFragment extends Fragment implements SharedPreferen
             initUseBridgesEntry();
         }
     }
+
+    @Override
+    public void update(Observable o, Object arg) {
+        if (o instanceof TetheringObservable) {
+            TetheringObservable observable = (TetheringObservable) o;
+            enableSaveBatteryEntry(!observable.getTetheringState().isVpnTetheringRunning());
+        }
+    }
 }
diff --git a/app/src/main/java/se/leap/bitmaskclient/views/IconSwitchEntry.java b/app/src/main/java/se/leap/bitmaskclient/views/IconSwitchEntry.java
index 02347b056a49781b79f914c80d7042e6ff4fff37..8bb809fd3db0f4788b10833c6e992a38e1a073d2 100644
--- a/app/src/main/java/se/leap/bitmaskclient/views/IconSwitchEntry.java
+++ b/app/src/main/java/se/leap/bitmaskclient/views/IconSwitchEntry.java
@@ -88,6 +88,10 @@ public class IconSwitchEntry extends LinearLayout {
         textView.setText(id);
     }
 
+    public void showSubtitle(boolean show) {
+        subtitleView.setVisibility(show ? VISIBLE : GONE);
+    }
+
     public void setIcon(@DrawableRes int id) {
         iconView.setImageResource(id);
     }
diff --git a/app/src/main/res/layout/f_drawer_main.xml b/app/src/main/res/layout/f_drawer_main.xml
index 191d547f7494b2b822deeb2a2fb11047d0de7c88..7e6291b7ef1b57076b806c59453eff8d1d64c0f4 100644
--- a/app/src/main/res/layout/f_drawer_main.xml
+++ b/app/src/main/res/layout/f_drawer_main.xml
@@ -65,6 +65,7 @@
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             app:text="@string/save_battery"
+            app:subtitle="@string/subtitle_save_battery"
             app:icon="@drawable/ic_battery_36"
             />
 
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index b5fc2fa2a83d54ea44372bac1262249eec728c90..61cedffb290baa7d7a62d81f626cd0cf8ad744ae 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -102,6 +102,7 @@
   <string name="vpn_certificate_is_invalid">VPN certificate is invalid. Try to download a new one.</string>
   <string name="vpn_certificate_user_message">The VPN certificate is invalid. Please log in to download a new one.</string>
   <string name="save_battery">Save battery</string>
+  <string name="subtitle_save_battery">Disabled while VPN Hotspot on</string>
   <string name="save_battery_message">Background data connections will hibernate when your phone is inactive.</string>
   <string name="always_on_vpn">Always-on VPN</string>
   <string name="subtitle_always_on_vpn">Open Android System Settings</string>