Enciende automáticamente Android cuando el cargador está conectado

¿Es posible encender automáticamente el dispositivo una vez que el cargador está conectado dado que el dispositivo está inicialmente apagado?

Respuestas (7)

El gráfico de carga de la batería se muestra por /system/bin/playlpmarchivo en los dispositivos Samsung.

Si es root, puede editar este archivo para:

#!/system/bin/sh
/system/bin/reboot

Y asegúrese de agregar esos permisos al archivo:

chmod 0755 /system/bin/playlpm
chown root.shell /system/bin/playlpm

Su dispositivo ahora se iniciará cuando esté enchufado

Hola, tengo un dispositivo Cyanogenmod, ¿sabes cómo puedo hacer esto en cyanogenmod? Gracias
Esto solo funciona en dispositivos Samsung. Esto puede ser útil para usted
Si está tratando de hacer esto, asegúrese de no tener retornos de carro en su archivo playlpm o no funcionará.

fastboot oem off-mode-charge 0es el método genuino si su dispositivo lo admite. Es el método recomendado por Google, pero no todos los OEM/proveedores implementan el comando en el gestor de arranque. O en algunos dispositivos se reinicia en el próximo reinicio. Si off-mode-chargeestá deshabilitado, el cargador de arranque no pasará androidboot.mode=chargerel parámetro de la línea de comandos al núcleo cuando se inserte el cargador, por lo que el dispositivo se inicia normalmente.

De lo contrario, cuando ro.bootmodela propiedad se establece en chargerel arranque, initno continúa el proceso de arranque normal . En su lugar, se inicia un número limitado de servicios y se muestra una animación de carga. Por lo tanto, puede indicar initque reinicie el dispositivo cada vez que se detecte el modo de cargador. Cree un nuevo .rcarchivo o edite uno existente:

# /system/etc/init/off_mode_charge.rc

on charger
    setprop sys.powerctl reboot,leaving-off-mode-charging

O ejecutar rebootbinario:

on charger
    exec - -- /system/bin/reboot leaving-off-mode-charging

Pero si se aplica SELinux, es posible que la política de existencias no permita la initejecución /system/bin/reboot. Entonces use el contexto de Magisk (o cualquier solución de enraizamiento que use):

on charger
    exec u:r:magisk:s0 -- /system/bin/reboot

No olvide establecer permisos en el *.rcarchivo ( chown 0.0, chmod 0644, chcon u:object_r:system_file:s0).

También es posible continuar el proceso de arranque en lugar de reiniciar el dispositivo reemplazándolo class_start chargercon trigger late-initel /init.rcarchivo:

on charger
    #class_start charger
    trigger late-init

O configurando la propiedad sys.boot_from_charger_mode:

on charger
    setprop sys.boot_from_charger_mode 1
  • Este método debería funcionar en todos los dispositivos, independientemente del OEM, ya que no depende de los binarios de carga específicos del proveedor, como playlpm, battery_charging, chargeonlymode, zchgd, kpoc_chargeretc.
  • Tampoco es una buena idea reemplazar binarios de servicios importantes como healthd, que se encargan de muchas cosas relacionadas con la batería, el almacenamiento, etc. En este caso, si el servicio se ejecuta en modo chargery normal, el dispositivo puede entrar en bootloop.
  • En dispositivos que no son System-as-Root, no es necesario modificar la /systempartición (por ejemplo, si no desea interrumpir dm-veritypara que funcionen las actualizaciones OTA). Simplemente descomprima boot.imgy edite /init.rcel archivo en formato ramdisk.
  • Aunque no es necesario, también es posible ejecutar un init.dscript desde un .rcarchivo. Para referencia, consulte ¿Cómo ejecutar un ejecutable en el arranque? y ¿Cómo se apaga cuando se retira el cargador? .

RELACIONADO:

@JeffLuyet gracias por la corrección de ruta. Puede hacer una nueva pregunta si algo no se aborda correctamente en las preguntas/respuestas existentes. Acabo de ver la edición propuesta por casualidad. No se envía ninguna notificación. // No sé exactamente por qué no funcionó para ti. He estado jugando con initel .rcarchivo de al menos desde Android 7. Y siempre funcionó. Por lo general, SELinux es la parte más problemática. Debería haber visto los registros del núcleo ( dmesg) justo después del primer intento fallido. initregistra sus eventos en el registro del kernel. Así es como se puede identificar el problema.
@IrfanLatif Gracias por tu publicación aquí. Tengo el siguiente problema, ¿tengo que ser root para esto? yo obtengogta3xlwifi:/etc/init $ cat > off-mode-charge.rc /system/bin/sh: can't create off-mode-charge.rc: Read-only file system
@omega1 definitivamente necesitas ser root. O al menos necesita tener una recuperación personalizada para modificar boot.imgo /systemdesde allí. Ninguno de los métodos para encender automáticamente cuando el cargador está conectado puede funcionar sin root, excepto fastboot oem off-mode-charge(si es compatible con su dispositivo).
@IrfanLatif Gracias por confirmar. No es compatible fastboot oem off-mode-chargey fallé estrepitosamente al rootear el dispositivo (Samsung SM-T510), seguí todas las guías que pude encontrar y me quedé atascado con errores o fallé en diferentes partes de los pasos (debo estar omitiendo algo) . Logré cargar en TWRP, ¿podría modificar boot.img desde allí? Podría buscar eso y ver si puedo hacerlo de esa manera. ¿¡Quién hubiera pensado que sería tan difícil!?

