brandon-bailey / rtl8822bu

RTL8822BU Wireless Driver for Linux
61 stars 220 forks source link

Fails to build on kernel 4.12 #7

Open theredbaron1834 opened 7 years ago

theredbaron1834 commented 7 years ago

Trying to install this rtl8822bu's driver on linux kernel 4.12 with Arch Linux, and it is getting a make failure. This is a fully updated system.

Here is the log.

make
make ARCH=x86_64 CROSS_COMPILE= -C /lib/modules/4.12.3-1-ARCH/build M=/tmp/rtl8822bu modules
make[1]: Entering directory '/usr/lib/modules/4.12.3-1-ARCH/build'
  CC [M]  /tmp/rtl8822bu/core/rtw_cmd.o
In file included from /tmp/rtl8822bu/include/drv_types.h:32:0,
                 from /tmp/rtl8822bu/core/rtw_cmd.c:22:
/tmp/rtl8822bu/include/osdep_service.h: In function ‘thread_enter’:
/tmp/rtl8822bu/include/osdep_service.h:345:2: error: implicit declaration of function ‘allow_signal’; did you mean ‘do_signal’? [-Werror=implicit-function-declaration]
  allow_signal(SIGTERM);
  ^~~~~~~~~~~~
  do_signal
/tmp/rtl8822bu/include/osdep_service.h: In function ‘flush_signals_thread’:
/tmp/rtl8822bu/include/osdep_service.h:355:6: error: implicit declaration of function ‘signal_pending’; did you mean ‘timer_pending’? [-Werror=implicit-function-declaration]
  if (signal_pending(current))
      ^~~~~~~~~~~~~~
      timer_pending
/tmp/rtl8822bu/include/osdep_service.h:356:3: error: implicit declaration of function ‘flush_signals’; did you mean ‘do_signal’? [-Werror=implicit-function-declaration]
   flush_signals(current);
   ^~~~~~~~~~~~~
   do_signal
cc1: some warnings being treated as errors
make[2]: *** [scripts/Makefile.build:303: /tmp/rtl8822bu/core/rtw_cmd.o] Error 1
make[1]: *** [Makefile:1512: _module_/tmp/rtl8822bu] Error 2
make[1]: Leaving directory '/usr/lib/modules/4.12.3-1-ARCH/build'
make: *** [Makefile:1318: modules] Error 2
[1]    3626 exit 2     make

This is an Edimax AC1200 dual band "11ac wave 2", ew-7822ulc.

Any ideas? Any more info needed?

theredbaron1834 commented 7 years ago

Using a fork by stylpen it goes a bit further, but still crashes.

