feat(tahoe): port QualcommWireless & QualcommWifi to macOS Tahoe 26.x (Darwin 25)

Breakthroughs & Reverse Engineering (macOS Tahoe 26.7.1 / Darwin 25.6.0):
- Reconstructed the complete 463-slot Skywalk vtable and class layout (0x128 / 296 bytes) of IO80211Controller (__ZTV17IO80211Controller at 0xffffff8002461148) and AppleBCMWLANCore from BootKernelExtensions.kc (IO80211Family 1200.13.1, source 1566.5).
- Verified IOUSBHostDevice::deviceRequest vtable slot in Tahoe's BootKernelExtensions.kc (__ZTV15IOUSBHostDevice at 0xffffff8002e72720): confirmed exact match at slot 374 (0x176, byte offset 0xbb0).
- Disassembled Tahoe's /usr/sbin/bluetoothd (FindTransportType at 0x10014c700, Found_USB_Dongle at 0x1000e9559, GetProductAndVendorID at 0x1000edf2a) confirming USB transport matching on 'Bluetooth USB Host Controller' and CSR 0x0a12 descriptor spoofing.

Code & Build Modifications (v1.1.0):
- IO80211Controller.h: Add full 463-slot Tahoe Skywalk vtable declaration (slots 394..462, offsets 0xc50..0xe70) and exact 0x80 filler size when __IO80211_TARGET >= 260000 while preserving legacy compatibility.
- QualcommWifi.hpp/.cpp: Implement Tahoe IO80211Controller pure virtual methods (isCommandProhibited, handleCardSpecific, getDRIVER_VERSION, getHARDWARE_VERSION, getCARD_CAPABILITIES, getPOWER, setPOWER, getCOUNTRY_CODE, setCOUNTRY_CODE, setGET_DEBUG_INFO, getLogger, getFaultReporterFromDriver) and guard un-reserved IONetworkController slots 6..7 on SDK 26.5.
- QualcommWireless.cpp: Add non-null vtable slot sanity check prior to installing the shadow vtable hook on IOUSBHostDevice::deviceRequest.
- project.pbxproj & Info.plist: Upgrade to Xcode 26.6 (MacOSX26.5.sdk), MACOSX_DEPLOYMENT_TARGET = 26.0, __IO80211_TARGET = 260000, and bump version to 1.1.0.
- docs & README: Document macOS Tahoe (Darwin 25) architecture, bluetoothd offsets, and Skywalk IO80211Controller ABI.
This commit is contained in:
Erwan committed 2026-10-16 02:41:25 +02:00
1 parent 820154e54b
commit a10e097a7e
11 files changed
+262 -135

No files matched your search

+9 -8
View File
@@ -6,9 +6,9 @@ Ce guide détaille les étapes pour compiler le kext **QualcommWireless** à par
## 1. Prérequis Système
- **Système d'exploitation hôte** : macOS Sonoma (14.x) ou macOS Sequoia (15.x).
- **Environnement de développement** : Xcode 15+ ou 16+ avec les outils en ligne de commande (`xcode-select --install`).
- **SDK macOS** : macOS 15.x SDK (inclus dans Xcode).
- **Système d'exploitation hôte** : macOS Tahoe (26.x / Darwin 25), macOS Sequoia (15.x / Darwin 24) ou macOS Sonoma (14.x).
- **Environnement de développement** : Xcode 26+ (ex. Xcode 26.6) ou Xcode 16+ avec les outils en ligne de commande (`xcode-select --install`).
- **SDK macOS** : macOS 26.x SDK (ex. `MacOSX26.5.sdk`, inclus dans Xcode 26.6).
- **Architectures cibles** : Binaire universel `x86_64` (Hackintosh Intel/AMD) et `arm64e` (Apple Silicon).
---
@@ -27,12 +27,13 @@ QualcommWireless/
│ ├── amss.bin # Microprogramme principal Wi-Fi
│ ├── board-2.bin # Données de calibration radio RF
│ └── m3.bin # Microprogramme d'économie d'énergie M3
├── QualcommWireless/ # Code source du pilote C++ / IOKit
│ ├── Info.plist # Descripteur et personnalités IOKit
├── QualcommWifi/ # Code source du pilote Wi-Fi 7 natif (IO80211Controller)
│ ├── Firmware_WCN7850_Wifi.h/.cpp# Microprogrammes Wi-Fi intégrés
│ └── QualcommWifi.hpp/.cpp # Implémentation IO80211Controller (Tahoe Skywalk & Legacy)
├── QualcommWireless/ # Code source du pilote Bluetooth USB (IOService)
│ ├── Info.plist # Descripteur et personnalités IOKit (v1.1.0)
│ ├── Firmware_WCN7850.h # Header des microprogrammes BT intégrés
│ ├── Firmware_WCN7850_Wifi.h # Déclarations des microprogrammes Wi-Fi
│ ├── QualcommWifi.hpp/.cpp # Implémentation du pilote Wi-Fi natif
│ ├── QualcommWireless.hpp/.cpp # Implémentation de la partie Bluetooth USB
│ ├── QualcommWireless.hpp/.cpp # Implémentation DFU Bluetooth & Shadow VTable
│ └── include/ # Headers internes IOKit & 802.11
└── QualcommWireless.xcodeproj # Projet Xcode configuré pour build KEXT
```