4 votes

Que représente 'bootloader' dans les sorties possibles de `adb get-state` ?

J'ai récemment utilisé l'utilisation de adb get-state et a décidé d'en savoir plus. Courir adb entre autres montre :

adb get-state                - prints: offline | bootloader | device

J'ai l'intention de savoir dans quelle(s) circonstance(s) ce commandement reviendrait chargeur de démarrage .

Pour l'instant, je suis au courant de ces sorties :

  • appareil : démarré dans Android OS, débogage activé et autorisé
  • récupération : démarrage dans l'environnement de récupération
  • sideload : lors d'un chargement latéral
  • unauthorized : démarré dans Android OS, débogage activé mais pas encore autorisé
  • hors ligne : le dispositif sans fil n'est pas à portée de main. (Il peut y avoir d'autres raisons).
  • inconnu : Quand adbd n'est pas détecté de l'autre côté. Du moins, c'est ce que j'en comprends. Se produit dans le cas où le débogage est désactivé ou que le périphérique n'est pas branché.

Je ne suis pas encore au courant des deux sorties suivantes :

  • hôte
  • chargeur de démarrage

J'ai trouvé toutes ces sorties aquí sans aucune explication supplémentaire.

Avant que vous ne demandiez,

  • oui, j'ai déjà lancé cette commande lorsque mon Nexus 6 a été démarré en mode bootloader et j'ai reçu inconnu comme sortie ;
  • il s'agit d'une simple curiosité qui ne résoudrait rien en particulier. à partir de maintenant .

2voto

Irfan Latif Points 16863

Il y a quelques indices dans les détails de la mise en œuvre de la BAD. protocole y vue d'ensemble .

Lorsque la communication commence entre le serveur ADB sur l'hôte (PC) et le démon ADB ( adbd ) sur le dispositif :

Les deux parties envoient un message CONNECT lorsque la connexion entre elles est établie.

Syntaxe de CONNECT Le message est :

CONNECT(version, maxdata, "system-identity-string")

La chaîne d'identité du système doit être "<systemtype>:<serialno>:<banner>" où systemtype est "bootloader", "device", ou "host".

L'état de la connexion est défini lorsque la chaîne d'identité est analysé . device y host sont évidentes, c'est-à-dire si le message CONNECT est envoyé par le périphérique ou l'hôte. Nous ne pouvons pas voir host sur un PC avec un appareil Android de l'autre côté car c'est set seulement quand ce n'est pas bootloader , device ou trois états de récupération ( recovery , sideload y rescue ).

Pour bootloader partie, il semble que l'ADB puisse avoir un "implémentation simplifiée / embarquée... pour des environnements limités, comme le bootloader" :

Le chargeur de démarrage prendra en charge deux flux. Un flux "bootloader:debug", qui peut être ouvert pour obtenir des messages de débogage du bootloader et un flux "bootloader:control", qui supportera l'ensemble des commandes de base du bootloader.

Aussi :

Les états BOOTLOADER et RECOVERY correspondent aux états alternatifs des dispositifs lorsqu'ils sont en mode bootloader ou recovery.

Serveur ADB :

maintient une liste de "dispositifs connectés" et attribue un "état" à chacun d'entre eux : OFFLINE, BOOTLOADER, RECOVERY ou ONLINE
...
considère qu'un périphérique est ONLINE lorsqu'il s'est connecté avec succès au programme adbd qu'il contient. Sinon, le périphérique est OFFLINE

Autre états de connexion (disponibles à ce jour) comprennent :

Connecting    Haven't received a response from the device yet.
Authorizing   Authorizing with keys from ADB_VENDOR_KEYS.
Unauthorized  ADB_VENDOR_KEYS exhausted, fell back to user prompt.
NoPerm        Insufficient permissions to communicate with the device

Avec le l'ajout de authorizing y connecting États :

Auparavant, les appareils effectuaient la transition comme suit :

  offline -> unauthorized -> offline -> online
  offline -> unauthorized (when actually unauthorized)

Avec ce patch :

  connecting -> authorizing -> online
  connecting -> authorizing -> unauthorized (when actually unauthorized)

Il semble que maintenant device offline n'apparaît que lorsqu'une erreur AUTH est demandé ou répondu par le client ou le serveur ( 1 ) .
no permissions ou connecting Les états sont définis peu après la connexion du dispositif.
authorizing ou unauthorized sont fixés lorsque AUTH le message est transmis entre le client et le serveur.
unauthorized est défini soit si la ou les clés privées de l'hôte ont échoué, soit si l'on attend la confirmation à l'écran de l'utilisateur pour ajouter une nouvelle clé publique.

Si aucun des états ci-dessus n'est détecté pour une raison quelconque, il est retourné unknown .

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