make
make ARCH=x86_64 CROSS_COMPILE= -C /lib/modules/4.12.3-1-ARCH/build M=/home/theredbaron/tmp/rtl8822bu modules
make[1]: Entering directory '/usr/lib/modules/4.12.3-1-ARCH/build'
  CC [M]  /home/theredbaron/tmp/rtl8822bu/core/rtw_cmd.o
  CC [M]  /home/theredbaron/tmp/rtl8822bu/core/rtw_security.o
  CC [M]  /home/theredbaron/tmp/rtl8822bu/core/rtw_debug.o
  CC [M]  /home/theredbaron/tmp/rtl8822bu/core/rtw_io.o
  CC [M]  /home/theredbaron/tmp/rtl8822bu/core/rtw_ioctl_query.o
  CC [M]  /home/theredbaron/tmp/rtl8822bu/core/rtw_ioctl_set.o
  CC [M]  /home/theredbaron/tmp/rtl8822bu/core/rtw_ieee80211.o
  CC [M]  /home/theredbaron/tmp/rtl8822bu/core/rtw_mlme.o
  CC [M]  /home/theredbaron/tmp/rtl8822bu/core/rtw_mlme_ext.o
  CC [M]  /home/theredbaron/tmp/rtl8822bu/core/rtw_mi.o
  CC [M]  /home/theredbaron/tmp/rtl8822bu/core/rtw_wlan_util.o
  CC [M]  /home/theredbaron/tmp/rtl8822bu/core/rtw_vht.o
  CC [M]  /home/theredbaron/tmp/rtl8822bu/core/rtw_pwrctrl.o
  CC [M]  /home/theredbaron/tmp/rtl8822bu/core/rtw_rf.o
  CC [M]  /home/theredbaron/tmp/rtl8822bu/core/rtw_recv.o
  CC [M]  /home/theredbaron/tmp/rtl8822bu/core/rtw_sta_mgt.o
  CC [M]  /home/theredbaron/tmp/rtl8822bu/core/rtw_ap.o
  CC [M]  /home/theredbaron/tmp/rtl8822bu/core/rtw_xmit.o
  CC [M]  /home/theredbaron/tmp/rtl8822bu/core/rtw_p2p.o
  CC [M]  /home/theredbaron/tmp/rtl8822bu/core/rtw_tdls.o
  CC [M]  /home/theredbaron/tmp/rtl8822bu/core/rtw_br_ext.o
  CC [M]  /home/theredbaron/tmp/rtl8822bu/core/rtw_iol.o
  CC [M]  /home/theredbaron/tmp/rtl8822bu/core/rtw_sreset.o
  CC [M]  /home/theredbaron/tmp/rtl8822bu/core/rtw_btcoex.o
  CC [M]  /home/theredbaron/tmp/rtl8822bu/core/rtw_beamforming.o
  CC [M]  /home/theredbaron/tmp/rtl8822bu/core/rtw_odm.o
  CC [M]  /home/theredbaron/tmp/rtl8822bu/core/efuse/rtw_efuse.o
  CC [M]  /home/theredbaron/tmp/rtl8822bu/os_dep/osdep_service.o
  CC [M]  /home/theredbaron/tmp/rtl8822bu/os_dep/linux/os_intfs.o
  CC [M]  /home/theredbaron/tmp/rtl8822bu/os_dep/linux/usb_intf.o
  CC [M]  /home/theredbaron/tmp/rtl8822bu/os_dep/linux/usb_ops_linux.o
  CC [M]  /home/theredbaron/tmp/rtl8822bu/os_dep/linux/ioctl_linux.o
  CC [M]  /home/theredbaron/tmp/rtl8822bu/os_dep/linux/xmit_linux.o
  CC [M]  /home/theredbaron/tmp/rtl8822bu/os_dep/linux/mlme_linux.o
  CC [M]  /home/theredbaron/tmp/rtl8822bu/os_dep/linux/recv_linux.o
  CC [M]  /home/theredbaron/tmp/rtl8822bu/os_dep/linux/ioctl_cfg80211.o
/home/theredbaron/tmp/rtl8822bu/os_dep/linux/ioctl_cfg80211.c: In function ‘rtw_cfg80211_indicate_connect’:
/home/theredbaron/tmp/rtl8822bu/os_dep/linux/ioctl_cfg80211.c:753:21: error: passing argument 2 of ‘cfg80211_roamed’ from incompatible pointer type [-Werror=incompatible-pointer-types]
                   , notify_channel
                     ^~~~~~~~~~~~~~
In file included from /home/theredbaron/tmp/rtl8822bu/include/osdep_service_linux.h:87:0,
                 from /home/theredbaron/tmp/rtl8822bu/include/osdep_service.h:41,
                 from /home/theredbaron/tmp/rtl8822bu/include/drv_types.h:32,
                 from /home/theredbaron/tmp/rtl8822bu/os_dep/linux/ioctl_cfg80211.c:22:
