¿Cómo cambio el nombre de mi dispositivo Android?

Mi dispositivo Android es el Nexus One. Pero esto debería aplicarse a todos los dispositivos Android actuales.

¿Cómo cambio el nombre de mi dispositivo Android?

Cuando me conecto a las tablas de clientes de mi enrutador inalámbrico, mis dispositivos Android aparecen, por ejemplo, como: android_1234567890abedfc. Me gustaría darle un nombre más legible.

También es posible configurar el nombre de host a través del servidor DHCP. Pero no he comprobado si Android usa esta opción de configuración. De todos modos, es solo una opción cosmética.
@Flow (Varía pero) Android DHCPCD no tiene los dhcpcd-run-hooks para configurar el nombre de host desde DHCP. Al menos en mi dispositivo Samsung Froyo. Tampoco tiene los ganchos ntp. Sin embargo, DHCPCD lo admite.
para GNU Linux: askubuntu.com/questions/9540/how-do-i-change-the-computer-name , los métodos de kernel de bajo nivel funcionarán

Respuestas (7)

Para cambiar el nombre de host (nombre del dispositivo), debe usar la terminal (como root):

Para Eclair (2.1): echo MI NOMBRE > /proc/sys/kernel/hostname

Para Froyo (2.2): (funciona también en la mayoría de 2.3) setprop net.hostname MYNAME

Luego reinicie su wi-fi. Para ver el cambio, escriba uname -a

¡algunos dispositivos necesitan reiniciarse para funcionar!

¿Esto funciona en Jelly Bean?
Esto funciona, pero no persiste al reiniciar.
uname -ano me muestra el nombre de host, aunque dice localhost. ¿Qué esperas que muestre?

Resumen:

  • getprop net.hostname(Nombre de host del sistema Android, probablemente nombre de tipo android_24412414)
  • echo $HOSTNAME(shell/terminal/env hostname, probablemente ro.product.device de build.prop)
  • cat /proc/sys/kernel/hostname(Nombre de host del sistema Linux, probablemente localhost )
  • head /etc/hosts(Nombre de host del sistema Linux, probablemente localhost )
  • hostname(El comando no siempre está instalado, si se instala a través del cuadro ocupado, leerá /proc/sys/kernel/hostname )

Depende de la versión de Android que tengas.

Android 4.0 y superior

Las versiones más nuevas usarán la build.propentrada correcta. Bueno, es decir, Android lee el build.propproceso de arranque normal. Una vez que se ejecuta el servicio de conectividad, verifica si net.hostname está configurado en la configuración, luego, si está vacío, usa el ID de Android "android_" + (permanente). Así que eso es todo lo que necesitas hacer.

Agregar net.hostname=HOSTNAMEHEREa /system/build.prop(puede ser necesaria la raíz). Deje una línea en blanco al final del archivo.

ConnectivityService.java de Kitkat, observe la declaración 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 y Abajo

Las versiones anteriores, Gingerbread, Froyo, etc., simplemente aplástalas. No se molesta en comprobar. Establecerá net.hostname en android_24412414... pase lo que pase. Por lo tanto, deberá cambiarlo después de que el Servicio de conectividad haya terminado de cargarse. Afortunadamente, solo ejecuta el inicio una vez, no en cada nueva conexión. Así que solo tenemos que correr setprop net.hostname HOSTNAMEHEREdespués de eso para que se pegue. Desafortunadamente, se ejecuta bastante tarde en el proceso de arranque, por lo que necesita algo que realice los cambios en boot_complete. Lo más probable es que sea una aplicación que se ejecute sola.

Servicio de conectividad de Froyo.java :

    // 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);

Pero luego hay otro problema.

¡La configuración de net.hostname no se copia en todo el sistema! Si usa una aplicación de consola/terminal, es posible que no obtenga el mismo nombre de host. Mi teléfono, un Samsung Sidekick 4G (semi-Galaxy S basado) tiene un init.rc que se ejecuta hostname localhost, por lo que todos los comandos debajo no verán ni su nombre de host build.prop ni el nombre de host android_id. Así que también tienes que configurar eso.

hostname HOSTNAMEHEREoecho HOSTNAMEHERE > /proc/sys/kernel/hostname

Nota: Dependiendo de cómo lo esté haciendo, deberá ejecutar el comando anterior como root para que funcione. Init.rc generalmente se encuentra en la partición del sistema de solo lectura, por lo que se necesita acceso de root para editarlo.

El comando dhcpcd, que se ejecuta para obtener una dirección dhcp, no se actualizará a un nombre de host proporcionado por el servidor (eso se puede solucionar agregando los dhcpcd-run-hooks y dhcpcd.conf correctos), y no proporcionará un nombre de host al servidor dhcp si $(hostname)(el comando hostname) está en blanco o localhost, y no usa internamente net.hostname. libnetutils se usa para llamar a dhcpcd con -h "net.hostname", pero si por alguna razón decide no llamar con -h, DHCPCD SEGUIRÁ ENVIANDO EL NOMBRE DEL HOST DEL SISTEMA a través de gethostname(), siempre que no sea "(ninguno) ", "localhost" o vacío. En Stock Froyo de todos modos. Samsung jodió al perro en algunos dispositivos como el mío. Sin paso de nombre de host, tiempo de red forzado, etc.

