Wireless Interface Setup
Before performing wireless attacks, your adapter must support monitor mode and
packet injection. This page covers hardware selection, driver setup, VM passthrough,
and channel configuration — everything needed to reach a fully operational wlan0mon.
Working Setup
wlan0mon with monitor mode active and
packet injection working on both 2.4 GHz and 5 GHz bands. Verify it with aireplay-ng --test wlan0mon.
Recommended Hardware
Not all WiFi cards support monitor mode and injection — the chipset matters more than the brand. These are the best-tested options:
| Adapter | Chipset | Bands | Best For | Price |
|---|---|---|---|---|
| ALFA AWUS036ACH | RTL8812AU | 2.4 + 5 GHz | WPA2/WPA3, general purpose (recommended) | ~$35–50 |
| ALFA AWUS036NHA | AR9271 | 2.4 GHz | WPS attacks, Kali native support | ~$25–40 |
| ALFA AWUS1900 | RTL8814AU | 2.4 + 5 GHz | Long range, high-power engagements | ~$50–70 |
| TP-Link TL-WN722N v1 | AR9271 | 2.4 GHz | Budget option — v1 only | ~$15–25 |
| Panda PAU09 | RT5572 | 2.4 + 5 GHz | Evil twin (dual antenna, dual adapter) | ~$30–45 |
| Intel AX210 (M.2) | AX210 | 2.4 + 5 + 6 GHz | Wi-Fi 6E scanning (internal only; scan-only — no reliable injection) | ~$20–35 |
TP-Link WN722N Version Warning
lsusb to confirm the chipset.
ALFA AWUS036ACH
A Realtek RTL8812AU 802.11ac adapter with dual-band 2.4 + 5 GHz operation (AC1200), two detachable dipole omni 5 dBi antennas on RP-SMA, and USB-C 5 Gbps on the current revision (the older revision was USB 3.0 Type-A). It is popular for wireless security testing.
Do Not Confuse It With the AWUS036ACHM
Monitor mode and packet injection are not out-of-the-box on Linux — the RTL8812AU is not a mainline mac80211 chipset, so both depend entirely on which driver is loaded. The Windows vendor driver is client-only.
| Driver / source | Monitor mode | Injection | Notes |
|---|---|---|---|
| aircrack-ng/rtl8812au | Yes | Yes | Packaged by Kali as realtek-rtl88xxau-dkms; its README now marks it deprecated in favour of lwfinger/rtw88. |
| lwfinger/rtw88 | Yes | Reported unreliable | In-kernel / backport, kernel ≥5.4. |
| morrownr/8812au-20210820 | No | No | Neither monitor mode nor injection. |
Naming note: rtl8812au is the repo/product name, 88XXau is the out-of-tree
module name, and 8812au is morrownr's module name.
# Kali packages the aircrack-ng driver for this chipset
sudo apt install realtek-rtl88xxau-dkmsBring-Up and Injection Check
The ip/iw method from the aircrack-ng README:
airmon-ng check kill
sudo ip link set wlan0 down
sudo iw dev wlan0 set type monitor
sudo ip link set wlan0 up
sudo iw wlan0 set txpower fixed 3000
aireplay-ng -9 wlan0 # expect "Injection is working!"Driver Pitfalls
- • DKMS needs the kernel build tree at
/lib/modules/$(uname -r)/build. - • Under Secure Boot the module must be signed and the MOK enrolled.
- • A wrong gcc major version breaks the build.
- • NetworkManager must be killed before monitor mode.
- • Modern
airmon-ngmay enable monitor mode in place, sowlan0monmay not exist — checkiw dev.
MycoWave Driver Installer
MycoWave
is the recommended installer for this adapter — it auto-detects kernel, architecture and Secure Boot, then picks a driver
strategy: kernel ≥6.19 uses the in-kernel rtw88_8812au; 6.15–6.18 patched source;
6.14 in-kernel rtw88; 6.6–6.13 Kali DKMS; and <6.6 falls back to the lwfinger
backport. It also provides a mycowave-monitor-mode helper.
git clone https://github.com/MushroomCyber/MycoWave.git
cd MycoWave
chmod +x mycowave-install.sh
sudo ./mycowave-install.sh # add --dry-run to preview
sudo mycowave-monitor-mode
iw dev # confirm the real monitor iface (may be wlan0)
sudo ./mycowave-install.sh --testPrerequisites: Kali 2024.x–2026.1+ or another Debian-based distribution with kernel ≥6.6, root, internet access, the kernel build tree, and MOK enrollment under Secure Boot.
Dedicated Attack Hardware
The adapters above are general-purpose. For drop-and-leave work, wardriving, or a cheap dedicated kit, a class of single-purpose devices trades flexibility for a small battery-powered footprint. They complement the adapters — most still hand captured material to a host for cracking — and they change nothing about the authorisation rules for a target network.
Authorised Targets Only
ESP32 Marauder
WiFi FirmwareOpen-source ESP32 firmware that turns a low-cost devkit into a Wi-Fi and BLE offensive tool: deauthentication, beacon spam, packet sniffing, PMKID capture, and a captive portal.
ESP8266 Deauther
WiFi FirmwareSpacehuhn's firmware for the ESP8266 that provides 802.11 deauthentication and beacon-spam testing on very cheap boards; the project also documents detection and defence.
Pwnagotchi
Handshake CollectorA Raspberry Pi Zero running an AI-driven agent that passively collects WPA/WPA2 handshakes from nearby networks — a common low-cost platform for learning wireless capture and wardriving.
Two more pocket-sized devices are already catalogued on the Tools & Hardware page. The Flipper Zero adds sub-GHz, 125 kHz RFID, NFC, infrared, iButton, and Bluetooth/BLE radios to the same form factor; its Bluetooth/BLE and radio material is covered under Bluetooth & BLE and SDR & RF Hacking. The Hak5 WiFi Pineapple is the purpose-built rogue-AP and engagement platform, with its own hardware and web UI for reconnaissance, evil-twin, and MITM modules.
Driver Installation
Kali Linux includes most wireless drivers natively. For RTL8812AU/RTL8814AU-based adapters, install the Aircrack-ng patched driver for full injection support:
# Install build dependencies
sudo apt update && sudo apt install -y dkms bc build-essential linux-headers-$(uname -r)
# Check what adapter is connected
lsusb
# RTL8812AU (ALFA AWUS036ACH) — patched driver
git clone https://github.com/aircrack-ng/rtl8812au.git
cd rtl8812au && sudo make dkms_install
# RTL8814AU (ALFA AWUS1900) — patched driver
git clone https://github.com/aircrack-ng/rtl8814au.git
cd rtl8814au && sudo make dkms_install
# Verify the driver loaded
lsmod | grep 8812au
iw dev # should now show wlan0 or wlan1Enable Monitor Mode
# Kill processes that interfere with monitor mode
sudo airmon-ng check kill
# Enable monitor mode (creates wlan0mon)
sudo airmon-ng start wlan0
# Alternative manual method (more granular control)
sudo ip link set wlan0 down
sudo iw dev wlan0 set type monitor
sudo ip link set wlan0 up
# Verify monitor mode is active
iw dev wlan0mon info
# Look for: type monitor
# Change channel manually (iw replaces the deprecated iwconfig)
sudo iw dev wlan0mon set channel 6 # 2.4 GHz CH6
sudo iw dev wlan0mon set channel 36 # 5 GHz CH36
# Return to managed mode when done
sudo airmon-ng stop wlan0mon
sudo systemctl restart NetworkManager
Naming note: commands here use wlan0mon, the monitor interface that airmon-ng
creates. Some tools (for example hcxdumptool) instead take the physical interface
wlan0 and manage monitor mode themselves — always match the interface name to the tool.
Test Packet Injection
# Test injection capability (sends test frames, looks for AP responses)
sudo aireplay-ng --test wlan0mon
# Successful output includes:
# Trying broadcast probe requests...
# Injection is working!
# Found X APs
# If the test fails, specify a channel first
sudo iw dev wlan0mon set channel 6
sudo aireplay-ng --test wlan0mon
# Check available injection modes for your driver
iw phy phy0 info | grep -A 10 "Supported interface modes"Band & Channel Selection
2.4 GHz
- • Channels 1–14 (1, 6, 11 non-overlapping)
- • Longer range, better wall penetration
- • More congested — interference common
- • Legacy devices, IoT, home routers
5 GHz
- • Channels 36–177 (region-dependent)
- • Shorter range, less wall penetration
- • Less interference, faster speeds
- • Modern laptops, offices, enterprise APs
# Scan both bands simultaneously
sudo airodump-ng --band abg wlan0mon
# Lock to 5 GHz only
sudo airodump-ng --band a wlan0mon
# Lock to 2.4 GHz only
sudo airodump-ng --band bg wlan0mon
# List all channels your adapter supports
iw phy phy0 info | grep -A 50 "Frequencies"
# Check regulatory domain (affects available channels)
iw reg getVM Considerations
USB Passthrough Required in VMs
# VirtualBox: Devices → USB → Click your adapter name
# VMware: VM → Removable Devices → Your Adapter → Connect
# Verify the VM sees the adapter (run inside VM)
lsusb # Should list your USB WiFi adapter
iw dev # Should show wlan0 or wlan1
# Adapter claimed by the host? Release it first (Linux host):
sudo rmmod rt2800usb rt2x00usb
# Then reconnect to VM
# VirtualBox USB 3.0: requires Extension Pack (same version as VirtualBox)
# Download at: https://www.virtualbox.org/wiki/DownloadsTroubleshooting
wlan0mon not created after airmon-ng start
Interfering processes were not fully killed.
sudo airmon-ng check kill
sudo systemctl stop NetworkManager wpa_supplicant
sudo airmon-ng start wlan0Adapter blocked by rfkill
rfkill list all
rfkill unblock allInjection test fails / reports -1 packets
# Set channel first, then re-test
sudo iw dev wlan0mon set channel 6
sudo aireplay-ng --test wlan0mon
# Check driver injection support
iw phy phy0 info | grep -A 10 "Supported interface modes"No networks appear in airodump-ng
# Confirm monitor mode is active
iw dev wlan0mon info | grep type
# Scan explicitly across both bands
sudo airodump-ng --band abg wlan0mon
# Check regulatory domain (some regions disable channels)
iw reg getMAC Address Spoofing
Change your adapter's MAC before an assessment to reduce attribution. MAC changes reset when monitor mode is stopped.
# View current MAC
ip link show wlan0 | grep ether
# Randomise with macchanger
sudo ip link set wlan0 down
sudo macchanger -r wlan0 # fully random
sudo macchanger -a wlan0 # random, same vendor OUI
sudo ip link set wlan0 up
# Set a specific MAC
sudo ip link set wlan0 down
sudo ip link set wlan0 address AA:BB:CC:DD:EE:FF
sudo ip link set wlan0 upVerify It Worked
| Check | Expected | Where to look |
|---|---|---|
| Driver loaded | lsmod | grep 8812au lists the module and iw dev shows the interface | The lsmod and iw dev output after install |
| Monitor mode active | iw dev wlan0mon info reports type monitor | The iw dev output |
| Injection works | aireplay-ng --test prints "Injection is working!" and finds APs | The injection test output |