android-unlock-and-more-box/aubox/p10lite.py

94 lines
3.9 KiB
Python

"""Workflows für Huawei P10 Lite (WAS-LX1, Kirin 658, EMUI 8.x).
Drei FRP-Removal-Pfade in absteigender Erfolgswahrscheinlichkeit:
1. erecovery — eRecovery + update.app von SD-Karte. Kein Loader nötig.
Kein Bootloader-Unlock nötig. Funktioniert in der Regel.
2. dload-erase — Testpoint -> Kirin DLOAD -> xloader -> frp-Partition leeren.
Braucht passende Loader-Files (siehe loaders/README.md).
3. dload-flash — Testpoint -> Kirin DLOAD -> kompletter Reflash via update.app.
Maximaler Eingriff, höchstes Risiko, bricht Garantie endgültig.
Was hier *nicht* funktioniert:
- ADB/Fastboot-FRP-Tricks: das Gerät ist im Setup-Wizard, ADB ist aus.
- TalkBack/YouTube-Tricks: von Google/Huawei seit Jahren gepatcht.
- Bootloader-Unlock-Code von Huawei: seit Juli 2018 abgeschaltet.
"""
from __future__ import annotations
from pathlib import Path
LOADER_ROOT = Path(__file__).resolve().parent.parent / "loaders" / "kirin" / "kirin960_lite"
# Kirin 658 wird intern oft mit dem Kirin-960-Loader-Set gefahren (Lite-Variante).
# Für 100%-Sicherheit: Loader vom exakten WAS-LX1-Firmware-Dump verwenden.
XLOADER_NAME = "hisi-sec_usb_xloader.bin"
USB_LOADER_NAME = "usb_loader.bin"
FASTBOOT_BIN_NAME = "fastboot.bin"
# SRAM-Adressen für die Loader-Stages (öffentlich aus Kirin-Reverse-Engineering)
# Im Zweifel mit dem Image abgleichen — manche WAS-Builds nutzen 0x07012000.
XLOADER_ADDR = 0x07012000
USB_LOADER_ADDR = 0x07012000
def erecovery_instructions() -> str:
"""Schritt-für-Schritt für den eRecovery-Pfad. Pure Anleitung, kein Code."""
return """
eRecovery-Methode (ohne Loader, ohne Bootloader-Unlock)
========================================================
Du brauchst:
- Eine FAT32-formatierte SD-Karte, max. 32 GB
- Die *exakte* update.app deiner Region (z.B. WAS-LX1 EMEA C432)
Bezug: huaweifirm.com, hovatek.com, stockromhuawei.com
- USB-Ladegerät (kein Datenkabel nötig)
Schritte:
1. Auf der SD-Karte einen Ordner `dload` (klein!) anlegen.
2. update.app dort hineinkopieren. Pfad: SD:/dload/update.app
3. SD-Karte in das ausgeschaltete P10 Lite stecken.
4. Beim Einschalten gleichzeitig halten: Power + Volume-Up + Volume-Down.
Halten bis das Huawei-Logo erscheint, dann nur noch Power weiter, andere lösen.
5. eRecovery erkennt die SD-Karte und bietet "Software-Update" / "SD-Karten-Update".
Bestätigen.
6. Nach Abschluss bootet das Gerät neu, FRP-Partition ist neu geschrieben,
Setup-Assistent startet ohne alten Google-Account.
Wenn eRecovery die Datei nicht erkennt:
- Region passt nicht (häufigster Fehler)
- update.app ist Multi-Part (.app + .lst). Beide nach /dload kopieren.
- SD-Karte nicht FAT32 oder > 32 GB
"""
def dload_erase_plan(loader_dir: Path = LOADER_ROOT) -> dict:
"""Plant den Testpoint -> DLOAD -> frp-erase-Pfad.
Liefert ein Dict mit Pfaden und Adressen, das vom CLI ausgeführt wird.
Wirft FileNotFoundError, wenn die Loader-Files fehlen — dann landet der
User bei loaders/README.md und weiß, was zu tun ist.
"""
xloader = loader_dir / XLOADER_NAME
usb_loader = loader_dir / USB_LOADER_NAME
missing = [str(p) for p in (xloader, usb_loader) if not p.is_file()]
if missing:
raise FileNotFoundError(
"Folgende Loader-Files fehlen:\n - "
+ "\n - ".join(missing)
+ "\nSiehe loaders/README.md für Beschaffung."
)
return {
"stages": [
{"file": xloader, "addr": XLOADER_ADDR, "label": "xloader"},
{"file": usb_loader, "addr": USB_LOADER_ADDR, "label": "usb_loader"},
],
"post": "huawei-fastboot-d", # erwarteter Modus nach dem Loaden
"frp_partition": "frp",
# Größe der FRP-Partition auf P10 Lite: meist 1 MiB. Beim ersten echten
# Lauf gegen die ptable des Geräts gegenchecken (gpt-Dump via fastboot).
"frp_size_bytes": 1024 * 1024,
}