Breakthroughs & Rétro-ingénierie : - Diagnostic de la boucle de redémarrage (boot loop / reset instantané sur logo Apple) : 1. Incompatibilité vtable IO80211Controller : le désassemblage du BootKernelExtensions.kc de macOS Tahoe 26.x a mis en évidence un appel virtuel slot 107 (attachToParent) et slot 35 sur le FaultReporter retourné. Nos en-têtes reconstitués présentaient un décalage de slots virtuels menant à un saut sur pointeur nul (0x0) en Ring 0, déclenchant un triple fault CPU. 2. Blocage synchrone du thread IOKit de démarrage : le transfert BHI de 6 Mo et les boucles IODelay (>15-20s) dans start() faisaient déclencher le watchdog boot du kernel macOS ou le MCE PCIe/IOMMU AMD Ryzen. 3. Saturation du segment __TEXT exécutable : les 8.4 Mo de firmware assemblés en code exécutable violaient les quotas mémoire de pré-démarrage du kernel boot.efi. - Solution architecturale : adoption de IOEthernetController (com.apple.iokit.IONetworkingFamily), approche éprouvée (similaire à itlwm) avec ABI publique pérenne (31 méthodes virtuelles stables), éliminant entièrement les classes instables privées IO80211WorkQueue et CCFaultReporter. - Déplacement des blobs firmware vers la section __DATA,__const, réduisant le segment exécutable __TEXT de 8.8 Mo à seulement 16 Ko. - start() ultraléger (< 2 ms) déportant le chargement BHI/MHI vers la méthode enable() appelée de façon asynchrone par la pile réseau de macOS. Modifications apportées : - QualcommWifi/Firmware_WCN7850_Wifi.s : relocalisation des sections d'assemblage en __DATA,__const au lieu de __TEXT,__const. - QualcommWifi/QualcommWifi.hpp : héritage direct depuis IOEthernetController, suppression des dépendances et stubs IO80211, déclarations des méthodes getHardwareAddress, enable, disable, outputPacket. - QualcommWifi/QualcommWifi.cpp : refonte complète en sous-classe IOEthernetController, start() sans blocage pour initialisation immédiate des BAR/IDs et publication de l'interface réseau, BHI firmware différé à enable(). - QualcommWifi/Info.plist : suppression de la dépendance com.apple.iokit.IO80211Family, conservation de IONetworkingFamily et IOPCIFamily, OSBundleRequired fixé à Root. - build_wifi.sh : alignement de la cible de compilation sur macos26.5 et résolution des chemins SDK. Validation : - Compilation sans aucun avertissement ni erreur via Clang/Clang++ 26. - Validation des symboles et dépendances réussie à 100% avec kmutil libraries contre BootKernelExtensions.kc. - Déploiement de QualcommWifi.kext dans /Volumes/EFI/EFI/OC/Kexts/. - Réactivation validée dans config.plist (Kernel.Add.14.Enabled = True). - QualcommWireless.kext (Bluetooth) préservé intact et 100% opérationnel.
58 lines
1.6 KiB
Plaintext
58 lines
1.6 KiB
Plaintext
<?xml version="1.0" encoding="UTF-8"?>
|
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
<plist version="1.0">
|
|
<dict>
|
|
<key>CFBundleDevelopmentRegion</key>
|
|
<string>en</string>
|
|
<key>CFBundleExecutable</key>
|
|
<string>QualcommWifi</string>
|
|
<key>CFBundleIdentifier</key>
|
|
<string>com.nawrhehe.QualcommWifi</string>
|
|
<key>CFBundleInfoDictionaryVersion</key>
|
|
<string>6.0</string>
|
|
<key>CFBundleName</key>
|
|
<string>QualcommWifi</string>
|
|
<key>CFBundlePackageType</key>
|
|
<string>KEXT</string>
|
|
<key>CFBundleShortVersionString</key>
|
|
<string>1.1.0</string>
|
|
<key>CFBundleVersion</key>
|
|
<string>1.1.0</string>
|
|
<key>IOKitPersonalities</key>
|
|
<dict>
|
|
<key>QualcommWifi_PCIe</key>
|
|
<dict>
|
|
<key>CFBundleIdentifier</key>
|
|
<string>com.nawrhehe.QualcommWifi</string>
|
|
<key>IOClass</key>
|
|
<string>QualcommWifi</string>
|
|
<key>IOMatchCategory</key>
|
|
<string>IODefaultMatchCategory</string>
|
|
<key>IOPCIPrimaryMatch</key>
|
|
<string>0x110717cb</string>
|
|
<key>IOProbeScore</key>
|
|
<integer>20000</integer>
|
|
<key>IOProviderClass</key>
|
|
<string>IOPCIDevice</string>
|
|
</dict>
|
|
</dict>
|
|
<key>OSBundleLibraries</key>
|
|
<dict>
|
|
<key>com.apple.iokit.IONetworkingFamily</key>
|
|
<string>3.2</string>
|
|
<key>com.apple.iokit.IOPCIFamily</key>
|
|
<string>2.9</string>
|
|
<key>com.apple.kpi.bsd</key>
|
|
<string>15.0</string>
|
|
<key>com.apple.kpi.iokit</key>
|
|
<string>15.0</string>
|
|
<key>com.apple.kpi.libkern</key>
|
|
<string>15.0</string>
|
|
<key>com.apple.kpi.mach</key>
|
|
<string>15.0</string>
|
|
</dict>
|
|
<key>OSBundleRequired</key>
|
|
<string>Root</string>
|
|
</dict>
|
|
</plist>
|