[DEV] IMEI/MAC Problematik nach Formatieren des images-Ordners ohne vorheriges Backup

  • 80 Antworten
  • Letztes Antwortdatum
Also bringt es nix, meine nvram.txt.von Shendu ins FrozenPika zu tranferieren? Sonst würd ich das mal testen...

...using tapatalk on my huawei honor smartphone
 
Warum transferieren? Einfach die Datei editieren. Die Hardware-Bibliothek laedt das Kernel-Modul mit folgenden Parameters:

Code:
# strings /system/lib/libhardware_legacy.so | grep nvram
[B]firmware_path=/system/vendor/firmware/fw_bcm4329.bin nvram_path=/system/vendor/firmware/nvram.txt[/B]

Das Kernel-Modul wuerde auch ohne Parameter an der gleichen Stelle suchen:

Code:
# strings /system/lib/modules/bcm4329.ko | grep nvram
nvram_path
dhdsdio_download_nvram
parmtype=nvram_path:string
%s: dhdsdio_probe_download failed. firmware = %s nvram = %s
[B]/system/vendor/firmware/nvram.txt[/B]
%s: same MAC address in ram and nvram %02x:%02x:%02x:%02x:%02x:%02x
%s: use MAC address in nvram %02x:%02x:%02x:%02x:%02x:%02x
%s: error reading nvram file: %d
%s: dongle nvram file download failed
Also einfach "/system/vendor/firmware/nvram.txt" anpassen und alles sollte gut sein.
 
Scheint doch nicht ganz so einfach zu sein.

Nachdem ich die MAC der nvram.txt modifiziert hatte, wurde diese in der aktuellen Shendu-Rom auch so übernommen. Ebenso übernimmt die letzte MIUI die geänderte MAC. Bei beiden ROM's ist die nvram abgelegt unter: /system/wifi/nvram.txt
Bei den 4.2-ROM's von Da Nya, Dolmatov94 oder auch FrozenPika wird die nvram.txt in der Vendor abgelegt, aber nicht übernommen. Bei allen bleibt die MAC auf 00:00.....

SCHADE! Also weiter kein WLAN für diese!
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: det-happy
Und was finden sich fuer Meldungen im Kernel-Log ("dmesg") zu dem Zeitpunkt, wo das WLAN Modul geladen wird? Alles bestens und die MAC stimmt einfach nicht oder irgendwelche Fehler?
 
Die Frage nach der Bluetooth Adresse kam in einem anderen Thread auf, aber ich denke die Idee war die Problematiken hier zu konsolidieren. Also ein paar Ausfuehrungen zu Bluetooth:

- Aktiviert man Bluetooth, so wird versucht den Service "hciattach" zu starten. Dieser sollte in einer der Init Dateien im Hauptverzeichnis zu finden sein ("init*.rc")
- hciattach wird in den meisten Faellen (kann aber bei manchen ROMs auch anders umgesetzt sein) "brcm_patchram_plus" aufrufen
- brcm_patchram_plus ist das passende Tool von Broadcom, um den Bluetooth Chip zu initialisieren - Firmware laden, BT Adresse setzen, etc.
- So es nicht anderweitig modifiziert wurde, schaut brcm_patchram_plus, ob "ro.bt.bdaddr_path" in der Umgebung gesetzt ist und versucht ggf. die entsprechende Datei zu lesen
- Ist also "ro.bt.bdaddr_path=/system/etc/bluetooth/bluetooth.addr", sollte diese Datei gelesen werden und die enthaltene Bluetooth MAC verwendet werden

Was kann man also tun? :
- einmal schauen, ob wirklich "brcm_patchram_plus" vom "hciattach" Service aufgerufen wird und ob das Executable "ro.bt.bdaddr_path" abfragt
- Umgebung mit "getprop ro.bt.bdaddr_path" abfragen
- weiter pruefen, ob die referenzierte Datei existiert und wie der Inhalt aussieht

Vielleicht hilft es dem einen oder anderen weiter ...
 
Zuletzt bearbeitet:
So, hier mal die Mac-Adresse, die ich in den letzen 8 Stunden unterm StockRom (B927FRA) hatte. Eine Idee, was ich da testen könnte?
 

Anhänge

  • screenshot.jpg
    screenshot.jpg
    52,9 KB · Aufrufe: 361
Siehe auch weiter oben. Nachdem wir den Prefix ("CC:BB:AA:...") bislang noch nicht gesichtet haben, wuerde mich folgendes interessieren, um es evtl. einordnen zu koennen. Wird allerdings nur funktionieren, so das ROM gerootet ist und Busybox mit allen Links eingerichtet ist:

1. Anschauen mit welchen Parametern das WLAN Kernel Module geladen wird
"strings /system/lib/libhardware_legacy.so | grep nvram"
So hier nichts auftaucht, wird das Kernel Module auf irgendwelche Defaults zurueckgreifen.