./include/net/cfg80211.h:5435:6: note: expected ‘struct cfg80211_roam_info *’ but argument is of type ‘struct ieee80211_channel *’
 void cfg80211_roamed(struct net_device *dev, struct cfg80211_roam_info *info,
      ^~~~~~~~~~~~~~~
/home/theredbaron/tmp/rtl8822bu/os_dep/linux/ioctl_cfg80211.c:755:21: warning: passing argument 3 of ‘cfg80211_roamed’ makes integer from pointer without a cast [-Wint-conversion]
                   , cur_network->network.MacAddress
                     ^~~~~~~~~~~
In file included from /home/theredbaron/tmp/rtl8822bu/include/osdep_service_linux.h:87:0,
                 from /home/theredbaron/tmp/rtl8822bu/include/osdep_service.h:41,
                 from /home/theredbaron/tmp/rtl8822bu/include/drv_types.h:32,
                 from /home/theredbaron/tmp/rtl8822bu/os_dep/linux/ioctl_cfg80211.c:22:
./include/net/cfg80211.h:5435:6: note: expected ‘gfp_t {aka unsigned int}’ but argument is of type ‘unsigned char *’
 void cfg80211_roamed(struct net_device *dev, struct cfg80211_roam_info *info,
      ^~~~~~~~~~~~~~~
/home/theredbaron/tmp/rtl8822bu/os_dep/linux/ioctl_cfg80211.c:751:3: error: too many arguments to function ‘cfg80211_roamed’
   cfg80211_roamed(padapter->pnetdev
   ^~~~~~~~~~~~~~~
In file included from /home/theredbaron/tmp/rtl8822bu/include/osdep_service_linux.h:87:0,
                 from /home/theredbaron/tmp/rtl8822bu/include/osdep_service.h:41,
                 from /home/theredbaron/tmp/rtl8822bu/include/drv_types.h:32,
                 from /home/theredbaron/tmp/rtl8822bu/os_dep/linux/ioctl_cfg80211.c:22:
./include/net/cfg80211.h:5435:6: note: declared here
 void cfg80211_roamed(struct net_device *dev, struct cfg80211_roam_info *info,
      ^~~~~~~~~~~~~~~
/home/theredbaron/tmp/rtl8822bu/os_dep/linux/ioctl_cfg80211.c: In function ‘rtw_cfg80211_add_monitor_if’:
/home/theredbaron/tmp/rtl8822bu/os_dep/linux/ioctl_cfg80211.c:3598:12: error: ‘struct net_device’ has no member named ‘destructor’; did you mean ‘priv_destructor’?
  mon_ndev->destructor = rtw_ndev_destructor;
            ^~~~~~~~~~
            priv_destructor
/home/theredbaron/tmp/rtl8822bu/os_dep/linux/ioctl_cfg80211.c: In function ‘rtw_cfg80211_preinit_wiphy’:
/home/theredbaron/tmp/rtl8822bu/os_dep/linux/ioctl_cfg80211.c:6097:18: error: ‘WIPHY_FLAG_SUPPORTS_SCHED_SCAN’ undeclared (first use in this function); did you mean ‘WIPHY_FLAG_SUPPORTS_TDLS’?
  wiphy->flags |= WIPHY_FLAG_SUPPORTS_SCHED_SCAN;
                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                  WIPHY_FLAG_SUPPORTS_TDLS
/home/theredbaron/tmp/rtl8822bu/os_dep/linux/ioctl_cfg80211.c:6097:18: note: each undeclared identifier is reported only once for each function it appears in
/home/theredbaron/tmp/rtl8822bu/os_dep/linux/ioctl_cfg80211.c: At top level:
/home/theredbaron/tmp/rtl8822bu/os_dep/linux/ioctl_cfg80211.c:6130:25: error: initialization from incompatible pointer type [-Werror=incompatible-pointer-types]
  .change_virtual_intf = cfg80211_rtw_change_iface,
                         ^~~~~~~~~~~~~~~~~~~~~~~~~
/home/theredbaron/tmp/rtl8822bu/os_dep/linux/ioctl_cfg80211.c:6130:25: note: (near initialization for ‘rtw_cfg80211_ops.change_virtual_intf’)
/home/theredbaron/tmp/rtl8822bu/os_dep/linux/ioctl_cfg80211.c:6153:22: error: initialization from incompatible pointer type [-Werror=incompatible-pointer-types]
  .add_virtual_intf = cfg80211_rtw_add_virtual_intf,
                      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/theredbaron/tmp/rtl8822bu/os_dep/linux/ioctl_cfg80211.c:6153:22: note: (near initialization for ‘rtw_cfg80211_ops.add_virtual_intf’)
cc1: some warnings being treated as errors
make[2]: *** [scripts/Makefile.build:303: /home/theredbaron/tmp/rtl8822bu/os_dep/linux/ioctl_cfg80211.o] Error 1
make[1]: *** [Makefile:1512: _module_/home/theredbaron/tmp/rtl8822bu] Error 2
make[1]: Leaving directory '/usr/lib/modules/4.12.3-1-ARCH/build'
make: *** [Makefile:1318: modules] Error 2
[1]    26918 exit 2     make
make  40.02s user 3.57s system 101% cpu 42.971 total
marceloa-asg commented 7 years ago

I'm in the same boat here. I'm using Fedora 26, which uses Kernel 4.12

ghost commented 7 years ago

here is my private Aur-package compiling against kernel 4.12 and linux-lts kernel 4.9: https://github.com/shelby-cobra/rtl8822bu-dkms i use it successfully since several weeks . you are free to try it. you can ignore the error-message

Error! Could not find module source directory. Directory: /usr/src/rtl8822bu-dkms-1.0.0.9 does not exist.

the source is copiied to /usr/src/rtl8822bu-1.0.0.9. i'll fix it next time.

Sweetchuck commented 7 years ago

I cloned the repo from https://github.com/stylpen/rtl8822bu.git#60eff7ac7f465ef45bdff25f09329145a6178ae2 And I made the following modifications then the make was successful.

diff --git a/os_dep/linux/ioctl_cfg80211.c b/os_dep/linux/ioctl_cfg80211.c
index f64b6bb..879692f 100644
--- a/os_dep/linux/ioctl_cfg80211.c
+++ b/os_dep/linux/ioctl_cfg80211.c
@@ -765,15 +765,14 @@ check_bss:
 #if (LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 39) && LINUX_VERSION_CODE < KERNEL_VERSION(4, 12, 0)) || defined(COMPAT_KERNEL_RELEASE)
                                , notify_channel
 #elif LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0)
-                               , &roam_info, GFP_ATOMIC);
-#else
+                               , &roam_info, GFP_ATOMIC
+#endif
                                , cur_network->network.MacAddress
                                , pmlmepriv->assoc_req + sizeof(struct rtw_ieee80211_hdr_3addr) + 2
                                , pmlmepriv->assoc_req_len - sizeof(struct rtw_ieee80211_hdr_3addr) - 2
                                , pmlmepriv->assoc_rsp + sizeof(struct rtw_ieee80211_hdr_3addr) + 6
                                , pmlmepriv->assoc_rsp_len - sizeof(struct rtw_ieee80211_hdr_3addr) - 6
                                , GFP_ATOMIC);
-#endif
        } else {
 #if LINUX_VERSION_CODE < KERNEL_VERSION(3, 11, 0) || defined(COMPAT_KERNEL_RELEASE)
                RTW_INFO("pwdev->sme_state(b)=%d\n", pwdev->sme_state);

openSUSE tumbleweed 4.11.8-2-default

I still don't know if it works or not :-)

CapitalF commented 6 years ago

FYI there is a fork here: https://github.com/MeissnerEffect/rtl8822bu.git

Verified working with Debian's 4.14.0-3-amd64.

Sweetchuck commented 6 years ago

https://github.com/MeissnerEffect/rtl8822bu.git works on openSUSE Tumbleweed with kernel 4.16.7 as well. :-)

qehs244 commented 6 years ago

https://github.com/MeissnerEffect/rtl8822bu.git

confirmed working on Debian Buster Kernel 4.16.0.2 using:- Bus 002 Device 004: ID 7392:b822 Edimax Technology Co., Ltd