5 votes

Pourquoi "mdnsd" draine-t-il ma batterie et comment l'arrêter ?

Ce processus (mdnsd) vidait ma batterie depuis quelques semaines. Je n'ai pas réussi à trouver une solution après de nombreuses recherches.

Je n'ai pas d'application drone, d'application Facebook ou de Firefox, même s'il est vrai que le problème a plus ou moins commencé lorsque j'ai installé l'application Firefox. Mais je l'ai désinstallée, j'ai redémarré mon téléphone et le problème est toujours là, ce qui me fait penser que Firefox n'a peut-être rien à voir avec cela.

Des idées ? J'ai un LG G2, Android 4.4.2

0 votes

Comment voir la liste des processus (via une application - laquelle ; ou via la ligne de commande - adb/termux) ?

0 votes

@Robert Je viens de le voir à partir de la fonction d'utilisation de la batterie par défaut de mon téléphone.

4voto

Irfan Latif Points 16863

QU'EST-CE QUE LE MDNSD :

mdnsd (Multicast Domain Name System Daemon) est l'implémentation d'Android du système de nom de domaine multidestinataire. mDNSResponder , une partie de l'avenir Réseau à configuration zéro . Il vous permet de découvrir automatiquement les services et les appareils rattachés à votre réseau :

  • Traduction nom-adresse et autres opérations de type DNS ( mDNS ) en l'absence d'un serveur DNS unicast classique :

    Il permet à l'utilisateur d'identifier les hôtes à l'aide de noms au lieu d'adresses IP décimales en pointillés, même si l'utilisateur ne dispose pas d'un serveur DNS conventionnel.

  • Découverte des services de réseau ( DNS-SD ) :

    Il permet également à l'utilisateur de découvrir les services qui sont annoncés sur le réseau, sans avoir à les connaître à l'avance, ni à configurer les machines.

Ce démon envoie continuellement des diffusions multicast (requêtes / annonces) à tous les hôtes du réseau local à l'adresse IP suivante 224.0.0.251 et le port UDP 5353 qui écoute également sur le même port.

QUELLES APPLICATIONS UTILISENT MDNS :

Toute application qui utilise le système Android Découverte de services de réseau demandera mdnsd en cours d'exécution en arrière-plan ( 1 , 2 , 3 ) :

L'ajout de NSD à votre application permet à vos utilisateurs d'identifier les autres appareils du réseau local qui prennent en charge les services demandés par votre application. Ceci est utile pour une variété d'applications peer-to-peer telles que le partage de fichiers ou les jeux multi-joueurs.

Une recherche rapide sur les forums montrera que de nombreuses applications sont accusées de décharger excessivement la batterie en raison de leur utilisation. mdnsd par exemple Facebook y Firefox . Ce dernier a été victime d'un bug dans le passé qui a provoqué ce comportement inattendu. Ils ont maintenant leur propre implémentation du MDNS ( 4 ) . Services Google Play disposent également d'un service MDNS intégré (pour découvrir les appareils récepteurs Google Cast comme Chromecast) ( 5 , 6 ) .

Les appareils qui prennent en charge la NSD comprennent les imprimantes, les webcams, les serveurs HTTPS et d'autres appareils mobiles.

Les applications intégrées d'AOSP Service d'impression Service de recommandation (com.Android.printservice.recommendation) y Service d'impression par défaut (com.Android.bips) font également appel à la NSD. Donc, si vous utilisez des fonctions d'impression sur votre appareil, celles-ci causent des problèmes de sécurité. mdnsd exécuter en arrière-plan. Mais la raison la plus courante est ADBD (Android Debug Bridging Daemon) quelle force commence mdnsd ( 7 ) .

COMMENT ARRÊTER MDNSD ?

mdnsd est un service init ( 8 ) qui peut être arrêté par des déclencheurs. Ajoutez quelques lignes à /etc/init/mdnsd.rc :

# stop mdnsd on startup
on property:sys.boot_completed=1
    stop mdnsd

# stop mdnsd when adbd starts/stops
on property:init.svc.adbd=*
    stop mdnsd

Vous pouvez également arrêter manuellement le service à tout moment en exécutant :

~# setprop ctl.stop mdnsd

Ou vous pouvez directement tuer le mdnsd comme suggéré par @ DBX12 . Le service ne devrait pas redémarrer car il est oneshot . Mais s'il est déclenché à maintes reprises par une application ou le système d'exploitation, vous pouvez rendre le binaire inexécutable (ou le supprimer) du tout :

~# chmod a-x /system/bin/mdnsd

Cependant, cela peut interrompre la fonctionnalité de certaines applications.

Toutes les solutions ci-dessus exiger la racine . Si votre appareil n'est pas enraciné, le seul moyen est d'identifier et d'arrêter d'utiliser l'application/la fonctionnalité qui utilise l'API NSD d'Android ou qui démarre directement. mdnsd service.

0 votes

Je suppose que je vais devoir utiliser mon téléphone Root. J'ai essayé d'identifier l'application mais je n'y suis pas parvenu, après avoir beaucoup joué avec la désinstallation.

0 votes

Avez-vous arrêté le débogage UDB dans les options du développeur et redémarré l'appareil ? Il se peut que ce soit l'ADB qui démarre. mdnsd au démarrage. Une fois lancé, il ne s'arrêtera pas, même si vous arrêtez ADB par la suite.

0 votes

Oui, je l'ai fait

3voto

DBX12 Points 131

Il semble que ce soit le démon pour le DNS multicast. J'ai le même problème que OP et Trevor. Ma solution est la suivante (en supposant que vous ayez un appareil enraciné ). Si vous avez adb, alors faites l'étape 2 par dessus, c'est plus confortable de taper sur un clavier ;)

  1. Installer un émulateur de terminal
  2. Créer un shellscript avec le contenu su -c "kill $(pgrep mdnsd)"
  3. Exécutez-le à chaque fois que vous constatez une décharge rapide de la batterie, car c'est le symptôme d'un mdnsd en cours d'exécution. Confirmez l'invite de SuperSU pour accorder les permissions Root au script.

Ce que fait le script :

su -c "kill $(pgrep mdnsd)"
^      ^    ^ ^
|      |    | |
|      |    | +- Search the process list for the phrase "mdnsd" and return the process id
|      |    |
|      |    +- Spawn a subshell and execute contained command and return its output
|      |
|      +- Stop the process with the process id specified after kill
+- run the command specified after -c with superuser privileges

0 votes

Inutile de préciser qu'elle nécessite un binaire "su" fonctionnel, ce qui signifie que vous avez besoin d'un téléphone rooté.

0 votes

@peterh j'ai mis cette exigence dans la deuxième phrase en gras ;)

1 votes

Oups, merci, dbx ! :-)

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