2. Schauen, welche Pfade und Dateien das WLAN Module ggf. als Default verwendet
"strings /system/lib/modules/bcm4329.ko | grep nvram"
Kann aber auch sein, dass es einen anderen Namen hat. Etwa "dhd.ko".

3. Schauen, was der Kernel zu sagen hat
WLAN aktivieren und dann ...
"dmesg | grep nvram"
 
  • Danke
Reaktionen: Alex_R3CONN3R
Schick mir bitze eine ne PN, was genau ich machen soll, um an diese Logs zu kommen? Root ist drauf, Busybox lite und Terminal Emulator ebenfalls. Das recovety ist noch stock

...using tapatalk on my huawei honor smartphone
 
Hab das mal bei der FrozenPika by Dolmatov v 0.1.1 gemacht.
Das hat er bei mir ausgespuckt:
Code:
C:\Dokumente und Einstellungen\Administrator>adb shell

root@android:/ # [B]strings /system/lib/libhardware_legacy.so | grep nvram[/B]
strings /system/lib/libhardware_legacy.so | grep nvram
firmware_path=/system/vendor/firmware/fw_bcm4329.bin
nvram_path=/system/vendor/firmware/nvram.txt
__________________
Code:
root@android:/ # [B]strings /system/lib/modules/bcm4329.ko | grep nvram[/B]
strings /system/lib/modules/bcm4329.ko | grep nvram
strings: /system/lib/modules/bcm4329.ko: No such file or directory
Code:
1|root@android:/ # [B]strings /system/lib/modules/dhd.ko | grep nvram[/B]
strings /system/lib/modules/dhd.ko | grep nvram
strings: /system/lib/modules/dhd.ko: No such file or directory
Hat er beide nicht gefunden habe dann mal in den Ordner geguckt was da sonst noch alles drin ist:
Code:
ansi_cprng.ko
cls_flow.ko
cpaccess.ko
dal_remotetest.ko
dma_test.ko
evbug.ko
gspca_main.ko
librasdioif.ko
mtd_erasepart.ko
mtd_nandecctest.ko
mtd_oobtest.ko
mtd_pagetest.ko
mtd_readtest.ko
mtd_speedtest.ko
mtd_stresstest.ko
mtd_subpagetest.ko
mtd_torturetest.ko
qce.ko
qcedev.ko
qcrypto.ko
reset_modem.ko
sch_dsmark.ko
scsi_wait_scan.ko
__________________
Code:
127|root@android:/ # [B]dmesg | grep nvram[/B]
dmesg | grep nvram
1|root@android:/ #
Hier hat er leider nchts ausgespuckt.
Auch nicht über logcat.

Gruß Alex
 
  • Danke
Reaktionen: Cryptophon
Jetzt bin ich ein wenig verwirrt. Ich habe ein ZIP fuer FrozenPica geladen (1.0.2), wo /system/lib/modules/bcm4329.ko existiert. Aber evtl. existieren hier auch wieder unterschiedliche Versionen. Zwei Dinge, wie wir uns hier weiter annaehern koennen:

1. Im ersten Schritt einmal das "grep nvram" weglassen
Damit sieht man dann halt alle enthaltenen Strings. Es sollte auch sichtbar werden, welches Module die Bibliothek fuer WLAN versucht zu laden. Kommando waere dann also einfach:
"strings /system/lib/libhardware_legacy.so"
Im Output einmal nach etwas suchen, was auf ".ko" endet.

2. Das gesamte System nach Kernel Modulen durchsuchen
Evtl. hat man es in einem "vendor" Verzeichnis oder aehnlich versteckt. Also in einer Shell gehen und dann:
"find / -name *.ko -print"
 
  • Danke
Reaktionen: Alex_R3CONN3R
Cryptophon schrieb:
Jetzt bin ich ein wenig verwirrt. Ich habe ein ZIP fuer FrozenPica geladen (1.0.2), wo /system/lib/modules/bcm4329.ko existiert. Aber evtl. existieren hier auch wieder unterschiedliche Versionen. Zwei Dinge, wie wir uns hier weiter annaehern koennen:
Ich hab denn Wifi Patch geflasht damit es überhaupt funktioniert.
Hab grad mal geguckt. Ursprünglich ist es in der ROM drin wird dann aber im updater-script gelöscht:
Code:
delete("/system/lib/modules/bcm4329.ko");
Kannst dir die Zip mal genauer angucken. u8860_wifi.zip
Cryptophon schrieb:
1. Im ersten Schritt einmal das "grep nvram" weglassen
Damit sieht man dann halt alle enthaltenen Strings. Es sollte auch sichtbar werden, welches Module die Bibliothek fuer WLAN versucht zu laden. Kommando waere dann also einfach:
"strings /system/lib/libhardware_legacy.so"
Im Output einmal nach etwas suchen, was auf ".ko" endet.

