5

I have a Nexus 5 (hammerhead) running CyanogenMod 11.

The Volume Down rocker button is damaged in such a way that it's stuck on (apparently a common failure mode after 2+ years).

The only real problem with the device is that it always boots into safe mode, due to the stuck button.

Is there any way to disable the Volume Down activation of Safe Mode, so that I can boot my phone into normal, full Android mode?

  • 1
    Having exactly the same problem (damaged volume buttons and Can't get rid of Safe Mode). Did you find a solution? – Janthelme Nov 30 '16 at 7:15
  • Unfortunately not. :( – Dan Dec 1 '16 at 22:37
  • @janthelme, see answer I just added which does the trick. (By fully disabling the <kbd>VOLUME DOWN</kbd> button in Android.) – Dan Jan 10 '17 at 19:26
3

Right way to do this

Disable the broken VOLUME DOWN key by editing /system/usr/keylayout/gpio-keys.kl and /system/usr/keylayout/Generic.kl as root and commenting that key out. Longer instructions on this answer.

Dumb and hacky approach that sort of worked for me

This is an ugly solution but it works for me. It is a "tethered" solution requiring adb to do repeated "soft reboots" (restarting the Android Zygote process).

This bash script repeatedly restarts the Android Zygote process until it detects that the device isn't in safe mode. Takes about 20-50 reboots until my device randomly gets lucky and doesn't restart in safe mode…

#!/bin/sh
n=0
g=0
while true; do
    safe_mode=$(adb shell dumpsys display | egrep -o 'mSafeMode=\w+' | cut -d= -f2)
    case "$safe_mode" in
    true)
        n=$(( $n + 1 ))
        g=0
        echo "In safe mode, rebooting (try #${n}) ..."
        adb shell "su root -- killall zygote"
        ;;
    false)
        g=$(( $g + 1 ))
        [[ $g -gt 2 ]] && break;
        echo "Appears not to be in safe mode, will check again ..."
        ;;
    *)
        echo "adb shell dumpsys display failed" ;;
    esac
    sleep 15
done

adb shell dumpsys power | grep -q 'mScreenOn=false' && \
    adb shell input keyevent = POWER

echo "Escaped from safe mode after ${n} reboots. Whew."

This related question and this answer gave me what I needed to figure it out.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.