Jak zmienić nazwę mojego urządzenia z Androidem?

59

Moje urządzenie z Androidem to Nexus One. Powinno to jednak dotyczyć wszystkich obecnych urządzeń z Androidem.

Jak zmienić nazwę mojego urządzenia z Androidem?

Kiedy łączę się z tabelami klientów routera bezprzewodowego, moje urządzenia z Androidem są wymienione na przykład jako: android_1234567890abedfc. Chciałbym nadać mu bardziej czytelną nazwę.

gąbka
źródło
Możliwe jest również skonfigurowanie nazwy hosta za pośrednictwem serwera DHCP. Ale nie sprawdziłem, czy Android używa tej opcji konfiguracji. W każdym razie jest to tylko opcja kosmetyczna.
Flow
@Flow (Różni się, ale) DHCPCD na Androidzie nie ma haków dhcpcd-run do ustawiania nazwy hosta z DHCP. Przynajmniej na moim urządzeniu Samsung Froyo. Nie ma też haków NTTP. DHCPCD jednak to obsługuje.
cde
dla GNU Linux: askubuntu.com/questions/9540/how-do-i-change-the-computer-name , metody jądra niskiego poziomu będą działać
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

Odpowiedzi:

22

Aby zmienić nazwę hosta (nazwę urządzenia), musisz użyć terminala (jako root):

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

Dla Froyo (2.2): (działa również na większości 2.3) setprop net.hostname MYNAME

Następnie uruchom ponownie wi-fi. Aby zobaczyć zmianę, wpisz uname -a

niektóre urządzenia wymagają ponownego uruchomienia do pracy!

Eder Gusatto
źródło
Czy to działa na żelki?
jrg
3
Działa to, ale nie utrzymuje się przy ponownym uruchomieniu.
palswim
1
uname -anie pokazuje mi nazwy hosta, choć tak mówi localhost. czego się spodziewasz?
endolith
15

Podsumowanie:

  • getprop net.hostname (Nazwa hosta systemu Android, prawdopodobnie nazwa typu android_24412414)
  • echo $HOSTNAME (nazwa hosta powłoki / terminala / env, prawdopodobnie ro.product.device z build.prop)
  • cat /proc/sys/kernel/hostname(Nazwa hosta systemu Linux, prawdopodobnie localhost )
  • head /etc/hosts(Nazwa hosta systemu Linux, prawdopodobnie localhost )
  • hostname(Polecenie nie zawsze instalowane, jeśli jest instalowane przez zajętą ​​skrzynkę, odczyta / proc / sys / kernel / hostname )

Zależy od posiadanej wersji Androida.

Android 4.0 i nowszy

Nowsze wersje będą używać właściwego build.propwpisu. To znaczy, że Android odczytuje build.propnormalny proces uruchamiania. Po uruchomieniu usługi łączności sprawdza, czy w ustawieniach ustawiony jest net.hostname, a następnie, jeśli jest pusty, używa identyfikatora „android_” + (stały) android. To wszystko, co musisz zrobić.

Dodaj net.hostname=HOSTNAMEHEREdo /system/build.prop(może być konieczne rootowanie). Pozostaw pustą linię na końcu pliku.

Kitkat's ConnectivityService.java, zwróć uwagę na instrukcję 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 i nowsze wersje

Starsze wersje, Gingerbread, Froyo itp., Po prostu go kasują. Sprawdzanie nie przeszkadza. Ustawi nazwę net.hostname na android_24412414 ... bez względu na wszystko. Musisz go zmienić po zakończeniu ładowania usługi łączności. Na szczęście uruchamia start tylko raz, a nie przy każdym nowym połączeniu. Musimy więc setprop net.hostname HOSTNAMEHEREpo tym pobiec , żeby się przylgnął. Niestety, działa dość późno w trakcie uruchamiania, więc potrzebujesz czegoś, co wprowadzi zmiany w boot_complete. Najprawdopodobniej aplikacja działa sama.

Froyo's ConnectivityService.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);

Ale jest jeszcze jeden problem.

Ustawienie net.hostname nie jest kopiowane do całego systemu! Jeśli używasz aplikacji konsoli / terminala, możesz nie otrzymać tej samej nazwy hosta. Mój telefon, Samsung Sidekick 4G (oparty częściowo na Galaxy S), ma plik init.rc, który działa hostname localhost, więc wszystkie poniższe polecenia nie będą widzieć ani nazwy hosta build.prop ani nazwy hosta android_id! Więc musisz to również ustawić.

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

Uwaga: w zależności od tego, jak to robisz, musisz uruchomić powyższe polecenie jako root, aby działało. Plik Init.rc znajduje się zwykle na partycji systemowej tylko do odczytu, więc do jego edycji potrzebny jest dostęp do konta root.

Polecenie dhcpcd, które jest uruchamiane w celu uzyskania adresu dhcp, nie zostanie zaktualizowane do nazwy hosta podanej przez serwer (można to naprawić, dodając odpowiednie dhcpcd-run-hooks i dhcpcd.conf) i nie poda nazwy hosta do serwera dhcp, jeśli $(hostname)(polecenie hostname) jest puste lub localhost i nie używa wewnętrznie net.hostname. libnetutils służy do wywoływania dhcpcd przy pomocy -h „net.hostname”, ale jeśli z jakiegoś powodu zdecyduje się nie wywoływać przy pomocy -h, DHCPCD BĘDZIE WYSYŁAĆ NAZWĘ HOSTA SYSTEMOWĄ poprzez gethostname (), o ile nie jest to „(brak) ”,„ localhost ”lub pusty. W każdym razie na magazynie Froyo. Samsung przykręcił kundla do niektórych urządzeń, takich jak moje. Nie przechodzi nazwa hosta, wymuszony czas sieci itp.

