Introduction
The Alfa AWUS036ACH is a popular USB Wi-Fi adapter that uses the Realtek RTL8812AU chipset. While powerful, it can present several challenges when setting up on a Raspberry Pi, especially for features like monitor mode and packet injection. This guide provides a systematic approach to identify and fix common driver issues.
Table of Contents
- Hardware Verification
- Basic Installation Methods
- Troubleshooting Common Issues
- Advanced Configuration
- Monitor Mode and Packet Injection
- Power Issues
- Kernel Compatibility
- Additional Resources
Hardware Verification
Before proceeding with software troubleshooting, verify your hardware:
1. Confirm your adapter model: Ensure you have the genuine AWUS036ACH.
2. USB port functionality:
- The adapter requires significant power. Try connecting directly to the Raspberry Pi (not through a USB hub).
- If possible, use a USB 3.0 port for better performance.
- Use a high-quality USB cable.
3. Verify chipset detection:
lsusb
Look for ID 0bda:8812 (Realtek Semiconductor Corp. RTL8812AU).
4. Power Supply:
- Ensure your Raspberry Pi has an adequate power supply (at least 2.5A recommended).
- The adapter’s LED should light up when powered.
Basic Installation Methods
There are several approaches to install the driver. If one method fails, try an alternative.
Method 1: Using DKMS (Recommended)
DKMS ensures the driver is automatically rebuilt when the kernel is updated:
# Install prerequisites
sudo apt update
sudo apt upgrade
sudo apt-get install bc mokutil build-essential libelf-dev linux-headers-`uname -r` dkms git
# Clone the driver repository
git clone -b v5.6.4.2 https://github.com/aircrack-ng/rtl8812au.git
cd rtl8812au
# If using Raspberry Pi 3/4 with ARM64 architecture
sed -i 's/CONFIG_PLATFORM_I386_PC = y/CONFIG_PLATFORM_I386_PC = n/g' Makefile
sed -i 's/CONFIG_PLATFORM_ARM64_RPI = n/CONFIG_PLATFORM_ARM64_RPI = y/g' Makefile
# For older Raspberry Pi models (ARMv7)
sed -i 's/CONFIG_PLATFORM_I386_PC = y/CONFIG_PLATFORM_I386_PC = n/g' Makefile
sed -i 's/CONFIG_PLATFORM_ARM_RPI = n/CONFIG_PLATFORM_ARM_RPI = y/g' Makefile
# Install with DKMS
sudo make dkms_install
# Reboot
sudo reboot
Method 2: Using Morrownr’s Driver Repository
This is an alternative driver repository that’s often more up-to-date:
# Install prerequisites
sudo apt update && sudo apt upgrade
sudo apt-get install dkms
sudo apt install -y raspberrypi-kernel-headers build-essential bc dkms git
# Clone repository
mkdir -p ~/src
cd ~/src
git clone https://github.com/morrownr/8812au-20210629.git
cd ~/src/8812au-20210629
# Install driver
sudo ./install-driver.sh
If you encounter kernel header errors, modify the boot config:
sudo su
cd /boot
nano config.txt
Add the following line under the [pi4] section:
arm_64bit=0
Save (Ctrl+O, Enter), exit (Ctrl+X), then reboot:
sudo reboot
Troubleshooting Common Issues
Driver Not Loading
Check if the driver is loaded:
lsmod | grep 88
You should see 8812au or similar in the output.
If not loaded, try manual loading:
sudo modprobe 8812au
Check kernel logs for errors:
dmesg | grep -i rtl
Interface Not Appearing
List network interfaces:
ip a
Look for wlan1 (or similar) if you already have wlan0 for the built-in Wi-Fi.
If no interface appears:
sudo rmmod 8812au
sudo modprobe 8812au
Reboot the system:
sudo reboot
Compilation Errors
Missing kernel headers:
sudo apt install raspberrypi-kernel-headers
Architecture mismatch errors:
For ARMv7:
export ARCH=arm
sed -i 's/^MAKE="/MAKE="ARCH=arm\ /' dkms.conf
For ARM64:
export ARCH=arm64
sed -i 's/^MAKE="/MAKE="ARCH=arm64\ /' dkms.conf
Out of memory during compilation:
Increase swap space:
sudo nano /etc/dphys-swapfile
# Change CONF_SWAPSIZE=100 to CONF_SWAPSIZE=2000
sudo /etc/init.d/dphys-swapfile restart
Advanced Configuration
LED Control
Control the LED behavior of the adapter:
# Disable LED blinking (0 = off, 1 = on)
echo "0" > /proc/net/rtl8812au/$(your_interface_name)/led_ctrl
# Check current setting
cat /proc/net/rtl8812au/$(your_interface_name)/led_ctrl
Alternatively, create a modprobe configuration:
echo "options 88XXau rtw_led_ctrl=0" | sudo tee /etc/modprobe.d/realtek-leds.conf
USB Mode Switching
Switch between USB 2.0/3.0 modes:
sudo rmmod 88XXau
sudo modprobe 88XXau rtw_switch_usb_mode=1 # 0=no switch, 1=USB2->USB3, 2=USB3->USB2
Disable MAC Address Randomization
If NetworkManager keeps changing your MAC address:
sudo nano /etc/NetworkManager/NetworkManager.conf
Add:
[device]
wifi.scan-rand-mac-address=no
Then restart NetworkManager:
sudo service NetworkManager restart
Monitor Mode and Packet Injection
These features are essential for network analysis and security testing.
Setting Up Monitor Mode
Kill potentially interfering processes:
sudo airmon-ng check kill
Set interface down:
sudo ip link set wlan1 down # Replace wlan1 with your interface name
Set monitor mode:
sudo iw dev wlan1 set type monitor
Set interface up:
sudo ip link set wlan1 up
Verify monitor mode:
iwconfig wlan1
It should show “Mode: Monitor”.
Troubleshooting Monitor Mode
If monitor mode doesn’t work:
Try using airmon-ng instead:
sudo airmon-ng start wlan1
Check for interference:
sudo airmon-ng check
Kill any processes listed.
Manual mode setting:
sudo iwconfig wlan1 mode monitor
Check driver capability:
iw list
Look for “monitor” in supported interface modes.
Setting TX Power
Adjust transmission power (use with caution):
sudo iw wlan1 set txpower fixed 3000
Power Issues
The AWUS036ACH requires significant power, which can cause issues with the Raspberry Pi.
Check USB power management:
sudo iwconfig wlan1 power off
Disable power savings:
sudo nano /etc/modprobe.d/8812au.conf
Add:
options 8812au rtw_power_mgnt=0 rtw_enusbss=0
Use a powered USB hub if direct connection fails.
Kernel Compatibility
The driver might have compatibility issues with newer kernels.
Check current kernel version:
uname -a
Prepare kernel for module compilation:
cd /usr/src/kernel
sudo git clean -fdx && sudo make bcm2711_defconfig && sudo make modules_prepareFor severe kernel incompatibility issues, consider using an older kernel version:
sudo apt install raspberrypi-kernel=1.20201126-1
(Replace with appropriate version if needed)
Additional Resources
- Official GitHub Repository
- Morrownr’s Driver Repository
- Alfa Networks Support Page
- Rokland Driver Support Page
Conclusion
The AWUS036ACH can work well with Raspberry Pi, but requires some configuration. If one method fails, try an alternative approach, as driver compatibility can vary between different Raspberry Pi models and OS versions.
Remember that kernel updates might break your driver installation, requiring you to reinstall the driver. Using DKMS can help minimize this issue by automatically rebuilding the driver when the kernel is updated.
