hw/arm: add experimental iPhone 5 A6 platform

This commit is contained in:
2026-08-31 02:16:31 +02:00
parent cf256aa081
commit 47977dd34a
34 changed files with 4524 additions and 0 deletions
+111
View File
@@ -0,0 +1,111 @@
# iPhone 5 / Apple A6 sur QEMU Windows natif
## État actuel
- QEMU `arm-softmmu` est compilé en PE Win64 natif avec MSYS2 MinGW64. WSL nest pas utilisé.
- La machine `iphone5` exécute la SecureROM A6 `iBoot-1145.3` de 65 536 octets.
- Les fusibles exposent `CPID:8950`, `CPRV:20` et `CPFM:03`.
- LUART A6 est relié à la console QEMU (`Ctrl+A`, puis `C` pour le moniteur ; `Ctrl+A`, puis `X` pour quitter).
- Le contrôleur USB OTG, son EP0, les DMA et lIRQ 11 permettent à la SecureROM de terminer son énumération DFU.
- Le descripteur produit par cette SecureROM annonce `VID=05AC, PID=1229`. La façade Windows le normalise vers le PID DFU public `1227`, attendu par `libirecovery`.
- Le pilote KMDF/UDE `QemuA6Ude.sys` crée un véritable enfant PnP `USB\VID_05AC&PID_1227` sous Windows.
- `QemuA6UsbBridge.exe` relaie les contrôles DFU entre le pilote et QEMU sur `127.0.0.1:26050`.
- Un test externe `DFU_GETSTATE` a traversé le socket, le modèle OTG et la SecureROM, puis a renvoyé `dfuIDLE` (`2`).
- `idevicerestore.exe` et `libirecovery` restent dorigine et ne sont pas patchés.
Le paquet pilote signé en mode test est généré localement dans
`windows\QemuA6Ude\package` ; les clés, certificats et binaires générés ne sont
pas versionnés.
## Construction Windows native
QEMU se configure depuis un terminal MSYS2 MinGW64 :
```sh
./configure --target-list=arm-softmmu
ninja -C build qemu-system-arm.exe
```
Le pilote UDE nécessite Visual Studio 2022 Build Tools et le WDK avec UDE. Si
le WDK n'est pas installé à son emplacement standard, définir
`QA6_WDK_ROOT` vers sa racine (celle qui contient `Include`, `bin` et `tools`).
Depuis PowerShell :
```powershell
.\windows\QemuA6Ude\prepare-package.ps1
.\windows\QemuA6UsbBridge\build-bridge.ps1 -Configuration Release
```
## Première installation du pilote
La signature dun pilote noyau local exige le mode de signature test Windows. Cette opération modifie le BCD et demande un redémarrage. Depuis un PowerShell administrateur :
```powershell
.\windows\QemuA6Ude\enable-test-mode.ps1
Restart-Computer
```
Après le redémarrage, toujours en administrateur :
```powershell
.\windows\QemuA6Ude\install-driver.ps1
```
Si Secure Boot bloque `testsigning`, il faut le désactiver dans lUEFI. Le script dinstallation importe uniquement le certificat public de test puis crée le contrôleur racine `Root\QemuA6Ude` avec `devcon`.
## Lancement normal
Depuis PowerShell à la racine :
```powershell
.\Run-iPhone5.ps1 -SkipBuild
```
Le mode USB Windows est actif par défaut. Le lanceur démarre le pont en arrière-plan, garde lUART dans la console et écrit les échanges USB dans `build\a6-usb-bridge.log`.
Vérification dans un second PowerShell :
```powershell
pnputil /enum-devices /connected /class USB
& 'C:\msys64\mingw64\bin\idevicerestore.exe' -d 'iPhone_4.0_32bit_10.3.4_14G61_Restore.ipsw'
```
Pour conserver lancien injecteur DFU interne, fournir directement une image :
```powershell
.\Run-iPhone5.ps1 -DfuImagePath '.\build\firmware\iBSS.iphone5.RELEASE.dfu' -Trace
```
Pour démarrer sans façade USB Windows :
```powershell
.\Run-iPhone5.ps1 -NoWindowsUsb
```
## Prochain jalon
Une fois l’énumération PnP confirmée, lIPSW iOS 10.3.4 sera envoyé par l`idevicerestore` original. La SecureROM vérifiera liBSS ; après son exécution, il faudra modéliser les périphériques supplémentaires utilisés par iBSS/iBEC et gérer sa réénumération USB Recovery pour atteindre iBoot.
## Reprise sur macOS
Le fork QEMU et linjecteur DFU interne sont portables. Sur macOS, installez les
dépendances QEMU, configurez `arm-softmmu`, puis compilez :
```sh
./configure --target-list=arm-softmmu
ninja -C build qemu-system-arm
```
Placez ensuite le dump dans `firmware/s5l8950x-secure-rom.bin`, puis lancez :
```sh
./Run-iPhone5-macOS.sh
```
Pour charger liBSS extrait de lIPSW sans dépendre dun périphérique USB hôte :
```sh
DFU_IMAGE="$PWD/firmware/iBSS.n41.RELEASE.dfu" ./Run-iPhone5-macOS.sh
```
La façade UDE est propre à Windows. Faire apparaître le téléphone comme un vrai périphérique USB sur macOS demanderait une extension DriverKit signée ; ce nest donc pas un raccourci par rapport au chemin UDE déjà construit.