Comment changer le nom de mon appareil Android?

59

Mon appareil Android est le Nexus One. Mais cela devrait s'appliquer à tous les appareils Android actuels.

Comment changer le nom de mon appareil Android?

Lorsque je me connecte aux tables des clients de mon routeur sans fil, mes appareils Android sont répertoriés, par exemple, sous le nom: android_1234567890abedfc. J'aimerais lui donner un nom plus lisible.

éponge
la source
Il est également possible de configurer le nom d'hôte via le serveur DHCP. Mais je n'ai pas vérifié si Android utilisait cette option de configuration. C'est de toute façon une option esthétique.
Débit
@Flow (Varie mais) Android DHCPCD ne dispose pas des dhcpcd-run-hooks pour définir le nom d’hôte à partir de DHCP. Au moins sur mon appareil Samsung Froyo. Il n'a pas non plus les crochets NTP. DHCPCD le supporte cependant.
cde
pour GNU Linux: askubuntu.com/questions/9540/how-do-i-change-the-computer-name , les méthodes du noyau bas niveau travailleront
Ciro Santilli新疆改造中心法轮功六四事件

Réponses:

22

Pour changer le nom d'hôte (nom de l'appareil), vous devez utiliser le terminal (en tant que root):

Pour Eclair (2.1): echo MYNAME> / proc / sys / kernel / hostname

Pour Froyo (2.2): (fonctionne également sur la plupart des versions 2.3) setprop net.hostname MYNAME

Puis redémarrez votre connexion wi-fi. Pour voir le changement, tapez uname -a

certains périphériques doivent être redémarrés pour le travail!

Eder Gusatto
la source
Est-ce que ça marche sur les bonbons?
Jrg
3
Cela fonctionne, mais ne persiste pas au redémarrage.
palswim
1
uname -ane montre pas le nom d'hôte pour moi, bien que ce soit le cas localhost. Qu'attendez-vous que cela montre?
endolith
15

