To support changing the power index dynamically at run time we repurpose really small mBm values to override the power index at run time. This means if you set stupidly low mBm values (e.g. using iw dev), you now get full control over the power index at run time. WARN: This means the card can send with max power (power index 63) if you set NL80211_ATTR_WIPHY_TX_POWER_LEVEL=63(mbm). However, this tx power stuff is completely busted in this driver already anyways, someone already changed the driver to cast dBm values directly to some power index. Tested, works. See https://github.com/OpenHD/rtl8812au/blob/v5.2.20/os_dep/linux/ioctl_cfg80211.c#L3667
This driver can be installed using [DKMS]. This is a system which will automatically recompile and install a kernel module when a new kernel gets installed or updated. To make use of DKMS, install the dkms
package, which on Debian (based) systems is done like this:
$ sudo apt-get install dkms
In order to install the driver open a terminal in the directory with the source code and execute the following command:
$ sudo ./dkms-install.sh
In order to remove the driver from your system open a terminal in the directory with the source code and execute the following command:
$ sudo ./dkms-remove.sh
For building & installing the driver with 'make' use
$ make
$ make install
Check the documents folder for more information on how to setup wpa_cli and hostapd
support on these drivers.
For 802.11ac (high speed), the driver also needs to be loaded
with:
"modprobe -r 88XXau" && "modprobe 88XXau rtw_vht_enable=2"
# For a bit more info on AP/STA mode configuration, see following links:
- http://blog.fraggod.net/2017/04/27/wifi-hostapd-configuration-for-80211ac-networks.html
- https://github.com/mk-fg/archlinux-pkgbuilds/issues/2#issuecomment-325991813
Download
$ git clone -b v5.2.20 https://github.com/svpcom/rtl8812au.git
$ cd rtl*
Package / Build dependencies (Kali)
$ apt-get install build-essential
$ apt-get install bc
$ apt-get install libelf-dev
$ apt-get install linux-headers-`uname -r`
For Raspberry (RPI 2/3) you will need kernel sources
$ wget "https://raw.githubusercontent.com/notro/rpi-source/master/rpi-source" -O /usr/bin/rpi-source
$ chmod 755 /usr/bin/rpi-source
$ rpi-source
Then you need to download and compile the driver on the RPI
$ git clone https://github.com/aircrack-ng/rtl8812au -b v5.2.20
$ cd rtl*
$ make
$ cp 8812au.ko /lib/modules/`uname -r`/kernel/drivers/net/wireless
$ depmod -a
$ modprobe 88XXau
then run this step to change platform in Makefile, For RPI 2/3:
$ 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
But for RPI 3 B+ you will need to run those below which builds the ARM64 arch driver:
$ 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
- Fix problematic interference in monitor mode.
$ airmon-ng check kill
You may also uncheck the box "Automatically connect to this network when it is avaiable" in nm-connection-editor. This only works if you have a saved wifi connection.
- Set interface down
$ ip link set <wlan1> down
- Set monitor mode
$ airmon-ng start <wlan1>
or
$ iw dev <wlan1> set type monitor
- Set interface up
$ ip link set <wlan1> up
For setting TX power
$ iwconfig <wlan1> txpower 30
or
$ iw <wlan1> set txpower fixed 3000
CONFIG_LED_ENABLE = n
value can be y or n
options 88XXau rtw_led_enable=0
value can be 0 or 1
$ echo "0" > /proc/net/rtl8812au/$(your interface name)/led_enable
value can be 0 or 1
$ cat /proc/net/rtl8812au/$(your interface name)/led_enable
Check "documents" and "tools" folders for information
We also got a Android APK tool for debugging several chipsets
Newer versions of NetworkManager got some options you might want to disable. Simply add these lines into the NetworkManager.conf
[device]
wifi.scan-rand-mac-address=no
[ifupdown]
managed=false
[connection]
wifi.powersave=2
at the end of file /etc/NetworkManager/NetworkManager.conf and restart NetworkManager with the command:
$ sudo service NetworkManager restart