Native macOS DriverKit driver for AIC8800-based USB WiFi 6 adapters
No kext. No hacks. Pure DriverKit.
Apple Silicon + Intel • 2.4GHz + 5GHz • WPA2/WPA3
| Device | Chipset | USB ID | Status |
| HOCO HI34 | AIC8800 | A69C:8D81 |
✅ Tested |
| UGREEN AX900 | AIC8800D80 | A69C:8D83 |
✅ Supported |
| Tenda U11 | AIC8800D80 | 368B:8D8X |
✅ Supported |
| AIC8800D80 Clones | AIC8800D80 | A69C:8D80 |
✅ Supported |
|
|
|
|
⚠️ Development Status: This driver is a work-in-progress skeleton. The core architecture is in place but it has not been tested on real hardware and several components need completion.
- ✅ Project structure and DriverKit skeleton
- ✅ USB device matching definitions
- ✅ User client for app-to-driver communication
- ✅ Companion app UI
- ✅ HAL initialization framework
- ✅ 802.11 frame builders (probe request, auth, assoc, deauth)
- 🔄 Firmware loading sequence (needs real firmware files)
- 🔄 USB control transfer completion handling (async synchronization)
- 🔄 Mode switch from mass-storage mode (requires companion app or udev-like mechanism)
- 🔄 RX data path to macOS network stack
- 🔄 WPA2/WPA3 4-way handshake
- 🔄 Bluetooth support (AIC8800 has integrated BT)
git clone https://github.com/brkNx/AIC8800-macOS-WiFi-Driver.git
cd AIC8800-macOS-WiFi-Driver
chmod +x setup.sh
./setup.shopen AIC8800WiFi.xcodeproj- Select AIC8800WiFi target → Signing & Capabilities
- Select your Development Team
- Repeat for AIC8800WiFi_DEXT target
- Press ⌘R to build and run
- Click Install Driver in the app
- Approve in System Settings → Privacy & Security
- Plug in HOCO HI34
- Click Scan in the app
- Select network → Enter password
- Done! ✅
┌─────────────────────────────────────────────────────────────────┐
│ AIC8800 WiFi Driver │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────┐ ┌─────────────────────┐ │
│ │ AIC8800_App │ │ AIC8800_DEXT │ │
│ │ (SwiftUI App) │◄──►│ (DriverKit DEXT) │ │
│ │ │ │ │ │
│ │ • Status UI │ │ • USB Lifecycle │ │
│ │ • Device Detection │ │ • Register I/O │ │
│ │ • Install Driver │ │ • Firmware Upload │ │
│ │ • Scan Networks │ │ • MAC/PHY Init │ │
│ │ │ │ • 802.11 State │ │
│ └─────────────────────┘ └──────────┬──────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────┐ │
│ │ USB Hardware │ │
│ │ (AIC8800 Chip) │ │
│ └─────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ Stage 0 │ │ Stage 1 │ │ Stage 2 │
│ 1111:1111 │────►│ A69C:8D80 │────►│ A69C:8D81 │
│ Mass Storage│ │ Boot ROM │ │ WiFi + BT │
└──────────────┘ └──────────────┘ └──────────────┘
│ │ │
│ SCSI Command │ Firmware │ Ready
│ FD 00...00 F2 │ Upload │
▼ ▼ ▼
AIC8800-macOS-WiFi-Driver/
│
├── 📱 AIC8800_App/ # Companion App
│ ├── Sources/
│ │ ├── AppDelegate.swift # App lifecycle
│ │ ├── ContentView.swift # Main UI
│ │ └── StatusManager.swift # USB detection & driver mgmt
│ ├── Info.plist
│ └── AIC8800_App.entitlements
│
├── 🔧 AIC8800_DEXT/ # DriverKit Extension
│ ├── Headers/
│ │ └── AIC8800_Driver.h # Hardware definitions
│ ├── Sources/
│ │ ├── AIC8800_USB.cpp # USB lifecycle & matching
│ │ ├── AIC8800_HALInit.cpp # Power-on & calibration
│ │ ├── AIC8800_NetIf.cpp # Network interface
│ │ ├── AIC8800_UserClient.cpp # App-to-driver communication
│ │ ├── AIC8800_USB.iig # USB interface definition
│ │ ├── AIC8800_NetIf.iig # Network interface definition
│ │ └── AIC8800_UserClient.iig # User client interface
│ ├── Info.plist
│ └── AIC8800_DEXT.entitlements
│
├── 📦 Firmware/ # Firmware files (not included)
│ └── aic8800D80/
│
├── README.md
├── LICENSE
├── setup.sh
└── .gitignore
# 1. Build the project
xcodebuild -scheme AIC8800WiFi -configuration Debug build
# 2. Run the app
open ~/Library/Developer/Xcode/DerivedData/AIC8800WiFi-*/Build/Products/Debug/AIC8800WiFi.app
# 3. Click "Install Driver" in the app
# 4. Approve in System Settings → Privacy & Security# 1. Archive in Xcode
# Product → Archive → Distribute App → Developer ID
# 2. Notarize
xcrun notarytool submit AIC8800WiFi.zip --apple-id "your@email.com" --password "app-specific-password" --team-id "TEAMID"
# 3. Staple
xcrun stapler staple AIC8800WiFi.app# Check USB connection
system_profiler SPUSBDataType | grep -A 5 "AIC\|HOCO\|A69C"
# Check DEXT installation
systemextensionsctl list | grep aic8800
# Check system log
log show --predicate 'subsystem == "com.aic8800.wifi"' --last 5m# Check SIP status
csrutil status
# For development, disable DEXT restrictions
sudo csrutil disable --without kext --without dext
# Reboot after SIP changes
sudo reboot# Check if interface exists
ifconfig | grep en
# Check driver loaded
kextstat | grep aic8800
# Reset USB
sudo ifconfig en0 down && sudo ifconfig en0 upThe AIC8800 requires proprietary firmware files:
| File | Purpose |
|---|---|
fw_adid_8800d80_u02.bin |
Main firmware |
fw_patch_8800d80.bin |
Patch file |
⚠️ Note: Firmware files are proprietary and cannot be distributed. Contact the device manufacturer or check the Linux driver repository for firmware extraction methods.
| Address | Name | Description |
|---|---|---|
0x0000 |
SYS_CTRL |
System control |
0x0008 |
CHIP_ID |
Chip identifier |
0x0100 |
MAC_CTRL |
MAC control |
0x0200 |
PHY_CTRL |
PHY control |
0x0300 |
RF_TX_CTRL |
RF TX control |
0x0400 |
DMA_TX_CTRL |
DMA TX control |
0x0500 |
INT_STATUS |
Interrupt status |
| Request | Code | Direction | Description |
|---|---|---|---|
| READ_REG | 0x01 |
IN | Read 32-bit register |
| WRITE_REG | 0x02 |
OUT | Write 32-bit register |
| READ_MEM | 0x03 |
IN | Read memory block |
| WRITE_MEM | 0x04 |
OUT | Write memory block |
| FIRMWARE | 0x05 |
OUT | Upload firmware |
Contributions are welcome! Please follow these steps:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'feat: add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the GNU General Public License v2.0 - see the LICENSE file for details.
|
RTL8812AU Driver DriverKit WiFi reference |
AIC8800 Linux Driver Linux driver reference |
Apple DriverKit Official documentation |
Made with ❤️ for macOS
Star ⭐ this repo if you find it useful!