# Wireless Driver Management in Kali

> Covers installing, updating, and troubleshooting wireless drivers in Kali Linux to ensure adapter compatibility and optimal performance for wireless security testing.

- **URL:** https://hackindex.io/platforms/wireless/setup/wireless-driver-management
- **Path:** Wireless > Setup and Hardware
- **Up:** [Setup and Hardware](https://hackindex.io/platforms/wireless/setup.md)
- **Published:** 2026-03-17
- **Updated:** 2026-09-12

Most supported wireless adapters work as soon as they are plugged in. When they do not, the problem is almost always a driver that is not loaded, a conflicting module, or a driver that needs to be reloaded after a suspend or USB reconnect. This page covers identifying the chipset, confirming which driver is bound, fixing common driver state issues, and unblocking hardware that has been disabled at the software or firmware level.

- **Chipset identification** uses lsusb and lspci to determine the exact chipset before troubleshooting.
- **rfkill unblock** re-enables adapters that are soft-blocked by the OS or power manager.
- **modprobe load/reload** manually loads or resets a driver after suspend, USB reconnect, or DKMS failure.
- **DKMS driver install** reinstalls the RTL8812AU package when the module is missing after a kernel update.
- **Regulatory domain fix** sets `iw reg set` to resolve injection failures caused by default country 00 restrictions.

## Identify the Wireless Chipset on Kali Linux

For USB adapters:

```bash
lsusb
# Bus 001 Device 004: ID 0cf3:9271 Qualcomm Atheros AR9271 802.11n
# Bus 002 Device 003: ID 0bda:8812 Realtek RTL8812AU 802.11ac
```

The vendor:product ID (e.g. `0bda:8812`) is the most reliable way to look up chipset compatibility. For more detail on a specific device:

```bash
lsusb -v -d 0bda:8812 2>/dev/null | grep -i "idVendor\|idProduct\|iProduct\|iManufacturer"
#   idVendor           0x0bda Realtek Semiconductor Corp.
#   idProduct          0x8812 RTL8812AU 802.11a/b/g/n/ac
#   iManufacturer           1 Realtek
#   iProduct                2 802.11n WLAN Adapter
```

For PCIe adapters:

```bash
lspci | grep -i network
# 03:00.0 Network controller: Realtek Semiconductor Co., Ltd. RTL8812AE 802.11ac PCIe Wireless Network Adapter
```

## Identify the Active Driver

The fastest way to see interface, driver, and chipset together:

```bash
airmon-ng
# PHY     Interface   Driver      Chipset
# phy0    wlan0       iwlwifi     Intel Corporation Wi-Fi 6 AX200
# phy1    wlan1       mt76x2u     MediaTek MT7612U
# phy2    wlan2       88XXau      Realtek RTL8812AU
```

For the driver on a specific interface:

```bash
ethtool -i wlan1
# driver: mt76x2u
# version: 6.1.0-kali7-amd64
# firmware-version: N/A
# bus-info: usb-0000:00:14.0-2
```

`bus-info` confirms whether the adapter is USB or PCIe connected.

## Unblock a Hardware-Disabled Adapter with rfkill

Some systems have the wireless adapter blocked at the hardware or software level, particularly on laptops with a physical wireless kill switch or on systems where a hypervisor or power manager has disabled the radio. If the adapter does not appear after loading the driver, check whether it is blocked:

```bash
rfkill list
# 0: phy0: Wireless LAN
# 	Soft blocked: no
# 	Hard blocked: no
# 1: phy1: Wireless LAN
# 	Soft blocked: yes
# 	Hard blocked: no
```

**Soft blocked: yes** means the OS has disabled the radio and it can be unblocked in software. **Hard blocked: yes** means a physical switch or BIOS setting is blocking it and software cannot override it.

Unblock a soft-blocked adapter:

```bash
rfkill unblock wifi
```

To unblock all radio types including Bluetooth:

```bash
rfkill unblock all
```

After unblocking, run `iw dev` to confirm the interface is now visible. If the adapter was soft-blocked by NetworkManager, killing it with `airmon-ng check kill` also removes the soft block for that session.

## Load a Driver Manually

If the adapter is visible in `lsusb` but no interface appears, the driver may not be loaded:

```bash
modprobe mt76x2u
```

For RTL8812AU adapters:

```bash
modprobe 88XXau
```

Confirm the module loaded:

```bash
lsmod | grep mt76
# mt76x2u               45056  0
# mt76x2_common         90112  1 mt76x2u
# mt76                  98304  2 mt76x2u,mt76x2_common
```

## Reload a Driver

If the adapter was working and stopped, a driver reload fixes it in most cases. Common after suspend or USB reconnects:

```bash
modprobe -r mt76x2u && modprobe mt76x2u
```

For RTL8812AU:

```bash
modprobe -r 88XXau && modprobe 88XXau
```

After reloading, the interface name may change. Run `iw dev` to check the current name before proceeding.

## Install the RTL8812AU Driver on Kali

Kali ships the rtl8812au driver pre-installed as a DKMS package. If it is missing or broken after a kernel update:

```bash
apt update && apt install -y realtek-rtl88xxau-dkms
```

```bash
modprobe 88XXau
```

## Fix Injection Not Working After Driver Load

If the adapter is in monitor mode but aireplay-ng reports injection is not working, check for regulatory domain restrictions:

```bash
iw reg get
# country 00: DFS-UNSET
#     (2402 - 2472 @ 40), (N/A, 20), (N/A)
```

`country 00` is the default unset state. Some drivers restrict transmission power and injection under this setting. Set the regulatory domain explicitly:

```bash
iw reg set US
```

Then restart monitor mode:

```bash
airmon-ng stop wlan0mon
airmon-ng start wlan0
```

## Disable the Built-in Wireless Card

If the built-in card is appearing as `wlan0` and pushing your external adapter to `wlan1`, bring it down for the session:

```bash
ip link set wlan0 down
```

To blacklist it permanently, replace `iwlwifi` with the actual driver name shown by `airmon-ng`:

```bash
echo "blacklist iwlwifi" >> /etc/modprobe.d/blacklist.conf
```

## References

- [Aircrack-ng: Compatible Adapters and Drivers](https://www.aircrack-ng.org/doku.php?id=compatibility_drivers) - Driver and chipset compatibility reference
- [aircrack-ng/rtl8812au on GitHub](https://github.com/aircrack-ng/rtl8812au) - RTL8812AU DKMS driver for Kali