Mi solución para Gingerbread y por debajo de Samsung, edite la configuración del demonio del cliente DHCP:

Lo último que puede hacer es editar /etc/dhcpcd/dhcpcd.conf. Si agrega hostname YOURHOSTNAMEal archivo, lo usará, a menos que se proporcione un nombre de host en la línea de comandos. Esto no solucionará el problema de android_234etc, pero lo hará si el nombre de host es localhost (mi problema, ya que Samsung arruinó libnetutils y localhost en init.rc). Necesitará Root, pero esto funciona en todos los reinicios. Esto no funcionará si se llama a dhcpcd con la opción -h Hostname.

¿Quién usa Android 2.3? ¿Esta versión todavía funciona en 2020? Los enlaces de 2008 todavía funcionan, esto es al revés.

Encontré una manera de hacer esto en mi Nexus 7 rooteado con 4.2.2. La configuración se guarda de forma persistente y funciona durante los reinicios.
Fuente: http://nileshgr.com/2012/10/13/how-to-change-wifi-host-name-of-your-android-device

  1. Tenga en cuenta que el dispositivo debe estar rooteado para usar adb
  2. Correradb pull /system/build.prop
  3. Edite el build.proparchivo y agreguenet.hostname=NewHostname
  4. Ejecutar adb push build.prop /sdcard/build.prop(o /mnt/sdcard, si falla)
  5. Ejecute adb shelly ejecute los siguientes comandos:
    $ su
    # mount -o rw,remount /system
    # cp /sdcard/build.prop /system/build.prop(o /mnt/sdcardsi lo usó anteriormente)
    # mount -o ro,remount /system
    # exit
  6. Reiniciar el dispositivo
Esto se solucionó en las versiones más nuevas de Android. Comprueba net.hostname desde build.prop. Las versiones anteriores de Android no (principalmente Froyo, tal vez Gingerbread).
ICS no es 4.2.2, eso sería JB
una forma más fácil de hacer esto es usar el setpropcomando a través de un shell raíz en el dispositivo: por ejemplosetprop net.hostname NewHostName
@mark que sería golpeado al reiniciar. Esta respuesta es una versión permanente.

Esto funciona en CyanogenMod y probablemente en otras ROM modificadas, pero no en las ROM de AOSP:

Vaya a Configuración > Opciones de desarrollador y desplácese hacia abajo hasta Nombre de host del dispositivo . La raíz no es necesaria.

(Haga clic en la imagen para ampliar)

IMG:

Sí, no puedes hacer esto en una tableta Acer A100 con Android 4.0.3. De hecho, ni siquiera tiene "Nombre de host del dispositivo" en las Opciones de desarrollador.

No he tenido stock en mucho tiempo, pero en Configuración de la aplicación> Desarrollo, verá la opción 'Nombre de host del dispositivo'.

¿En qué versiones de Android? Cuando miro las opciones de desarrollo en mi Droid 3 (Android 2.3.4), no tengo esa opción.
Esto funciona en CyanogenMOD y probablemente en otras ROM modificadas, pero no en las ROM de AOSP.
Depende completamente del fabricante y el constructor, así como de la versión de Android.

Ve a Google Play Store. Busque "nombre de host" y descargue la aplicación de cambio de nombre de host .

Debe estar rooteado.

¿Cambiar el nombre del dispositivo estropeará algo internamente?

El nombre de host se utiliza para identificar y recordar fácilmente los hosts conectados a una red. Se configura en el arranque, por ejemplo, /etc/hostnameen sistemas basados ​​en Linux. El nombre de host también es parte DHCPREQUEST(estandarizado como código 12 por IETF) que un cliente DHCP (dispositivo Android en nuestro caso) hace al servidor DHCP (enrutador WiFi) para obtener una dirección IP asignada. El servidor DHCP almacena los nombres de host para ofrecer servicios como DNS. Consulte los detalles en ¿Cómo hacer ping a un host de red local por nombre de host? .

Android, en lugar de usar el servicio de nombre de host del kernel de Linux , usó la propiedad net.hostname(desde Android 2.2 ) para establecer un nombre de host único para cada dispositivo basado en android_id. Esta propiedad de nombre de host se usó para el protocolo de enlace DHCP (como se agregó en Android 2.2 y 4.0 ). En Android 6 net.hostnamese siguió utilizando ( 1 , 2 , 3 , 4 ) en el nuevo cliente DHCP de Javadhcpcd cuando se abandonó el nativo y luego se eliminó el servicio en Android 7. Desde Android 8, cuando android_idse volvió exclusivo para las aplicaciones, ya no net.hostnameestá configurado, por lo que nullse envía a DHCPREQUEST. Consulte los cambios de privacidad y las mejoras de seguridad de Android 8 :

net.hostnameahora está vacío y el cliente dhcp ya no envía un nombre de host

Por lo tanto, los enrutadores WiFi no muestran nombres de host para Android 8+, ni podemos configurarlo/desconfigurarlo/cambiarlo.

Sin embargo , en dispositivos rooteados, puede configurar net.hostnamemanualmente usando el setpropcomando o agregar algún archivo para configurar en cada arranque. O use un cliente de terceros para enviar el nombre de host deseado y otras opciones al enrutador. Consulte Conexión a Wi-Fi a través de ADB Shell .init.rcbusybox udhcpc