Moje rozwiązanie dla Gingerbread i poniżej Samsunga Edytuj konfigurację demona klienta DHCP:

Ostatnią rzeczą, którą możesz zrobić, jest edycja /etc/dhcpcd/dhcpcd.conf. Jeśli dodasz hostname YOURHOSTNAMEdo pliku, użyje go, chyba że w wierszu poleceń podano nazwę hosta. To nie rozwiąże problemu android_234etc, ale zrobi to, jeśli nazwa hosta to localhost (Mój problem, ponieważ Samsung wkręcił libnetutils i localhost w init.rc). Będziesz potrzebował rootowania, ale działa to przy restartach. To nie zadziała, jeśli dhcpcd zostanie wywołany z opcją -h Nazwa hosta.

cde
źródło
10

Znalazłem sposób, aby to zrobić na moim zrootowanym Nexusie 7 z 4.2.2. Ustawienie jest zapisywane na stałe i działa podczas ponownego uruchamiania.
Źródło: http://nileshgr.com/2012/10/13/how-to-change-wifi-host-name-of-your-android-device

  1. Pamiętaj, że urządzenie musi być zrootowane, aby korzystać z adb
  2. Biegać adb pull /system/build.prop
  3. Edytuj build.propplik i dołącznet.hostname=NewHostname
  4. Uruchom adb push build.prop /sdcard/build.prop(lub /mnt/sdcard, jeśli się nie powiedzie)
  5. Uruchom adb shelli wykonaj następujące polecenia:
    $ su
    # mount -o rw,remount /system
    # cp /sdcard/build.prop /system/build.prop(lub /mnt/sdcardjeśli wcześniej tego używałeś)
    # mount -o ro,remount /system
    # exit
  6. Uruchom ponownie urządzenie
Lennart
źródło
Zostało to naprawione w nowszych wersjach Androida. Sprawdza net.hostname z build.prop. Starsze wersje Androida tego nie robią (głównie Froyo, może Gingerbread).
cde
ICS nie jest 4.2.2, to byłby JB
HasH_BrowN
łatwiejszym sposobem na to jest użycie setproppolecenia za pomocą powłoki root na urządzeniu: na przykładsetprop net.hostname NewHostName
Mark
1
Znak @, który zostałby zablokowany przy ponownym uruchomieniu. Ta odpowiedź jest wersją stałą.
cde
9

Działa to na CyanogenMod i prawdopodobnie na innych zmodyfikowanych ROMach, ale nie ma zapasów ROM AOSP:

Przejdź do Ustawienia> Opcje programisty i przewiń w dół do Nazwa hosta urządzenia . Korzeń nie jest potrzebny.

(Kliknij obraz, aby powiększyć)

IMG:

cbabb
źródło
2
Tak, nie można tego zrobić na tablecie Acer A100 z systemem Android 4.0.3. W rzeczywistości nie ma nawet „Nazwy hosta urządzenia” w Opcjach programisty.
bgmCoder,
7

Dawno nie prowadziłem magazynu, ale w Ustawieniach aplikacji> Programowanie zobaczysz opcję „Nazwa hosta urządzenia”.

Tim T.
źródło
na jakich wersjach Androida? Kiedy patrzę na opcje programistyczne na moim Droid 3 (Android 2.3.4), nie mam tej opcji.
Michael Kohne,
3
Działa to na CyanogenMOD i prawdopodobnie na innych zmodyfikowanych ROMach, ale nie ma zapasów ROM AOSP.
Caleb
Całkowicie zależy od producenta i konstruktora, a także wersji Androida.
cde
5

Przejdź do sklepu Google Play. Wyszukaj „nazwa hosta” i pobierz aplikację do zmiany nazwy hosta .

Musi być zrootowany.

Ryan Knell
źródło
Czy zmiana nazwy urządzenia coś zepsuje wewnętrznie?
bgmCoder,
0

Nazwa hosta służy do łatwej identyfikacji i zapamiętywania hostów podłączonych do sieci. Jest uruchamiany podczas rozruchu, np. Z /etc/hostnamesystemów Linux. Nazwa hosta jest również częścią DHCPREQUEST(znormalizowaną jako kod 12 przez IETF), którą klient DHCP (w naszym przypadku urządzenie z Androidem) wykonuje na serwerze DHCP (router WiFi) w celu przypisania adresu IP. Serwer DHCP przechowuje nazwy hostów, aby oferować usługi takie jak DNS .

Android - zamiast korzystać z usługi nazw hostów jądra Linuksa - używał właściwości net.hostnamedo ustawiania unikalnej nazwy hosta dla każdego urządzenia, która była oparta na ID Androida. Ta właściwość nazwy hosta była również używana do uzgadniania DHCP. Jednak od Androida 5 - gdy rodzimy dhcpcdzostał porzucony na rzecz klienta Java DHCP - nazwa hosta jest zerowy w DHCPREQUEST. nienet.hostname jest ustawiany ani oceniany przez klienta DHCP. Dlatego routery WiFi nie wyświetlają nazw hostów dla nowszych urządzeń z Androidem, ani nie możemy ich ustawić / rozbroić / zmienić.

Irfan Latif
źródło