1 votos

Arranque automático al conectar el cargador (para HTC Magic)

Quiero dejar que el sistema operativo Android se inicie automáticamente cuando el cargador conectado (para HTC Magic) sin pulsar el botón de encendido He encontrado esta guía:


Arranque completo al cargar

Si su teléfono sólo obtiene uno de esos feos símbolos de batería cuando se conecta un cargador a un teléfono apagado es porque el proceso de init es interrumpido por /system/bin/chargemon. Ese archivo es un programa binario ARM, yo lo he sustituido por un simple script que contiene una sola línea: echo skipping chargemon El archivo fue creado e instalado con los siguientes pasos:

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

Cuando se da el comando su arriba, es posible que haya que reconocerlo en un diálogo en la pantalla del teléfono. El comando final reboot -p apaga el teléfono. Como el cable USB sigue conectado se encenderá de nuevo, y si todo ha ido bien el teléfono completará su proceso de arranque sin detenerse con ningún símbolo de batería.


Pero no puedo encontrar "chargemon" en System/bin

0 votos

¿Ha encontrado alguna solución antes de esto?

0 votos

1voto

Tnt_Master21 Puntos 24

Conseguí que funcionara - el arranque automático cuando el cargador está enchufado - en mi HTC Desire 200. No hay playlpm/lpm/idot/chargemon en estos dispositivos HTC. Afortunadamente existe algo similar, /system/bin/zchgd . Se trata de un servicio que se encarga de la animación de la carga. En este dispositivo específico, la animación de carga se reproduce aunque el teléfono esté encendido (en la pantalla de bloqueo), también se reproduce cuando el teléfono se apaga mientras está en un cargador. (Por cierto: las imágenes de la animación se pueden encontrar en /system/media/zchrgd .)

Como he descubierto, el zchgd El servicio se inicia de forma diferente cuando el teléfono se apaga o se enciende. Sólo tengo que buscar en los scripts de init, en mi caso /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

Así que creé un falso zchgd servicio, un simple sh script que sustituye al servicio original.

Pasos:

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*

Contenido de mi servicio falso:

#!/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 $?

Cuando el servicio se inicia con -Pseudooffmode argumento, entonces comprueba el estado de la batería periódicamente (cada minuto en mi caso). Si el teléfono se está cargando o la batería está llena, entonces automáticamente automáticamente el teléfono. No he podido utilizar /system/bin/reboot , tengo errores de permisos, aunque los tenía... Así que lo reinicio con un hack, que dos líneas de eco. El -en el modo está ahí sólo porque, no quiero ver la animación de carga incluso si mi teléfono está encendido.

Puedes depurar el script con adb logcat -s zchgdwrapper . Espero que esto haya sido útil.

IMPORTANTE

Para que esto funcione, usted DEBE activar Configuración/Energía/Arranque rápido opción. No funcionará si está desactivada, creo que sin la opción de arranque rápido se arranca otro firmware, pero no estoy seguro de ello.

También tengo esta configuración en SuperSU# No creo que sea necesario pero, aquí está:

  • Acceso por defecto < Grant
  • Habilitar su durante el arranque
  • Usuario del sistema de confianza

Más información: https://github.com/tomicooler/htcdesire200autoboot

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X