diff --git a/Makefile b/Makefile index b4324ad..2c557d7 100755 --- a/Makefile +++ b/Makefile @@ -1037,7 +1037,7 @@ SUBARCH := $(shell uname -m | sed -e s/i.86/i386/ | sed -e s/aarch64/arm64/ ) ARCH ?= $(SUBARCH) CROSS_COMPILE ?= KVER := $(shell uname -r) -KSRC := /lib/modules/$(KVER)/build +KSRC ?= /lib/modules/$(KVER)/build MODDESTDIR := /lib/modules/$(KVER)/kernel/drivers/net/wireless/ INSTALL_PREFIX := STAGINGMODDIR := /lib/modules/$(KVER)/kernel/drivers/staging diff --git a/README.md b/README.md index c0a632d..7839c69 100644 --- a/README.md +++ b/README.md @@ -1,25 +1,25 @@ -# RTL8812AU/21AU and RTL8814AU drivers -# with monitor mode and frame injection +## RTL8812AU/21AU and RTL8814AU drivers +## with monitor mode and frame injection -## DKMS +### DKMS 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 install dkms ``` -## Installation of Driver +### Installation of Driver 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 ``` -## Removal of Driver +### Removal of Driver 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 ``` -## Make +### Make For building & installing the rtl8812au/rtl8821au driver with 'make' use ``` make @@ -31,7 +31,7 @@ make RTL8814=1 make install RTL8814=1 ``` -## Notes +### Notes Download ``` git clone -b v5.2.20 https://github.com/aircrack-ng/rtl8812au.git @@ -72,15 +72,36 @@ For setting TX power sudo iw wlan0 set txpower fixed 3000 ``` -## LED Parameter -``` -We've added the "realtek-leds.conf" in build directory, -with this you may change the leds to -"2: Allways On", "1: Normal" or "0: Allways Off" with placing the file in "/etc/modprobe.d/ +### LED control -Manual modprobe will override this file if option value also included at the command line, e.g., -$ sudo modprobe -r 8812au -$ sudo modprobe 8812au rtw_led_ctrl=1 +#### You can now control LED behaviour statically by Makefile, for example: + +```sh +CONFIG_LED_ENABLE = n +``` +value can be y or n + +#### statically by module parameter in /etc/modprobe.d/8812au.conf or wherever, for example: + +```sh +options 8812au rtw_led_enable=0 +``` +value can be 0 or 1 + +#### or dynamically by writing to /proc/net/rtl8812au/$(your interface name)/led_enable, for example: + +```sh +$ echo "0" > /proc/net/rtl8812au/$(your interface name)/led_enable +``` +value can be 0 or 1 + +#### check current value: + +```sh +$ cat /proc/net/rtl8812au/$(your interface name)/led_enable +``` + +### NetworkManager Newer versions of NetworkManager switches to random MAC address. Some users would prefer to use a fixed address. Simply add these lines below diff --git a/hal/rtl8814a/rtl8814a_hal_init.c b/hal/rtl8814a/rtl8814a_hal_init.c index c026546..6c2f471 100644 --- a/hal/rtl8814a/rtl8814a_hal_init.c +++ b/hal/rtl8814a/rtl8814a_hal_init.c @@ -6535,7 +6535,7 @@ u8 GetHalDefVar8814A(PADAPTER padapter, HAL_DEF_VARIABLE variable, void *pval) break; case HAL_DEF_RX_STBC: - *(u8*)pval = 1; + *(u8*)pval = 4; break; case HAL_DEF_EXPLICIT_BEAMFORMER: diff --git a/hal/rtl8814a/usb/usb_halinit.c b/hal/rtl8814a/usb/usb_halinit.c index a9c7e71..15c21ea 100644 --- a/hal/rtl8814a/usb/usb_halinit.c +++ b/hal/rtl8814a/usb/usb_halinit.c @@ -2004,16 +2004,14 @@ hal_ReadUsbModeSwitch_8814AU( IN BOOLEAN AutoloadFail ) { -#if 0 - if(AutoloadFail) - { - UsbModeSwitch_SetUsbModeMechOn(Adapter, _FALSE); - } + + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + + if (AutoloadFail) + pHalData->EEPROMUsbSwitch = _FALSE; else - { - UsbModeSwitch_SetUsbModeMechOn(Adapter, ((PROMContent[8]&BIT1)>>1)); - } -#endif + /* check efuse 0x0E bit2 */ + pHalData->EEPROMUsbSwitch = (PROMContent[EEPROM_USB_MODE_8814A] & BIT1) >> 1; } static VOID diff --git a/os_dep/linux/ioctl_cfg80211.c b/os_dep/linux/ioctl_cfg80211.c index 0f0adc9..156aa2c 100644 --- a/os_dep/linux/ioctl_cfg80211.c +++ b/os_dep/linux/ioctl_cfg80211.c @@ -4162,6 +4162,11 @@ static int rtw_cfg80211_add_monitor_if(_adapter *padapter, char *name, struct ne mon_ndev->type = ARPHRD_IEEE80211_RADIOTAP; strncpy(mon_ndev->name, name, IFNAMSIZ); mon_ndev->name[IFNAMSIZ - 1] = 0; +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12 ,0)) + mon_ndev->needs_free_netdev = true; +#else + mon_ndev->destructor = rtw_ndev_destructor; +#endif #if (LINUX_VERSION_CODE > KERNEL_VERSION(4, 11, 8)) mon_ndev->priv_destructor = rtw_ndev_destructor; #else