"""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, }