diederikdehaas / rtl8812AU

Realtek 8812AU USB WiFi driver
Other
475 stars 177 forks source link

Add compatibility with kernel 4.11.9+ #82

Closed VitalKoshalew closed 5 years ago

VitalKoshalew commented 6 years ago

Integrated fixes from the following sources to make the driver compile and work on Linux kernel 4.11.9 and later: https://github.com/diederikdehaas/rtl8812AU/issues/75 https://github.com/masterzorag/RTL8192EU-linux/pull/4/ https://github.com/Grawp/rtl8812au_rtl8821au/pull/46/ https://patchwork.kernel.org/patch/9706301/

waweber commented 6 years ago

The referenced branch successfully builds and works properly for kernel 4.13.12

tonykarre commented 6 years ago

Confirmed - builds/installs for Kali 2017.3. Using a Netis AC1200 WF2190 antenna. Can connect normally to wifi. Can't yet coax it into monitor mode. Can't run an aireplay-ng injection test.

Asara commented 6 years ago

I can verify that the PR made by @VitalKoshalew compiles and works fine on Debian Testing (currently kernel version 4.14.13-1)

Is there any reason this PR hasn't been merged?

snwokenk commented 6 years ago

just used @VitalKoshalew beta-mod branch and was able to get linux kernel 4.13+ to connect.

A merge would make sense!

diederikdehaas commented 6 years ago

Is there any reason this PR hasn't been merged?

Yes, it broke building kernels < 4.11 (the struct and use of it should've been in conditionals) I believe that some conditionals weren't correct either, see https://github.com/abperiasamy/rtl8812AU_8821AU_linux/issues/222#issuecomment-316215549

I've just uploaded several commits to the 4.3.20 branch and that made the kernels up until 4.14 build on my system. I haven't tested whether it actually worked though. If you can verify whether the latest code works for you, that would be great :+1:

diederikdehaas commented 6 years ago

For reference, this is the script I use. It isn't perfect (it always reports "SUCCEEDED"), but it does the job for me.

$ cat ../build-all.sh
#!/bin/sh
#COMPILERS="gcc-4.8 gcc-4.9 gcc-5 gcc-6 gcc-7"
COMPILERS=""
COMPILERS="$COMPILERS gcc-4.8"
COMPILERS="$COMPILERS gcc-4.9"
COMPILERS="$COMPILERS gcc-5"
COMPILERS="$COMPILERS gcc-6"
COMPILERS="$COMPILERS gcc-7"

#KERNELS="3.16.0-4-amd64 4.1.0-2-amd64 4.2.0-1-amd64 4.3.0-1-amd64 4.4.0-1-amd64 4.5.0-2-amd64 4.6.0-1-amd64 4.7.0-1-amd64 4.8.0-2-amd64 4.9.0-3-amd64 4.12.0-2-amd64 4.13.0-1-amd64 4.14.0-3-amd64 4.15.0-1-amd64"
KERNELS=""
KERNELS="$KERNELS 3.16.0-4-amd64"
KERNELS="$KERNELS 4.1.0-2-amd64"
KERNELS="$KERNELS 4.2.0-1-amd64"
KERNELS="$KERNELS 4.3.0-1-amd64"
KERNELS="$KERNELS 4.4.0-1-amd64"
KERNELS="$KERNELS 4.5.0-2-amd64"
KERNELS="$KERNELS 4.6.0-1-amd64"
KERNELS="$KERNELS 4.7.0-1-amd64"
KERNELS="$KERNELS 4.8.0-2-amd64"
KERNELS="$KERNELS 4.9.0-3-amd64"
KERNELS="$KERNELS 4.11.0-2-amd64"
KERNELS="$KERNELS 4.12.0-2-amd64"
KERNELS="$KERNELS 4.13.0-1-amd64"
KERNELS="$KERNELS 4.14.0-3-amd64"
#KERNELS="$KERNELS 4.15.0-1-amd64"

LOG_FILE="build.log"

log()
{
    # $1 = log message
    # $2 = no line break
    if [ ! -z "$1" ] ; then
        if [  -z "$2" ] ; then
            echo "$1" | tee -a $LOG_FILE
        else
            echo -n "$1" | tee -a $LOG_FILE
        fi
    fi
}

for kernel in $KERNELS
do
    log "============================================"
    log "Using kernel '$kernel'" 
    log "============================================" 
    for compiler in $COMPILERS
    do
        #log "============================================"
        log ""
        log "Clean up previous build artifacts" 
        make clean >/dev/null
        log "Building module for kernel '$kernel' with compiler '$compiler'" 
        make -j12 KVER=$kernel GCC=$compiler 2>&1 | tee -a $LOG_FILE
        log "Build " true
        if  [ $? -eq 0 ] ; then
            log "SUCCEEDED" 
        else
            log "FAILED" 
        fi
        log "" 
        log "================"
    done
done
diederikdehaas commented 5 years ago

Just pushed commits which makes it compile until 5.2, so this PR is no longer needed.