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.
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!
uname -a
no me muestra el nombre de host, aunque dice localhost
. ¿Qué esperas que muestre?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.
Las versiones más nuevas usarán la build.prop
entrada correcta. Bueno, es decir, Android lee el build.prop
proceso 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=HOSTNAMEHERE
a /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);
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 HOSTNAMEHERE
despué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);
¡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 HOSTNAMEHERE
oecho 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.
Lo último que puede hacer es editar /etc/dhcpcd/dhcpcd.conf. Si agrega hostname YOURHOSTNAME
al 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.
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
- Tenga en cuenta que el dispositivo debe estar rooteado para usar adb
- Correr
adb pull /system/build.prop
- Edite el
build.prop
archivo y agreguenet.hostname=NewHostname
- Ejecutar
adb push build.prop /sdcard/build.prop
(o/mnt/sdcard
, si falla)- Ejecute
adb shell
y ejecute los siguientes comandos:
$ su
# mount -o rw,remount /system
# cp /sdcard/build.prop /system/build.prop
(o/mnt/sdcard
si lo usó anteriormente)
# mount -o ro,remount /system
# exit
- Reiniciar el dispositivo
setprop
comando a través de un shell raíz en el dispositivo: por ejemplosetprop net.hostname NewHostName
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'.
Ve a Google Play Store. Busque "nombre de host" y descargue la aplicación de cambio de nombre de host .
Debe estar rooteado.
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/hostname
en 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.hostname
se 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_id
se volvió exclusivo para las aplicaciones, ya no net.hostname
está configurado, por lo que null
se envía a DHCPREQUEST
. Consulte los cambios de privacidad y las mejoras de seguridad de Android 8 :
net.hostname
ahora 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.hostname
manualmente usando el setprop
comando 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
.rc
busybox udhcpc
Flujo
Jared Madrigueras
código
Ciro Santilli OurBigBook.com