Sommaire:

  • getprop net.hostname (Nom d'hôte du système Android, nom de type android_24412414 probable)
  • echo $HOSTNAME (nom d'hôte shell / terminal / env, probablement ro.product.device de build.prop)
  • cat /proc/sys/kernel/hostname(Nom d'hôte du système Linux, probablement localhost )
  • head /etc/hosts(Nom d'hôte du système Linux, probablement localhost )
  • hostname(La commande pas toujours installée, si installée via une boîte occupé, lira / proc / sys / kernel / hostname )

Cela dépend de la version d'Android que vous possédez.

Android 4.0 et supérieur

Les nouvelles versions utiliseront la bonne build.propentrée. Eh bien, c’est-à-dire qu’Android lit le build.propprocessus de démarrage normal. Une fois le service de connectivité exécuté, il vérifie si net.hostname est défini dans les paramètres. S'il est vide, il utilise ensuite l'ID android_ "+" (permanent). Donc c'est tout ce que vous devez faire.

Ajouter net.hostname=HOSTNAMEHEREà /system/build.prop(une racine peut être nécessaire). Laissez une ligne vide à la fin du fichier.

Kitkat ConnectivityService.java, notez la déclaration IF isEmpty :

    // setup our unique device name
    if (TextUtils.isEmpty(SystemProperties.get("net.hostname"))) {
        String id = Settings.Secure.getString(context.getContentResolver(),
                Settings.Secure.ANDROID_ID);
        if (id != null && id.length() > 0) {
            String name = new String("android-").concat(id);
            SystemProperties.set("net.hostname", name);

Android 2.3 et inférieur

Les versions plus anciennes, Gingerbread, Froyo, etc. Ça ne dérange pas de vérifier. Il va définir net.hostname sur android_24412414 ... peu importe quoi. Vous devrez donc le changer une fois le chargement du service de connectivité terminé. Heureusement, il ne lance le démarrage qu'une seule fois, pas à chaque nouvelle connexion. Il faut donc courir setprop net.hostname HOSTNAMEHEREaprès pour que ça colle. Malheureusement, le processus de démarrage s'exécute assez tard. Vous avez donc besoin de quelque chose qui modifiera boot_complete. Très probablement une application qui fonctionne par elle-même.

ConnectivityService.java de Froyo :

    // setup our unique device name
    String id = Settings.Secure.getString(context.getContentResolver(),
            Settings.Secure.ANDROID_ID);
    if (id != null && id.length() > 0) {
        String name = new String("android_").concat(id);
        SystemProperties.set("net.hostname", name);

Mais alors il y a un autre problème.

Le paramètre net.hostname n'est pas copié dans tout le système! Si vous utilisez une application console / terminal, vous n'obtiendrez peut-être pas le même nom d'hôte. Mon téléphone, un Samsung Sidekick 4G (semi-Galaxy S), a un init.rc qui s'exécute hostname localhost. Toutes les commandes situées en dessous ne verront ni votre nom d’hôte build.prop ni le nom d’hôte android_id! Donc, vous devez définir cela aussi.

hostname HOSTNAMEHERE ou echo HOSTNAMEHERE > /proc/sys/kernel/hostname

Remarque: pour que cela fonctionne, vous devez exécuter la commande ci-dessus en tant qu'utilisateur root pour que cela fonctionne. Init.rc se trouve généralement sur la partition système en lecture seule; un accès root est donc nécessaire pour la modifier.

La commande dhcpcd, qui est exécutée pour obtenir une adresse dhcp, ne sera pas mise à jour avec un nom d’hôte fourni par le serveur (cela peut être corrigé en ajoutant les bons droits dhcpcd-run-hooks et dhcpcd.conf), et elle ne fournira pas de nom d’hôte. au serveur DHCP si $(hostname)(la commande hostname) est vide ou localhost et n'utilise pas en interne net.hostname. libnetutils est utilisé pour appeler dhcpcd avec -h "net.hostname", mais si, pour une raison quelconque, il décide de ne pas appeler avec -h, DHCPCD ENVOIE ENCORE DU NOM D'HÔTE DU SYSTÈME via gethostname (), tant que ce n'est pas "(none) "," localhost "ou vide. Sur Stock Froyo quand même. Samsung a vissé le chien sur certains appareils comme le mien. Aucun nom d’hôte ne passe, temps réseau forcé, etc.

Ma solution pour Gingerbread et au-dessous de Samsung, modifiez la configuration du démon du client DHCP:

La dernière chose que vous pouvez faire est d’éditer /etc/dhcpcd/dhcpcd.conf. Si vous ajoutez hostname YOURHOSTNAMEau fichier, il l'utilisera, sauf si un nom d'hôte est indiqué sur la ligne de commande. Cela ne résoudra pas le problème d'Android_234etc, mais le sera si le nom d'hôte est localhost (mon problème, car Samsung a vissé libnetutils et localhost dans init.rc). Vous aurez besoin de Root, mais cela fonctionne après les redémarrages. Cela ne fonctionnera pas si dhcpcd est appelé avec l'option -h Nom_Hôte.

cde
la source
10

J'ai trouvé un moyen de faire cela sur mon Nexus 7 enraciné avec 4.2.2. Le paramètre est enregistré de manière persistante et fonctionne tout au long des redémarrages.
Source: http://nileshgr.com/2012/10/13/how-to-change-wifi-host-name-of-your-android-device

  1. Notez que le périphérique doit être enraciné pour utiliser adb
  2. Courir adb pull /system/build.prop
  3. Editez le build.propfichier et ajouteznet.hostname=NewHostname
  4. Exécuter adb push build.prop /sdcard/build.prop(ou /mnt/sdcard, si cela échoue)
  5. Exécutez adb shellet exécutez les commandes suivantes:
    $ su
    # mount -o rw,remount /system
    # cp /sdcard/build.prop /system/build.prop(ou /mnt/sdcardsi vous l'aviez déjà utilisé)
    # mount -o ro,remount /system
    # exit
  6. Redémarrer l'appareil
Lennart
la source
Cela a été corrigé dans les versions plus récentes d'Android. Il vérifie net.hostname à partir de build.prop. Les anciennes versions d'Android ne le font pas (principalement Froyo, peut-être Gingerbread).
cde
ICS n'est pas 4.2.2, ce serait JB
HasH_BrowN le
un moyen plus facile de faire cela consiste à utiliser la setpropcommande via un shell root sur le périphérique: par exemplesetprop net.hostname NewHostName
Mark
1
@ marque qui serait clobber au redémarrage. Cette réponse est une version permanente.
cde
9

Cela fonctionne sur CyanogenMod et probablement d'autres ROM modifiées, mais pas les ROM AOSP en stock:

Accédez à Paramètres> Options pour les développeurs et faites défiler jusqu'à Nom d'hôte du périphérique . La racine n'est pas nécessaire.

(Cliquez sur l'image pour l'agrandir)

IMG:

cbabb
la source
2
Oui, vous ne pouvez pas faire cela sur une tablette Acer A100 sous Android 4.0.3. En fait, il n'y a même pas "Nom d'hôte du périphérique" dans les options pour les développeurs.
bgmCoder
7

Je n'ai pas vu de stock depuis longtemps, mais dans Paramètres de l'application> Développement, l'option 'Nom d'hôte du périphérique' apparaît.

Tim T
la source
sur quelles versions d'Android? Quand je regarde les options de développement sur mon Droid 3 (Android 2.3.4), je n'ai pas cette option.
Michael Kohne
3
Cela fonctionne sur CyanogenMOD et probablement d'autres ROM modifiées, mais pas les ROM AOSP en stock.
Caleb
Complètement dépendant du fabricant et du constructeur, ainsi que de la version Android.
cde
5

Allez sur Google Play Store. Recherchez "nom d'hôte" et téléchargez l' application de changement de nom d'hôte .

Doit être enracinée.

Ryan Knell
la source
Le fait de renommer l'appareil gâche-t-il quelque chose en interne?
bgmCoder
0

Le nom d'hôte est utilisé pour identifier et mémoriser facilement les hôtes connectés à un réseau. Il est défini au démarrage, par exemple à partir /etc/hostnamede systèmes basés sur Linux. Le nom d'hôte fait également partie DHCPREQUEST(normalisé sous le code 12 par l'IETF) qu'un client DHCP (appareil Android dans notre cas) envoie au serveur DHCP (routeur WiFi) pour obtenir une adresse IP attribuée. Le serveur DHCP stocke les noms d'hôte pour offrir des services tels que DNS .

Android - au lieu d'utiliser le service de nom d' hôte du noyau Linux - propriété utilisée net.hostnamepour définir un nom d'hôte unique pour chaque périphérique basé sur Android ID. Cette propriété de nom d’hôte a également été utilisée pour la négociation DHCP. Cependant, depuis Android 5 - lorsque le fichier natif a dhcpcdété abandonné au profit du client DHCP Java - le nom d’hôte est null dans DHCPREQUEST. net.hostnamen'est ni défini , ni évalué par le client DHCP. Ainsi, les routeurs WiFi n’affichent aucun nom d’hôte pour les nouveaux appareils Android, nous ne pouvons pas non plus l’activer / désactiver / le changer.

Irfan Latif
la source