Skip to content
HackIndex logo

HackIndex

Setting Up Monitor Mode in Kali

3 min read Jul 10, 2026

Monitor mode puts the wireless adapter into a passive receive state where it captures all 802.11 frames in range regardless of destination. Without it the adapter only processes frames addressed to its own MAC. Every passive scan, handshake capture, and frame injection technique in wireless pentesting depends on monitor mode being active first.

Kill Interfering Processes

NetworkManager and wpa_supplicant both try to manage the wireless interface and will conflict with airmon-ng and airodump-ng. Kill them before enabling monitor mode:

┌──(kali㉿kali)-[~]
└─$ airmon-ng check kill
Killing these processes:
  PID Name
  981 NetworkManager
 1035 wpa_supplicant

This stops NetworkManager and wpa_supplicant for the current session only. They restart on reboot. If you need internet access during the assessment through a wired interface this is fine. If you need wireless internet access at the same time, use a second adapter for management traffic.

Enable Monitor Mode with airmon-ng

┌──(kali㉿kali)-[~]
└─$ airmon-ng start wlan0
PHY     Interface   Driver      Chipset
phy0    wlan0       mt76x2u     MediaTek MT7612U

(mac80211 monitor mode vif enabled for [phy0]wlan0 on [phy0]wlan0mon)
(mac80211 station mode vif disabled for [phy0]wlan0)

The adapter is now available as wlan0mon. All subsequent airodump-ng and aireplay-ng commands use this interface name.

Start on a Specific Channel

To start monitor mode locked to a specific channel rather than hopping:

┌──(kali㉿kali)-[~]
└─$ airmon-ng start wlan0 6

Useful when you already know the target channel and want to avoid missing frames during channel transitions. For initial reconnaissance leave the channel unlocked and let airodump-ng hop.

Enable Monitor Mode with iw

iw is the modern nl80211 alternative that gives more direct control over the interface:

┌──(kali㉿kali)-[~]
└─$ ip link set wlan0 down
┌──(kali㉿kali)-[~]
└─$ iw wlan0 set type monitor
┌──(kali㉿kali)-[~]
└─$ ip link set wlan0 up

The iw method does not rename the interface to wlan0mon. It stays as wlan0. Pass the correct interface name to any tool that expects the mon suffix.

Set a Specific Channel

After monitor mode is active, lock to a channel:

┌──(kali㉿kali)-[~]
└─$ iw dev wlan0mon set channel 6

For 5 GHz channels:

┌──(kali㉿kali)-[~]
└─$ iw dev wlan0mon set channel 36

Some adapters require the interface to be brought down first before a channel change takes effect:

┌──(kali㉿kali)-[~]
└─$ ip link set wlan0mon down
┌──(kali㉿kali)-[~]
└─$ iw dev wlan0mon set channel 100
┌──(kali㉿kali)-[~]
└─$ ip link set wlan0mon up

Verify Monitor Mode is Active

┌──(kali㉿kali)-[~]
└─$ iwconfig wlan0mon
wlan0mon  IEEE 802.11  Mode:Monitor  Frequency:2.437 GHz  Tx-Power=20 dBm

Mode:Monitor confirms the interface is ready. Verify injection also works:

┌──(kali㉿kali)-[~]
└─$ aireplay-ng --test wlan0mon
Trying broadcast probe requests...
Injection is working!

If injection fails, check whether the driver needs to be reloaded. See the driver management page.

Disable Monitor Mode

When finished, stop monitor mode and return the adapter to managed mode:

┌──(kali㉿kali)-[~]
└─$ airmon-ng stop wlan0mon

Or with iw:

┌──(kali㉿kali)-[~]
└─$ ip link set wlan0mon down
┌──(kali㉿kali)-[~]
└─$ iw wlan0mon set type managed
┌──(kali㉿kali)-[~]
└─$ ip link set wlan0mon up

Restart NetworkManager if needed:

┌──(kali㉿kali)-[~]
└─$ systemctl start NetworkManager

References