Ich möchte, dass das Android-Betriebssystem automatisch gestartet wird, wenn das Ladegerät angeschlossen ist (für HTC Magic), ohne den Netzschalter zu drücken. Ich habe diese Anleitung gefunden:
Wenn Ihr Telefon nur eines dieser hässlichen Batteriesymbole erhält, wenn ein Ladegerät an ein ausgeschaltetes Telefon angeschlossen ist, liegt dies daran, dass der Init-Prozess durch /system/bin/chargemon unterbrochen wird. Diese Datei ist ein binäres ARM-Programm, ich habe sie durch ein einfaches Skript ersetzt, das nur eine einzige Zeile enthält: echo skipping chargemon Die Datei wurde mit den folgenden Schritten erstellt und installiert:
echo "echo skipping chargemon" > chargemon.script
adb pull /system/bin/chargemon chargemon.backup
adb push chargemon.script /sqlite_stmt_journals
adb shell
$ cd /sqlite_stmt_journals
$ su
# mount -o remount,rw /dev/block/mtdblock0 /system
# cat chargemon.script > /system/bin/chargemon
# chmod 755 /system/bin/chargemon
# reboot -p
Wenn der Befehl su oben gegeben wird, muss er möglicherweise in einem Dialog auf dem Telefonbildschirm bestätigt werden. Der letzte Befehl reboot -p fährt das Telefon herunter. Da das USB-Kabel noch angeschlossen ist, schaltet es sich wieder ein, und wenn alles gut gegangen ist, schließt das Telefon seinen Startvorgang ab, ohne mit einem Batteriesymbol anzuhalten.
Aber ich kann "chargemon" nicht in System/bin finden
Ich habe es zum Laufen gebracht - automatischer Start, wenn das Ladegerät angeschlossen ist - auf meinem HTC Desire 200. Auf diesen HTC-Geräten gibt es kein playlpm/lpm/idot/chargemon . Glücklicherweise gibt es etwas Ähnliches, /system/bin/zchgd . Dies ist ein Dienst, der sich um die Ladeanimation kümmert. Auf diesem speziellen Gerät wird die Ladeanimation abgespielt, obwohl das Telefon eingeschaltet ist (auf dem Sperrbildschirm), sie wird auch abgespielt, wenn das Telefon ausgeschaltet wird, während es sich auf einem Ladegerät befindet. (Übrigens: Die Bilder für die Animation finden Sie unter /system/media/zchrgd .)
Wie ich herausgefunden habe, wird der zchgd- Dienst unterschiedlich gestartet, wenn das Telefon aus- oder eingeschaltet wird. Ich gehe einfach durch die Init-Skripte, in meinem Fall /init.gtou.rc :
service zchgd_offmode /system/bin/zchgd -pseudooffmode
user root
group root graphics
disabled
service zchgd_onmode /system/bin/zchgd -onmode
user root
group root graphics
on property:dev.zcharge=true
start zchgd_onmode
on property:dev.zcharge=false
stop zchgd_onmode
Also habe ich einen gefälschten zchgd- Dienst erstellt, ein einfaches sh- Skript, das den ursprünglichen Dienst ersetzt.
Schritte:
adb shell
su
mount -o rw,remount,rw /system
cd /system/bin
ls -l zchgd*
mv zchgd zchgd_original
touch zchgd
vi zchgd # <- insert content
chmod 0755 zchgd
chown root.shell zchgd
ls -l zchgd*
Inhalt meines gefälschten Dienstes:
#!/system/bin/sh
log -p v -t "zchgdwrapper" "Starting fake zchgd service; args='$@'"
if [ "$#" -eq 1 ]; then
case $1 in
-pseudooffmode)
log -p v -t "zchgdwrapper" "PseudoOffMode service"
while true; do
sleep 60
enabled=$(cat /sys/class/power_supply/battery/charging_enabled)
log -p v -t "zchgdwrapper" "Checking battery charging enabled; enabled='$enabled'"
if [ "$enabled" -gt 0 ]; then
log -p v -t "zchgdwrapper" "Going to magic-reboot"
su -c "echo 1 > /proc/sys/kernel/sysrq"
su -c "echo b > /proc/sysrq-trigger"
ret=$?
log -p v -t "zchgdwrapper" "Magic-reboot issued ret='$ret'"
sleep 120
exit 0
fi
done
;;
-onmode)
log -p v -t "zchgdwrapper" "OnMode service"
while true; do
log -p v -t "zchgdwrapper" "Sleeping beauty"
sleep 3600
done
;;
esac
fi
log -p v -t "zchgdwrapper" "Not gonna happen - starting the original service"
/system/bin/zchgd_original $@
exit $?
Wenn der Dienst mit dem Argument -pseudooffmode gestartet wird , überprüft er regelmäßig den Batteriestatus (in meinem Fall jede Minute). Wenn das Telefon aufgeladen wird oder der Akku voll ist, wird das Telefon automatisch neu gestartet. Ich konnte /system/bin/reboot nicht verwenden , ich bekam Berechtigungsfehler, obwohl ich sie hatte ... Also starte ich es mit einem Hack neu, dass zwei Zeilen echoen. Der -onmode ist nur da, weil ich die Ladeanimation nicht sehen möchte, selbst wenn mein Telefon eingeschaltet ist.
Sie können das Skript mit adb logcat -s zchgdwrapper debuggen . Ich hoffe, das war hilfreich!
WICHTIG
Damit dies funktioniert, MÜSSEN Sie die Option Einstellungen/Energie/Schnellstart aktivieren . Es funktioniert nicht, wenn es deaktiviert ist, ich denke, ohne die Schnellstartoption wird eine andere Firmware gebootet, aber ich bin mir da nicht sicher.
Auch ich habe diese Konfiguration in SuperSU# , ich denke nicht, dass es notwendig ist, aber hier ist es:
Weitere Infos: https://github.com/tomicooler/htcdesire200autoboot
Machado
Irfan Latif