Par insertion de batterie, j'entends le courant circulant sur les broches de la batterie, no le port micro USB.
Description
Le téléphone en question est un Samsung Galaxy Xcover 4, le chargeur de démarrage es déverrouillé et j'ai Accès à la racine . Son objectif est d'être un dispositif de kiosque qui sera scellé dans un boîtier externe en plastique dur. Cela signifie que le bouton d'alimentation n'est pas disponible pour démarrer le téléphone. Le téléphone est alimenté directement par le mur au moyen d'un circuit imprimé d'élimination de la batterie fabriqué sur mesure, et j'ai besoin du port micro USB pour la communication UART en mode hôte, ce qui signifie qu'il ne sera jamais chargé/alimenté par le port micro USB.
Ce qui a été tenté jusqu'à présent
Comme mentionné, l'appareil est enraciné, donc j'ai essayé de modifier l'image de la partition BOOT et de flasher une image mise à jour. Les modifications que j'ai cherché à faire concernent le programme
/init
dans le répertoire Root. et ses associés
/init.rc
/init.samsungexynos7570.rc
/...
fichiers. Par exemple, j'ai pu faire en sorte que le téléphone démarre lorsqu'il est chargé via le port USB en écrasant le contenu du fichier suivant
/system/bin/lpm
avec le script
#!/system/bin/sh
echo b > /proc/sysrq-trigger
car /system/bin/lpm est référencé dans un service spécifié dans la section charge de /init.rc. J'ai également pu le faire démarrer via la charge du port USB en supprimant les déclencheurs "on charge" existants dans les fichiers init.*.rc, et en ajoutant simplement
on property:ro.bootmode=charger:
trigger late-init
Pour plus de détails sur ce que j'ai fait, voir ce lien . Mais c'est pas une solution pour moi parce que je veux qu'il démarre simplement en alimentant les broches de la batterie, et non le port micro USB (qui est occupé à être en mode hôte, donc il ne peut certainement pas être chargé).
Autres réflexions
Cependant, puisque la modification du fichier /init.rc a changé son comportement même lorsqu'il est "éteint" (c'est à dire qu'il démarre maintenant lorsqu'il est chargé par micro USB et non plus lorsqu'il ne l'est pas), cela semble me dire que le téléphone n'est jamais vraiment complètement éteint lorsqu'il est "éteint", et que le programme /init est constamment en cours d'exécution tant qu'il y a assez de charge sur les broches de la batterie (s'il vous plaît déraillez ce train de pensée dès que possible si c'est complètement faux). Ce qui voudrait dire que le noyau et le programme /init devraient démarrer automatiquement quand il y a suffisamment de charge sur les broches de la batterie. Je pensais donc ajouter simplement quelque chose du type
trigger late-init
ou
start <my_service>
(où mon_service par exemple, le script lpm que j'ai mentionné plus haut) dans un stade précoce de déclenchement de l'init, afin qu'il démarre simplement en vertu de l'exécution du programme /init. Mais jusqu'à présent, je n'ai pas eu de chance.
Quelqu'un sait-il si une telle chose est possible ? Merci pour votre temps.