premier push

This commit is contained in:
nawrhehe committed 2026-10-15 18:07:10 +02:00
commit b03b6c8197
405 files changed
+152754

No files matched your search

+105
View File
@@ -0,0 +1,105 @@
# Architecture de QualcommWireless
Ce document détaille l'architecture logicielle et matérielle du pilote unifié **QualcommWireless** pour les puces combinées **Qualcomm FastConnect 7800** (SoC WCN7850) sous macOS Sequoia (15.x) et versions ultérieures.
---
## 1. Vue d'Ensemble du Matériel WCN7850
Le module sans fil Qualcomm FastConnect 7800 (WCN7850) utilise une architecture à double bus physique :
```mermaid
graph TD
subgraph Host["Système Hôte (macOS Sequoia - Darwin 24)"]
subgraph Kernel["Kernel Space (XNU / IOKit)"]
IO80211["com.apple.iokit.IO80211Family\n(IO80211Controller)"]
IOUSB["com.apple.iokit.IOUSBHostFamily\n(IOUSBHostDevice / Interface)"]
QWifi["QualcommWifi.kext\n(Driver Wi-Fi 7 Natif)"]
QBt["QualcommWireless.kext\n(Initialisation & Firmware BT)"]
end
subgraph Userland["Espace Utilisateur"]
AirportD["airportd / CoreWLAN / Control Center"]
BtD["bluetoothd / IOBluetoothFamily daemon"]
end
end
subgraph Hardware["Qualcomm FastConnect 7800 (WCN7850)"]
subgraph PCIeBus["Bus PCIe Gen3 x1 (VID 0x17cb, PID 0x1107)"]
BAR0["MMIO BAR0 (512 Ko)"]
Windowing["Registre Fenêtrage (0x310c)"]
BHI["Boot Host Interface (BHI/BHIe)"]
MHI["Modem Host Interface (MHI v1.0)"]
AMSS["Firmware Wi-Fi 7 (AMSS)"]
end
subgraph USBBus["Bus USB 2.0 (VID 0x0489, PID 0xe10d)"]
EP0["Contrôle EP0 (Requêtes Vendeur QCA)"]
EP2["Bulk OUT EP2 (DFU Firmware Upload)"]
EP1["Interrupt IN EP1 (Événements HCI)"]
ROM["ROM Qualcomm & Patch RAM"]
end
end
AirportD -->|Apple80211 IOCTL / Skywalk| IO80211
IO80211 --> QWifi
QWifi -->|BAR0 Windowing / MHI / Ring DMA| BAR0
BAR0 --> Windowing
Windowing --> BHI
BHI --> AMSS
BtD -->|UserClient / HCI Packets| IOUSB
IOUSB --> QBt
QBt -->|DFU Rampatch & NVM| EP2
QBt -->|HCI Reset| EP0
```
### Caractéristiques Physiques
1. **Partie Wi-Fi (PCIe)** :
- Identifiant : `0x17cb:0x1107`
- Protocole : 802.11a/b/g/n/ac/ax/be (Wi-Fi 7)
- Bandes de fréquence : 2.4 GHz, 5 GHz, 6 GHz
- Largeur de canal maximale : 320 MHz, modulation 4096-QAM
- Débit théorique : jusqu'à 5.8 Gbps
- Bus d'interface : PCI Express Gen3 x1
2. **Partie Bluetooth (USB)** :
- Identifiant : `0x0489:0xe10d` (Foxconn / Hon Hai WCN7850 HCI)
- Spécification : Bluetooth 5.4, LE Audio, Auracast
- Bus d'interface : USB 2.0 haute fidélité (connecté en interne sur port USB de la carte mère)
---
## 2. Découpage du Pilote Kernel
Le pilote est structuré en deux classes IOKit distinctes et complémentaires au sein du bundle :
### 2.1. `QualcommWifi` (`IO80211Controller`)
- **Rôle** : Pilote Wi-Fi natif.
- **Classe parente** : `IO80211Controller` (de `com.apple.iokit.IO80211Family`).
- **Fournisseur (Provider)** : `IOPCIDevice` (`pci17cb,1107`).
- **Gestion MMIO & Fenêtrage** :
- La mémoire de configuration et de contrôle du WCN7850 s'étend sur plusieurs mégaoctets de registres internes, mais le BAR0 PCIe n'expose qu'une fenêtre de 512 Ko.
- Le pilote implémente le fenêtrage dynamique Qualcomm via le registre `0x310c` (`ATH12K_PCI_WINDOW_REG_ADDRESS`). Pour toute adresse au-delà de 512 Ko, l'offset de fenêtre est programmé à la volée.
- **Cycle de vie du Firmware MHI / BHI** :
1. Reset global du SoC (`0x3008`).
2. Lecture de la révision matérielle TCSR (`0x1B00000`).
3. Allocation des descripteurs DMA 36-bit alignés sur 4 Ko (`ATH12K_DMA_MASK_36BIT_PAGE`).
4. Initialisation du Boot Host Interface (BHI).
5. Chargement en mémoire des firmwares `amss.bin`, `m3.bin`, et `board-2.bin`.
6. Transition de l'environnement d'exécution (Execution Environment) de `PBL` (Primary Boot Loader) vers `AMSS`.
7. Établissement des anneaux de commande, d'événements et de données MHI (M0 State).
- **Intégration macOS 802.11** :
- Traitement natif des commandes IOCTL `APPLE80211_IOC_*` (SSID, scan passif/actif, BSSID list, RSSI, canal, association).
- Fourniture d'une véritable interface sans fil reconnue par le Centre de Contrôle et `airportd`.
### 2.2. `QualcommWireless` (`IOService`)
- **Rôle** : Initialisation du contrôleur Bluetooth USB et téléversement du Rampatch & NVM.
- **Classe parente** : `IOService`.
- **Fournisseur (Provider)** : `IOUSBHostDevice` (`0x0489:0xe10d`).
- **Protocole de démarrage** :
1. Interrogation de la version matérielle (`QCA_GET_TARGET_VERSION`).
2. Vérification de l'état du microprogramme (`QCA_CHECK_STATUS`).
3. Téléversement du RAMPATCH binaire (`rampatch_usb_00190200_bin`) via le pipe Bulk OUT (EP2) avec header DFU de 40 octets.
4. Téléversement de la configuration NVRAM (`nvm_usb_00190200_bin`) avec header DFU de 4 octets.
5. Envoi d'un `HCI_Reset` (`0x03, 0x0c, 0x00`) via requête de contrôle USB.
6. Injection des métadonnées `IORegistry` (`USB Product Name`, `kUSBHostPortType=255`, spoofing `idVendor=0x0a12`).
7. Fermeture propre des pipes et libération de l'accès exclusif afin que le daemon `bluetoothd` prenne la main sans conflit.
+106
View File
@@ -0,0 +1,106 @@
# Diagnostic & Architecture Bluetooth (Qualcomm WCN7850)
Ce document décrit en profondeur le fonctionnement du sous-système Bluetooth de la puce **Qualcomm FastConnect 7800 (WCN7850)**, l'analyse détaillée du crash au démarrage de session macOS, et la solution définitive.
---
## 1. Description du Contrôleur Bluetooth
- **Identifiants matériels** :
- Vendeur : `0x0489` (Foxconn / Hon Hai)
- Produit : `0xe10d`
- Nom du chipset : Qualcomm WCN7850 Bluetooth 5.4 HCI
- Bus : USB 2.0 (Interface 0 : Contrôle/Bulk HCI, Interface 1 : SCO Audio)
- **Rôle dans macOS** :
- Fournit la couche transport HCI (Host Controller Interface) au daemon système `bluetoothd`.
- Gère les périphériques HID (claviers, souris, Magic Trackpad), les casques audio A2DP/HFP, et les fonctionnalités Continuity / AirDrop si la carte Wi-Fi est associée.
---
## 2. Analyse Post-Mortem du Kernel Panic au Login
### 2.1. Symptômes observés
- Au démarrage, l'écran de verrouillage macOS s'affiche correctement.
- Dès que le mot de passe utilisateur est validé et que la session commence à charger, l'écran se fige complètement puis la machine redémarre (Kernel Panic).
### 2.2. Traces du Kernel Panic (`Kernel-2026-10-15-174229.panic`)
```text
panic(cpu 0 caller 0xffffff800ec4b86d): A kext releasing a(n) IOBluetoothL2CAPChannel has corrupted the registry. @OSObject.cpp:224
Panicked task 0xffffff8b71de3980: 235 threads: pid 0: kernel_task
Backtrace (CPU 0), panicked thread: 0xffffff903e00ab30, Frame : Return Address
0xfffffff2a9823bd0 : 0xffffff800edd07bd mach_kernel : _panic + 0x81
0xfffffff2a9823cc0 : 0xffffff800ec4b86d mach_kernel : __ZNK8OSObject13taggedReleaseEPKvi + 0x8d
0xfffffff2a9823cd0 : 0xffffff8010694464 com.apple.iokit.IOBluetoothFamily : __ZN17IOBluetoothDevice13removeChannelEP23IOBluetoothL2CAPChannel + 0xae
0xfffffff2a9823d70 : 0xffffff8010697629 com.apple.iokit.IOBluetoothFamily : __ZN23IOBluetoothL2CAPChannel6stopWLEv + 0x65
0xfffffff2a9823df0 : 0xffffff8010697583 com.apple.iokit.IOBluetoothFamily : __ZN23IOBluetoothL2CAPChannel4stopEP9IOService + 0x33
0xfffffff2a9823e90 : 0xffffff800ecc7dd6 mach_kernel : __ZN9IOService15terminateWorkerEj + 0x8b6
Kernel Extensions in backtrace:
com.apple.iokit.IOBluetoothFamily(9.0)
```
### 2.3. Cause Racine (Root Cause)
1. **L'Intrusion de `IntelBTPatcher.kext`** :
- Le kext tiers `IntelBTPatcher.kext` (conçu spécifiquement pour les puces Intel AX200/AX210) était resté activé (`Enabled: true`) dans le fichier `config.plist` d'OpenCore.
- `IntelBTPatcher` intercepte et patche globalement les méthodes virtuelles de `IOBluetoothFamily` dans le noyau pour contourner des anomalies de paquets HCI propres à Intel.
2. **Incompatibilité avec Darwin 24 (macOS 15 Sequoia)** :
- Sous macOS 15 Sequoia, Apple a profondément remanié la gestion mémoire d'IOKit, notamment la validation des `taggedRelease` dans `OSObject.cpp:224`.
- `IntelBTPatcher v2.5.0` (compilé pour Monterey/Ventura/Sonoma) n'est pas compatible avec cette sémantique et effectue une libération désynchronisée (double release ou tag invalide) lors de la fermeture d'un canal L2CAP.
3. **Le déclencheur au Login** :
- Dès la validation du mot de passe de session, `loginwindow` démarre `bluetoothd`.
- Les périphériques Apple couplés (notamment la **Magic Mouse 2** `78:CA:39:F4:15:5A` et le **Magic Keyboard** `78:CA:39:4C:A3:9A`) établissent ou réinitialisent leurs canaux L2CAP (`HID ACL`).
- Lors de la libération ou du renouvellement du canal L2CAP (`IOBluetoothDevice::removeChannel`), le hook corrompu d'IntelBTPatcher déclenche immédiatement l'assertion de corruption de registre du noyau (`OSObject::taggedRelease`), provoquant le kernel panic instantané.
---
## 3. Solution et Bonnes Pratiques
### 3.1. Désactivation définitive d'`IntelBTPatcher`
Pour les cartes **Qualcomm FastConnect 7800**, `IntelBTPatcher` ne doit **JAMAIS** être utilisé :
- Dans `/Volumes/EFI/EFI/OC/config.plist` :
```xml
<dict>
<key>BundlePath</key>
<string>IntelBTPatcher.kext</string>
<key>Enabled</key>
<false/>
</dict>
```
- Suppression physique du bundle `IntelBTPatcher.kext` du dossier `EFI/OC/Kexts/`.
### 3.2. Rôle de `BlueToolFixup.kext`
- `BlueToolFixup.kext` (de la suite BrcmPatchRAM / Acidanthera) est, quant à lui, **requis et compatible**.
- Il patche dynamiquement `bluetoothd` en espace utilisateur pour accepter les dongles tiers non-Apple et débloquer les commandes de bas niveau (HCI Vendor Commands).
- Arguments de démarrage recommandés dans `boot-args` :
`-btlfxallowanyaddr -btlfxnvramcheck`
---
## 4. Séquence de Chargement du Firmware USB
Le firmware Bluetooth Qualcomm nécessite deux étages binaires téléversés au démarrage :
```mermaid
sequenceDiagram
autonumber
participant K as QualcommWireless (Kext)
participant USB as Contrôleur USB WCN7850
participant D as bluetoothd (macOS)
K->>USB: QCA_GET_TARGET_VERSION (Requête de contrôle vendeur)
USB-->>K: Versions ROM / Patch / RAM
K->>USB: QCA_CHECK_STATUS (Vérification statut)
USB-->>K: Status 0x00 (RAMPATCH et Syscfg requis)
K->>USB: EP0: Header DFU (40 octets)
K->>USB: EP2 (Bulk OUT): RAMPATCH WCN7850 (paquets de 4096 octets)
K->>USB: EP0: Header DFU (4 octets)
K->>USB: EP2 (Bulk OUT): NVM WCN7850 (paquets de 4096 octets)
K->>USB: HCI Reset (0x03, 0x0C, 0x00)
USB-->>K: HCI Command Complete Event
K->>K: Injection des propriétés IORegistry (spoofing CSR 0x0a12)
K->>K: Libération de l'interface USB (close)
Note over D,USB: bluetoothd prend la main en exclusivité
D->>USB: Établissement transport HCI USB
D->>USB: Connexion Magic Mouse 2 / Clavier (L2CAP)
```
Grâce à cette séquence, le contrôleur Bluetooth WCN7850 opère de manière parfaitement stable sous macOS Sequoia sans aucun crash au démarrage de session.
+134
View File
@@ -0,0 +1,134 @@
# Compilation et Déploiement de QualcommWireless
Ce guide détaille les étapes pour compiler le kext **QualcommWireless** à partir des sources et l'intégrer proprement dans l'EFI OpenCore.
---
## 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).
- **Architectures cibles** : Binaire universel `x86_64` (Hackintosh Intel/AMD) et `arm64e` (Apple Silicon).
---
## 2. Arborescence du Projet
```text
QualcommWireless/
├── .gitignore # Filtres pour conserver un dépôt git propre
├── docs/ # Documentation technique détaillée
│ ├── ARCHITECTURE.md # Vue d'ensemble matérielle & logicielle
│ ├── BLUETOOTH.md # Analyse Bluetooth, diagnostic crash & fix
│ ├── NATIVE_WIFI.md # Pile Wi-Fi native (IO80211Controller)
│ └── BUILD.md # Ce guide de compilation et d'installation
├── firmware/ # Binaires de microprogrammes WCN7850
│ ├── 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
│ ├── 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
│ └── include/ # Headers internes IOKit & 802.11
└── QualcommWireless.xcodeproj # Projet Xcode configuré pour build KEXT
```
---
## 3. Compilation
### 3.1. En Ligne de Commande (Recommandé)
Depuis la racine du projet :
```bash
xcodebuild -project QualcommWireless.xcodeproj -configuration Release
```
Le bundle kext final est généré dans :
`build/Release/QualcommWireless.kext`
### 3.2. Vérification du Binaire
Pour s'assurer que le kext est bien un binaire universel prêt pour le chargement noyau :
```bash
file build/Release/QualcommWireless.kext/Contents/MacOS/QualcommWireless
```
Sortie attendue :
```text
Mach-O universal binary with 2 architectures: [x86_64:Mach-O 64-bit kext bundle x86_64] [arm64e]
```
---
## 4. Déploiement dans OpenCore
### 4.1. Copie du Kext dans l'EFI
Montez votre partition EFI (ex. `/Volumes/EFI`), puis copiez le kext compilé :
```bash
cp -R build/Release/QualcommWireless.kext /Volumes/EFI/EFI/OC/Kexts/
```
### 4.2. Configuration dans `config.plist`
Dans la section `Kernel -> Add` de votre `config.plist` :
```xml
<dict>
<key>Arch</key>
<string>Any</string>
<key>BundlePath</key>
<string>QualcommWireless.kext</string>
<key>Comment</key>
<string>Qualcomm FastConnect 7800 Wi-Fi & Bluetooth</string>
<key>Enabled</key>
<true/>
<key>ExecutablePath</key>
<string>Contents/MacOS/QualcommWireless</string>
<key>MaxKernel</key>
<string></string>
<key>MinKernel</key>
<string></string>
<key>PlistPath</key>
<string>Contents/Info.plist</string>
</dict>
```
> [!CAUTION]
> **RÈGLE CRITIQUE POUR ÉVITER LES CRASHS :**
> - **DÉSACTIVEZ ET SUPPRIMEZ `IntelBTPatcher.kext`**. Il est conçu uniquement pour les puces Intel et provoque un Kernel Panic immédiat à la connexion des périphériques Bluetooth sous macOS 15 Sequoia (`IOBluetoothL2CAPChannel` taggedRelease registry corruption).
> - **CONSERVEZ `BlueToolFixup.kext`**, qui est indispensable pour activer la gestion des dongles tiers dans `bluetoothd`.
### 4.3. Arguments de Démarrage (`NVRAM -> boot-args`)
Vérifiez la présence des arguments suivants pour assurer la compatibilité Bluetooth :
```text
-btlfxallowanyaddr -btlfxnvramcheck
```
---
## 5. Diagnostic et Commandes Utiles
Pour vérifier l'état du système après un redémarrage :
- **Vérifier l'état du Bluetooth** :
```bash
system_profiler SPBluetoothDataType
```
- **Vérifier la détection USB du contrôleur** :
```bash
ioreg -l -r -n "IOUSBHostDevice@00a10000"
```
- **Consulter les journaux Bluetooth en temps réel** :
```bash
/usr/bin/log stream --predicate 'process == "bluetoothd"'
```
- **Vérifier les extensions noyau chargées** :
```bash
kmutil showloaded | grep -iE 'qualcomm|blue'
```
+116
View File
@@ -0,0 +1,116 @@
# Pile Wi-Fi Native macOS pour Qualcomm WCN7850
Ce document détaille l'implémentation de la pile Wi-Fi **native** (`IO80211Controller`) pour le chipset **Qualcomm FastConnect 7800 (WCN7850)** sous macOS Sequoia (Darwin 24).
---
## 1. Pourquoi le Wi-Fi Natif et non l'Émulation Ethernet ?
Dans les premières ébauches de pilotes non officiels pour macOS, certains projets choisissaient d'émuler une interface réseau filaire standard (`IOEthernetController`), en masquant les détails Wi-Fi dans un daemon externe (comme `HeliPort`).
Cependant, cette approche présente des limitations rédhibitoires :
- ❌ Pas d'intégration dans le menu Wi-Fi natif du Centre de Contrôle macOS.
- ❌ Absence de géolocalisation par points d'accès Wi-Fi (CoreLocation).
- ❌ Incompatibilité totale avec les services Apple (AirDrop, AirPlay, Continuité, Universal Control).
- ❌ Impossibilité pour les applications utilisant `CoreWLAN.framework` de découvrir les réseaux, obtenir le RSSI, ou basculer de canal.
**QualcommWireless fait le choix d'une intégration 100% native** en dérivant directement de `IO80211Controller` (de `com.apple.iokit.IO80211Family`).
---
## 2. Architecture de `QualcommWifi` (`IO80211Controller`)
```mermaid
graph TD
subgraph AppleStack["Sous-Système Sans Fil Apple"]
CC["Centre de Contrôle macOS"]
CoreWLAN["CoreWLAN.framework"]
AirportD["airportd (Daemon Système)"]
Skywalk["Skywalk Family (Packet Pipeline)"]
IO80211["IO80211Family (IO80211Controller / IO80211Interface)"]
end
subgraph Driver["QualcommWifi (Driver Kernel)"]
IoctlHandler["Gestionnaire IOCTL Apple80211 (apple80211_ioctl)"]
ScanEngine["Moteur de Scan (Passif / Actif / Multicanal)"]
RingDMA["Gestionnaire DMA & Anneaux MHI (CR / ER / TR)"]
FirmwarePipeline["Pipeline de Démarrage BHI / AMSS"]
Windowing["Module Fenêtrage PCIe BAR0 (0x310c)"]
end
subgraph Hardware["Qualcomm WCN7850 (PCIe 0x17cb:0x1107)"]
PBL["Primary Boot Loader (PBL)"]
MHIHardware["MHI Engine (Modem Host Interface)"]
WlanFirmware["Firmware AMSS Wi-Fi 7 (ath12k/WCN7850)"]
MacPhy["MAC / Baseband PHY (802.11a/b/g/n/ac/ax/be)"]
end
CC --> AirportD
CoreWLAN --> AirportD
AirportD -->|apple80211_ioctl| IO80211
Skywalk --> IO80211
IO80211 --> IoctlHandler
IoctlHandler --> ScanEngine
ScanEngine --> RingDMA
RingDMA --> Windowing
FirmwarePipeline --> Windowing
Windowing --> PBL
PBL --> MHIHardware
MHIHardware --> WlanFirmware
WlanFirmware --> MacPhy
```
---
## 3. Communication Matérielle : MHI & Fenêtrage PCIe
### 3.1. Gestion du Fenêtrage PCIe BAR0
Le bus PCIe expose un espace MMIO BAR0 de 512 Ko. Or, les composants internes du WCN7850 (SoC, registres MHI, BHI, mémoires partagées) s'étendent sur plusieurs mégaoctets :
- **Registre de sélection de fenêtre** : `0x310c` (`ATH12K_PCI_WINDOW_REG_ADDRESS`).
- **Calcul de la fenêtre** : Pour une adresse matérielle $A \ge 512\text{ Ko}$, le numéro de fenêtre est calculé par :
$$\text{window} = (A \gg 19) \ \& \ 0x3F$$
$$\text{offset} = 0x80000 \ | \ (A \ \& \ 0x7FFFF)$$
- Le pilote met à jour dynamiquement `fCurrWindow` avant d'effectuer les écritures/lectures MMIO nécessaires.
### 3.2. Séquence de Boot MHI (Modem Host Interface)
1. **Reset initial** via `ATH12K_PCI_SOC_GLOBAL_RESET` (`0x3008`).
2. **Boot Host Interface (BHI/BHIe)** :
- Initialisation des vecteurs de transmission (`ATH12K_BHIE_TXVECADDR_LOW` / `_HIGH`).
- Transfert de l'image de firmware principale (`amss.bin`, taille ~6 Mo) et du fichier de calibration carte (`board-2.bin`, ~2.4 Mo).
- Validation de la signature et exécution dans le SoC WCN7850.
3. **Transition d'environnement MHI** :
- Transition de l'état `PBL` (Primary Boot Loader) vers `AMSS` (Advanced Mobile Subscriber Software).
- Configuration des anneaux MHI :
- *Command Ring* (CR) : Envoi des requêtes d'initialisation WMI.
- *Event Ring* (ER) : Réception asynchrone des événements et interruptions MSI-X.
- *Transfer Rings* (TR) : Transmission et réception des paquets réseau 802.11.
---
## 4. Implémentation des IOCTLs Apple80211
Pour qu'un pilote soit reconnu par le sous-système Wi-Fi de macOS, il doit répondre aux requêtes de configuration `apple80211_ioctl` émises par `airportd` :
| Opération IOCTL | Rôle dans le système macOS |
| :--- | :--- |
| `APPLE80211_IOC_SSID` (GET / SET) | Lecture et définition du réseau Wi-Fi cible. |
| `APPLE80211_IOC_SCAN_REQ_MULTIPLE` | Déclenchement d'un scan Wi-Fi (recherche des réseaux environnants pour l'interface graphique). |
| `APPLE80211_IOC_SCAN_RESULT` | Remontée unitaire ou groupée des points d'accès découverts (SSID, BSSID, RSSI, Beacon, Type de sécurité WPA2/WPA3). |
| `APPLE80211_IOC_BSSID_LIST` | Fourniture de la liste des BSSIDs disponibles dans le cache. |
| `APPLE80211_IOC_CHANNEL` (GET / SET) | Lecture et bascule de canal (2.4 GHz, 5 GHz, 6 GHz). |
| `APPLE80211_IOC_CHANNEL_INFO` | Enumération des canaux supportés (canaux 1 à 14, bandes 5 GHz UNII-1 à UNII-4, et canaux 6 GHz UNII-5 à UNII-8 pour le Wi-Fi 6E/7). |
| `APPLE80211_IOC_PHY_MODE` | Déclaration des modes PHY supportés (`APPLE80211_MODE_11BE`, `11AX`, `11AC`, `11N`, `11G`, `11A`, `11B`). |
| `APPLE80211_IOC_STATE` | État de la machine à états de l'interface (`RUN`, `INIT`, `SCAN`, `AUTH`, `ASSOC`). |
| `APPLE80211_IOC_RSSI` | Niveau de signal courant (en dBm, typiquement entre -30 dBm et -95 dBm). |
| `APPLE80211_IOC_RATE` | Débit négocié courant (jusqu'aux débits Wi-Fi 7 EHT MCS 0-13). |
| `APPLE80211_IOC_TXPOWER` | Puissance d'émission radio déclarée. |
---
## 5. Prise en Charge du Wi-Fi 7 (802.11be)
La puce WCN7850 introduit les caractéristiques Wi-Fi 7 suivantes, intégrées dans la table des capacités du pilote :
- **Canaux 320 MHz ultra-larges** en bande 6 GHz.
- **Modulation 4096-QAM (4K-QAM)** augmentant la densité de données de 20% par rapport au 1024-QAM du Wi-Fi 6.
- **Multi-Link Operation (MLO)** : Capacité matérielle d'agréger ou de basculer dynamiquement entre plusieurs bandes (ex. 5 GHz + 6 GHz) pour une latence ultra-faible.
- **Preamble Puncturing** : Évitement automatique des sous-canaux brouillés pour maximiser la bande passante utilisable.