24 votes

Allume automatiquement Android lorsque le chargeur est connecté.

Est-il possible d'allumer automatiquement l'appareil une fois que le chargeur est connecté, étant donné que l'appareil est initialement éteint ?

15voto

Irfan Latif Points 16863

fastboot oem off-mode-charge 0 est la méthode authentique si votre appareil le supporte. C'est la méthode de Google recommandé mais tous les OEMs/vendeurs n'implémentent pas la commande dans le bootloader. Ou sur certains appareils, elle est réinitialisée au prochain redémarrage. Si off-mode-charge est désactivé, le chargeur de démarrage ne passera pas androidboot.mode=charger paramètre de ligne de commande au noyau lorsque le chargeur est inséré, afin que le dispositif démarre normalement.

Sinon, lorsque ro.bootmode a pour valeur charger au démarrage, init ne poursuit pas le processus de démarrage normal . Au lieu de cela, un nombre limité de services sont démarrés et une animation de chargement est affichée. Vous pouvez donc demander à init pour redémarrer l'appareil chaque fois que le mode chargeur est détecté. Créez un nouveau .rc ou modifier un fichier existant :

# /system/etc/init/off_mode_charge.rc

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

Ou exécuter reboot binaire :

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

Mais si SELinux est appliqué, la politique de stock peut ne pas laisser init exécuter /system/bin/reboot . Utilisez donc le contexte de Magisk (ou toute autre solution d'enracinement que vous utilisez) :

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

N'oubliez pas de définir les permissions sur *.rc fichier ( chown 0.0 , chmod 0644 , chcon u:object_r:system_file:s0 ).

Il est également possible de continuer le processus de démarrage au lieu de redémarrer l'appareil en remplaçant class_start charger avec trigger late-init sur /init.rc fichier :

on charger
    #class_start charger
    trigger late-init

Ou en définissant la propriété sys.boot_from_charger_mode :

on charger
    setprop sys.boot_from_charger_mode 1
  • Cette méthode devrait fonctionner sur tous les appareils, quel que soit l'équipementier, car elle ne dépend pas des binaires de chargement propres à chaque fournisseur, tels que playlpm , battery_charging , chargeonlymode , zchgd , kpoc_charger et ainsi de suite.
  • Le remplacement des binaires de services importants comme healthd - qui s'occupent de beaucoup de choses liées à la batterie, au stockage, etc. - n'est pas une bonne idée. Dans ce cas, si le service fonctionne à la fois dans charger y normal l'appareil peut se mettre en boucle de démarrage.
  • Sur les périphériques non-System-as-Root, il n'est pas nécessaire de modifier le fichier /system partition (par exemple, si vous ne voulez pas briser les dm-verity pour que les mises à jour OTA fonctionnent). Il suffit de déballer boot.img et modifier /init.rc dans ramdisk .
  • Bien qu'inutile, il est également possible d'exécuter un init.d script de .rc fichier. Pour la référence, voir Comment lancer un exécutable au démarrage ? y Comment éteindre l'appareil lorsque le chargeur est retiré ? .

RELATED :

12voto

Ryan Gibbons Points 1631

Le graphique de charge de la batterie est affiché par /system/bin/playlpm sur les appareils Samsung.

Si vous êtes Root, vous pouvez modifier ce fichier pour :

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

Et assurez-vous d'ajouter ces permissions au fichier :

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

Votre appareil va maintenant démarrer lorsqu'il sera branché

5voto

mirh Points 345

Il existe donc de nombreuses façons de le faire. La plus appropriée, comme toujours supporté par par Google (et de plus en plus par d'autres, par ex. nvidia de nougat) est cette commande fastboot

fastboot oem off-mode-charge 0

Sinon, vous pouvez soit détourner le binaire de chargement (il n'est pas garanti que cela soit possible sur tous les appareils, mais il faut juste un Root) ou patcher votre ramdisk (théoriquement universel, mais il faudra un bootloader déverrouillé).

Pour la première solution, vous devrez trouver quelque part dans votre partition système (généralement le fichier bin ) où réside le programme chargé de l'animation de la batterie et tout le reste. Quelques commun noms :

  • Motorola : charge_only_mode
  • Mediatek : kpoc_charger o ipod
  • Htc : chargemon o zchgd
  • Samsung : playlpm o lpm
  • Sony : chargemon o battery_charging
  • La plupart ( ?) des roms basés sur AOSP : healthd

Une fois trouvé, vous pouvez simplement le remplacer par un script tel que celui présenté ci-dessus par IET_DEMO.

Par contre, toucher au noyau est quelque chose que je n'ai pas envie d'expliquer et de recommander si vous ne savez pas ce que vous faites.

Pour mémoire, j'aimerais souligner que la recharge hors ligne existe parce que le processus de démarrage est assez énergivore, et surtout sur les téléphones plus anciens qui ne disposent même pas d'un système de recharge rapide, la consommation d'énergie du système peut être supérieure à celle de la prise.

3voto

apouche Points 371

Je viens de le faire fonctionner pour le ZTE Force (Boost Force, Sprint Force, etc).

J'ai utilisé la réponse de IET_DEMO, mais j'ai remplacé le fichier situé à l'adresse suivante /system/bin/battery_charging avec ce code :

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

2voto

Matthew Read Points 50150

Pour certains anciens appareils Samsung, cela peut se faire par le biais de NoMoarPowah ! :

NoMoarPowah ! peut redémarrer automatiquement sous Android lorsque la charge est terminée. Soit lorsqu'il est complètement chargé, soit lorsque le niveau de la batterie atteint 15 % et qu'Android a assez de jus pour fonctionner.

Vous avez besoin de Root et vous ne voulez probablement pas le faire à moins de savoir vraiment ce que vous faites, car je m'attendrais à ce que cela modifie des fichiers système importants.


Il semble qu'il ait été retiré du Play Store, mais vous pouvez probablement trouver l'APK hébergé ailleurs. (Je n'ai pas de lien de confiance à portée de main).

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X