Entonces, hay muchas maneras de hacerlo. El más adecuado, como siempre respaldado por Google (y cada vez más por otros, por ejemplo, nvidia de nougat) es este comando fastboot

fastboot oem off-mode-charge 0

De lo contrario, puede secuestrar el binario de carga (no se garantiza que sea posible en todos los dispositivos, pero solo requiere root) o parchear su ramdisk (teóricamente universal, pero requerirá un gestor de arranque desbloqueado).

Para la primera solución, deberá encontrar algún lugar en la partición de su sistema (generalmente la carpeta bin ) donde reside el programa a cargo de la animación de la batería y todo. Algunos nombres comunes :

  • Motorola:charge_only_mode
  • Mediatec: kpoc_chargeroipod
  • HTC: chargemonozchgd
  • Samsung: playlpmolpm
  • Sony: chargemonobattery_charging
  • La mayoría (?) de roms basadas en AOSP:healthd

Una vez encontrado, puede reemplazarlo con un script como el anterior de IET_DEMO.

En cambio, tocar el kernel es algo que no tengo ganas de explicar y recomendar si no sabes lo que estás haciendo.

Entonces, solo para que conste, me gustaría subrayar que la carga fuera de línea existe porque el proceso de arranque consume bastante energía, y especialmente en teléfonos más antiguos sin siquiera una carga rápida, el consumo de energía del sistema podría ser mayor que el del enchufe.

Acabo de hacer que esto funcione para ZTE Force (Boost Force, Sprint Force, etc.).

Usé la respuesta de IET_DEMO, pero reemplacé el archivo ubicado en /system/bin/battery_chargingcon este código:

#!/system/bin/sh
/system/bin/reboot
Hola, tengo un dispositivo Cyanogenmod, ¿sabes cómo puedo hacer esto en cyanogenmod? Gracias

¡ Para algunos dispositivos Samsung más antiguos, esto se puede lograr a través de NoMoarPowah! :

NoMoarPowah! puede reiniciarse automáticamente en Android cuando se realiza la carga. Ya sea cuando está completamente cargado o cuando el nivel de la batería alcanza el 15% y Android tiene suficiente energía para funcionar.

Necesita root y probablemente no quiera hacerlo a menos que realmente sepa lo que está haciendo, ya que espero que esto modifique archivos importantes del sistema.


Parece que esto se eliminó de Play Store, pero probablemente puedas encontrar el APK alojado en otro lugar. (No tengo un enlace de confianza por adelantado).

Si desea hacer lo contrario, apague cuando cargue, use esto: "Apagado automático cuando no haya carga" https://play.google.com/store/apps/details?id=com.zeroFactorial.probattle bueno para el dispositivo de mi automóvil y tambien tenia roto el boton

El kernel se carga en una etapa posterior del proceso de arranque , por lo que cualquier modificación que se le haga no tendrá ningún efecto cuando el dispositivo esté apagado.

Esta funcionalidad realmente depende del hardware de cada dispositivo, muy probablemente en el gestor de arranque (los editores con más conocimientos no duden en corregirme). Por ejemplo, mi teléfono Motorola Atrix 4G comienza a arrancar cuando conecto un cargador, mientras que mi Samsung Galaxy Tab no. muestra el gráfico "Cargando la batería" y requiere que se encienda manualmente.

Entonces, ¿qué muestra el gráfico de carga de la batería en la pantalla? Ahora se llama al cargador de arranque cuando presiona el botón de encendido manualmente, pero ¿qué pieza de código muestra el gráfico de carga de la batería en la pantalla?
En el estado apagado, el comportamiento del dispositivo en eventos de hardware como el botón de encendido y el cargador obviamente depende del código de nivel inferior, incluido el firmware SoC/PMIC y los cargadores de arranque. Pero no he visto un dispositivo Android en el que el cargador de arranque maneje la carga por sí mismo sin involucrar al sistema operativo (no estoy seguro si lo hubo en 2012). Bootloader transfiere el cargo al kernel de Android e incluso initse inicia. La única diferencia es que /data(y posiblemente otros sistemas de archivos) no están montados y se inicia un conjunto limitado de servicios en comparación con el espacio de usuario normal.