Hmm. Wen ich das am Rechner über adb mache ist der output zu lang und verschwindet
Deswegen habe ich am Ende einmal "grep | ko", "grep | wifi" und "grep | bcm" drangehängt.

Output von "ko":
Code:
[I]1|root@android:/ # strings /system/lib/libhardware_legacy.so | grep ko
strings /system/lib/libhardware_legacy.so | grep ko[/I]

setsockopt
/system/wifi/dhd.ko
Output von "wifi":
Code:
[I]root@android:/ # strings /system/lib/libhardware_legacy.so | grep wifi
strings /system/lib/libhardware_legacy.so | grep wifi[/I]

wifi_close_sockets
is_wifi_driver_loaded
wifi_unload_driver
wifi_wpa_ctrl_cleanup
wifi_start_supplicant
wifi_stop_supplicant
wifi_connect_on_socket_path
wifi_connect_to_supplicant
wifi_send_command
wifi_ctrl_recv
wifi_wait_on_socket
wifi_wait_for_event
wifi_close_supplicant_connection
wifi_command
wifi_get_fw_path
wifi_change_fw_path
wifi_load_driver
wifi_set_mode
wifi.interface
/data/misc/wifi/sockets
wifi_ctrl_recv failed: %s
/system/wifi/dhd.ko
/system/etc/wifi/wpa_supplicant.conf
/data/misc/wifi/entropy.bin
/data/misc/wifi/p2p_supplicant.conf
/data/misc/wifi/wpa_supplicant.conf
/data/misc/wifi/sockets
Output von "bcm":
Code:
[I]root@android:/ # strings /system/lib/libhardware_legacy.so | grep bcm
strings /system/lib/libhardware_legacy.so | grep bcm[/I]

/system/vendor/firmware/fw_bcm4329.bin
/system/vendor/firmware/fw_bcm4329_apsta.bin
firmware_path=/system/vendor/firmware/fw_bcm4329.bin nvram_path=/system/vendor/firmware/nvram.txt
bcm4329
bcm4329
Cryptophon schrieb:
2. Das gesamte System nach Kernel Modulen durchsuchen
Evtl. hat man es in einem "vendor" Verzeichnis oder aehnlich versteckt. Also in einer Shell gehen und dann:
"find / -name *.ko -print"

Output
Code:
[I]root@android:/ # find / -name *.ko -print
find / -name *.ko -print[/I]

/system/lib/modules/ansi_cprng.ko
/system/lib/modules/cls_flow.ko
/system/lib/modules/cpaccess.ko
/system/lib/modules/dal_remotetest.ko
/system/lib/modules/dma_test.ko
/system/lib/modules/evbug.ko
/system/lib/modules/gspca_main.ko
/system/lib/modules/librasdioif.ko
/system/lib/modules/mtd_erasepart.ko
/system/lib/modules/mtd_nandecctest.ko
/system/lib/modules/mtd_oobtest.ko
/system/lib/modules/mtd_pagetest.ko
/system/lib/modules/mtd_readtest.ko
/system/lib/modules/mtd_speedtest.ko
/system/lib/modules/mtd_stresstest.ko
/system/lib/modules/mtd_subpagetest.ko
/system/lib/modules/mtd_torturetest.ko
/system/lib/modules/qce.ko
/system/lib/modules/qcedev.ko
/system/lib/modules/qcrypto.ko
/system/lib/modules/reset_modem.ko
/system/lib/modules/sch_dsmark.ko
/system/lib/modules/scsi_wait_scan.ko
/system/wifi/dhd.ko
 
  • Danke
Reaktionen: Cryptophon
Okay. Dann reden wir bei diesem ROM also ueber "/system/wifi/dhd.ko".

Keine Ahnung, warum der Ersteller des ROMs ein neues Verzeichnis aufgemacht hat ...

Ich schaue spaeter einmal in die ZIP. So Du Dich versuchen willst halt einfach noch einmal nach den Strings in dem nun lokalisierten dhd.ko schauen:

"strings /system/wifi/dhd.ko" oder halt wieder durch eine Pipe an "grep" schicken, also noch etwa " | grep nvram" anhaengen.
 
  • Danke
Reaktionen: Alex_R3CONN3R
Sieh mal einer an:
Code:
[I]root@android:/ # strings /system/wifi/dhd.ko | grep nvram
strings /system/wifi/dhd.ko | grep nvram[/I]

