A robust, terminal-based monitoring tool for macOS that automatically disables the awdl0 (Apple Wireless Direct Link) interface when it activates. This helps mitigate WiFi jitter and lag spikes caused by AirDrop/AirPlay scanning.
Built with Go and Bubble Tea
- Real-time Monitoring: Automatically detects when
awdl0comes UP and disables it. - Visual Dashboard:
- Activity Graph: A live histogram showing disable events over the last hour.
- Status Indicators: Clear visual feedback for Active/Paused states.
- Interactive Controls:
- Pause/Resume: Toggle monitoring without exiting the app.
- Dynamic Config: Adjust the polling interval on the fly.
- Comprehensive Logging:
- UI Logs: Scrollable history of recent events.
- Disk Logs: Persistent daily logs stored in
~/.awdl0-disabler/logs/YYYY-MM-DD.log.
- Safety: Automatically restores
awdl0when you quit the application.
-
Download the Binary:
- Go to the Latest Release Page.
- Download the correct binary for your Mac:
awdl-mon-arm64: For Apple Silicon Macs (M1, M2, M3, etc.).awdl-mon-amd64: For Intel-based Macs.
-
Open Terminal:
- You can find the Terminal app in
Applications > Utilities.
- You can find the Terminal app in
-
Make it Executable:
- Navigate to your Downloads folder (or wherever you saved the file):
cd ~/Downloads
- Give the file execute permissions. For the
arm64version, use:
chmod +x awdl-mon-arm64
(Use
awdl-mon-amd64if you downloaded the Intel version). -
Run the Application:
- Since the tool modifies network interfaces, it needs root privileges. Run it with
sudo:
sudo ./awdl-mon-arm64
- You will be prompted to enter your macOS user password.
- Since the tool modifies network interfaces, it needs root privileges. Run it with
-
Dealing with macOS Gatekeeper:
- The first time you run it, macOS might block the application because it's from an unidentified developer.
- If that happens, go to
System Settings > Privacy & Security, scroll down, and you will see a message aboutawdl-mon-arm64being blocked. Click the "Allow Anyway" or "Open Anyway" button. - You may need to re-run the
sudocommand in the terminal after allowing it.
- macOS
- Go 1.25+ (to build from source)
go build -o build/awdl-mon cmd/awdl-mon/main.goSince this tool modifies network interfaces, it requires root privileges:
sudo ./build/awdl-mon| Key | Action |
|---|---|
| Space | Pause / Resume monitoring |
| L | Toggle Log View / Dashboard |
| E | Manual Enable or Disable awdl0 |
| [ | Decrease Polling Interval (Faster) |
| ] | Increase Polling Interval (Slower) |
| Q / Ctrl+C | Quit (Restores awdl0) |
Disabling the awdl0 (Apple Wireless Direct Link) interface is a common technique to reduce WiFi jitter and lag spikes on macOS. However, since it is a core Apple technology, disabling it will impact several features:
- AirDrop: You will not be able to send or receive files via AirDrop.
- AirPlay: Screen mirroring or streaming to Apple TV/HomePod may fail or be less stable.
- Sidecar: Wireless connection to an iPad as a second display will not work.
- Continuity & Universal Control: Features like Handoff, Universal Clipboard, and shared input (mouse/keyboard) will be interrupted.
- Apple Watch Unlock: Automatic unlocking of your Mac via Apple Watch will be disabled.
- Find My: The Mac's ability to participate in the offline Find My network may be limited.
The primary benefit is WiFi Stability. macOS periodically scans for AWDL devices, which causes brief but significant latency spikes (ping jumps) and jitter. This tool automates the process of keeping awdl0 down during sensitive activities like online gaming or video conferencing.
Note: The application automatically restores the awdl0 interface when you quit, ensuring these features return to normal immediately.
This project follows Domain-Driven Design (DDD) and Hexagonal Architecture (Ports & Adapters) principles.
.
├── cmd/ # Application Entry Point
├── internal/
│ ├── core/ # The Hexagon (Pure Business Logic)
│ │ ├── domain/ # Entities (Event, Config)
│ │ ├── ports/ # Interfaces (Network, Logger)
│ │ └── services/ # Application Logic (Monitor, Stats)
│ └── adapters/ # Implementation Details
│ ├── network/ # Shell commands (ifconfig)
│ ├── filesystem/ # Disk I/O
│ └── ui/ # Bubble Tea (TUI)
The core logic is covered by unit tests.
go test ./...