nvram_path
dhdsdio_download_nvram
parmtype=nvram_path:string
%s: dhdsdio_probe_download failed. firmware = %s nvram = %s
[B][I][U]/data/misc/wifi/load/nvram.txt[/U][/I][/B]
%s: same MAC address in ram and nvram %02x:%02x:%02x:%02x:%02x:%02x
%s: use MAC address in nvram %02x:%02x:%02x:%02x:%02x:%02x
%s: error reading nvram file: %d
%s: dongle nvram file download failed
nvram_path
dhd_bus_set_nvram_params

Als ich die per adb pull holen wollte war die nicht da. Hab dann die aus der system-Partiotion gepusht und neugestartet und...
Wlan lässt sich immer noch nicht aktivieren. :sad:
Nach dem Neustart ist da immer noch der gleiche Fehler.

Aber man sieht das in der dhd.ko ein Fehler beim Laden ist. :thumbup:
Anscheinend fehlt an dieser Stelle "parmtype=nvram_path:string" ein Parameter.

Gruß Alex

Edit:
Hab mal ein bisschen recherchiert. Das dürfte für das Honour in etwa das gleiche sein:
https://www.android-hilfe.de/forum/...-x3.425/kernel-selbst-kompilieren.172743.html

Das hir dürfte auch ganz interessant sein:
JetDroid • View topic - Initializing the wifi module (dhd.ko)
 
Zuletzt bearbeitet:
Hi,
evtl. kann ich etwas helfen bei der geschichte der Mac Adresse. Und zwar wird die MAC adresse aus der Seriennummer des Telefons an den WLAN Treiber weiter gegeben.

Ohne Seriennummer keine FIX MAC-Adresse.

Gruß Taffy
 
und die Serial ist zusammen mit der IMEI und der MacAdresse formatiert worden :tongue:
 
Die Seriennummer wird vom Init Prozess gesetzt:

https://github.com/CyanogenMod/android_system_core/blob/cm-10.1/init/init.c#L681

Der Init Prozess erhaelt die Seriennummer ueber die Kernel Command Line ("androidboot.serialno"). Fuer Custom ROMs gibt es demnach keine Seriennummer, so nicht:

a) Der Init Prozess modifiziert wurde

b) Die Seriennummer an den Kernel uebergeben wird

Dies muesste dann der Bootloader uebernehmen, oder alle Geraete haben die gleiche SN, so es im Bootimage erfolgt.

c) Der Kernel seine Command Line Parameter selber modifiziert

Man kann dies einmal wie folgt pruefen:

1. Eine Root Shell oeffnen

- "adb shell" und "su"

2. Die Kernel Command Line anschauen

- "cat /proc/cmdline"

3. Die Seriennummer aus der Android Umgebung abrufen

- "getprop ro.serialno"

Letzteres sollte identisch mit der Anzeige der GUI sein (Einstellungen->Ueber das Telefon)

Moechte man dieser Theorie folgen, kann man einmal das Bootimage zerlegen, die Kernel Command Line um "androidboot.serialno=<Seriennummer unter dem Akku>" ergaenzen und das Image dann wieder zusammenbauen und auf dem Telefon austauschen.

Alternativ muesste man den Bootloader analysieren, um zu ergruenden, wie dieser die SN ermittelt (aus der formatierten Partition).

Beim Huawei werden diverse Details anders aussehen, aber da es auch ein Qualcomm Chip ist, gibt einem folgende Analyse eine ganz gute Idee, was im Bootprozess alles passiert:

Android/HTC/Vision/BootProcess
 
  • Danke
Reaktionen: Alex_R3CONN3R und bollerah
Unser Freund WAWA hatte noch eine Idee

http://www.modaco.com/topic/337340-update-zte-imei-flash-tool-for-imei-all-0-machine/page__st__20


ich habs einmal gemacht
unter win7 nicht ganz einfach
xp ist da einfacher
QPST brauchste
musst halt erstmal rausfinden welcher port dein handy benutzt
aber ich denke fast schon densleben wie zte
alles selbe baustelle
aber das ist nicht in 2 stunden geschafft beim ersten mal !

Im groben:
mit qpst dein handy anschliessen
port auswählen
die daten auslesen (nvram)
dann mt nem andern tool, die nvram bearbeiten (imei und mac)
mit qpst diese nvram wieder aufs handy flashen

Hilft dat uns?
 
Zuletzt bearbeitet von einem Moderator:
Ich mein das ich das schon mal mit dem Programm probiert habe. Werds morgen aber nochmal ausprobieren :)
 
Leider kein Erfolg :(
Das Programm stürzt immer ab wenn ich die werte auslesen will.

Gruß Alex
 
  • Danke
Reaktionen: det-happy

Ähnliche Themen

M
Antworten
3
Aufrufe
2.059
markus2107
M
C
Antworten
10
Aufrufe
1.634
cheffi
C
C
  • Gesperrt
  • Comander80
Antworten
2
Aufrufe
1.010
det-happy
det-happy
Zurück
Oben Unten