Skip to content

[BUG] Unable to install/build rtl8812eu driver on Nvidia Jetson Orin Nano #421

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
2 tasks done
jmssa opened this issue Apr 20, 2025 · 2 comments
Open
2 tasks done

Comments

@jmssa
Copy link

jmssa commented Apr 20, 2025

Describe the bug
Both "sudo ./dkms-install.sh" and "make" finish with errors when attempting to install rtl8812eu driver.

To Reproduce

$ git clone -b v5.15.0.1 https://github.com/svpcom/rtl8812eu.git
$ cd rtl8812eu/
$ sudo ./dkms-install.sh  #or make

Expected behavior
Finishing installation or building and detecting the wifi module the same as my x86 laptop.

Screenshots
Not applicable, I believe.

Your setup (please complete the following information):

Additional context
The make.log results in

DKMS make.log for rtl88x2eu-5.15.0.1 for kernel 5.15.148-tegra (aarch64)
Sun Apr 20 08:02:11 PM WEST 2025
make ARCH=arm64 CROSS_COMPILE= -C /lib/modules/5.15.148-tegra/build M=/var/lib/dkms/rtl88x2eu/5.15.0.1/build  modules
make[1]: Entering directory '/usr/src/linux-headers-5.15.148-tegra-ubuntu22.04_aarch64/3rdparty/canonical/linux-jammy/kernel-source'
  CC [M]  /var/lib/dkms/rtl88x2eu/5.15.0.1/build/core/rtw_cmd.o
  CC [M]  /var/lib/dkms/rtl88x2eu/5.15.0.1/build/core/rtw_security.o
  CC [M]  /var/lib/dkms/rtl88x2eu/5.15.0.1/build/core/rtw_debug.o
  CC [M]  /var/lib/dkms/rtl88x2eu/5.15.0.1/build/core/rtw_io.o
  CC [M]  /var/lib/dkms/rtl88x2eu/5.15.0.1/build/core/rtw_ioctl_query.o
  CC [M]  /var/lib/dkms/rtl88x2eu/5.15.0.1/build/core/rtw_ioctl_set.o
  CC [M]  /var/lib/dkms/rtl88x2eu/5.15.0.1/build/core/rtw_ieee80211.o
  CC [M]  /var/lib/dkms/rtl88x2eu/5.15.0.1/build/core/rtw_mlme.o
  CC [M]  /var/lib/dkms/rtl88x2eu/5.15.0.1/build/core/rtw_mlme_ext.o
  CC [M]  /var/lib/dkms/rtl88x2eu/5.15.0.1/build/core/rtw_mi.o
  CC [M]  /var/lib/dkms/rtl88x2eu/5.15.0.1/build/core/rtw_wlan_util.o
  CC [M]  /var/lib/dkms/rtl88x2eu/5.15.0.1/build/core/rtw_vht.o
  CC [M]  /var/lib/dkms/rtl88x2eu/5.15.0.1/build/core/rtw_pwrctrl.o
  CC [M]  /var/lib/dkms/rtl88x2eu/5.15.0.1/build/core/rtw_rf.o
  CC [M]  /var/lib/dkms/rtl88x2eu/5.15.0.1/build/core/rtw_chplan.o
  CC [M]  /var/lib/dkms/rtl88x2eu/5.15.0.1/build/core/rtw_regdb_rtk.o
  CC [M]  /var/lib/dkms/rtl88x2eu/5.15.0.1/build/core/rtw_chset.o
  CC [M]  /var/lib/dkms/rtl88x2eu/5.15.0.1/build/core/rtw_dfs.o
  CC [M]  /var/lib/dkms/rtl88x2eu/5.15.0.1/build/core/rtw_txpwr.o
  CC [M]  /var/lib/dkms/rtl88x2eu/5.15.0.1/build/core/monitor/rtw_radiotap.o
  CC [M]  /var/lib/dkms/rtl88x2eu/5.15.0.1/build/core/rtw_recv.o
  CC [M]  /var/lib/dkms/rtl88x2eu/5.15.0.1/build/core/rtw_sta_mgt.o
  CC [M]  /var/lib/dkms/rtl88x2eu/5.15.0.1/build/core/rtw_ap.o
  CC [M]  /var/lib/dkms/rtl88x2eu/5.15.0.1/build/core/wds/rtw_wds.o
  CC [M]  /var/lib/dkms/rtl88x2eu/5.15.0.1/build/core/mesh/rtw_mesh.o
  CC [M]  /var/lib/dkms/rtl88x2eu/5.15.0.1/build/core/mesh/rtw_mesh_pathtbl.o
  CC [M]  /var/lib/dkms/rtl88x2eu/5.15.0.1/build/core/mesh/rtw_mesh_hwmp.o
  CC [M]  /var/lib/dkms/rtl88x2eu/5.15.0.1/build/core/rtw_xmit.o
  CC [M]  /var/lib/dkms/rtl88x2eu/5.15.0.1/build/core/rtw_p2p.o
/var/lib/dkms/rtl88x2eu/5.15.0.1/build/core/rtw_recv.c: In function ‘validate_mp_recv_frame’:
/var/lib/dkms/rtl88x2eu/5.15.0.1/build/core/rtw_recv.c:3906:25: warning: this ‘for’ clause does not guard... [-Wmisleading-indentation]
 3906 |                         for (i = 0; i < precv_frame->u.hdr.len; i = i + 8)
      |                         ^~~
In file included from /var/lib/dkms/rtl88x2eu/5.15.0.1/build/include/drv_types.h:60,
                 from /var/lib/dkms/rtl88x2eu/5.15.0.1/build/core/rtw_recv.c:17:
/var/lib/dkms/rtl88x2eu/5.15.0.1/build/include/rtw_debug.h:52:33: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the ‘for’
   52 |         #define RTW_INFO(x,...) do {} while (0)
      |                                 ^~
/var/lib/dkms/rtl88x2eu/5.15.0.1/build/core/rtw_recv.c:3909:33: note: in expansion of macro ‘RTW_INFO’
 3909 |                                 RTW_INFO("#############################\n");
      |                                 ^~~~~~~~
  CC [M]  /var/lib/dkms/rtl88x2eu/5.15.0.1/build/core/rtw_rson.o
  CC [M]  /var/lib/dkms/rtl88x2eu/5.15.0.1/build/core/rtw_tdls.o
  CC [M]  /var/lib/dkms/rtl88x2eu/5.15.0.1/build/core/rtw_br_ext.o
  CC [M]  /var/lib/dkms/rtl88x2eu/5.15.0.1/build/core/rtw_iol.o
  CC [M]  /var/lib/dkms/rtl88x2eu/5.15.0.1/build/core/rtw_sreset.o
  CC [M]  /var/lib/dkms/rtl88x2eu/5.15.0.1/build/core/rtw_btcoex_wifionly.o
  CC [M]  /var/lib/dkms/rtl88x2eu/5.15.0.1/build/core/rtw_btcoex.o
  CC [M]  /var/lib/dkms/rtl88x2eu/5.15.0.1/build/core/rtw_beamforming.o
  CC [M]  /var/lib/dkms/rtl88x2eu/5.15.0.1/build/core/rtw_odm.o
  CC [M]  /var/lib/dkms/rtl88x2eu/5.15.0.1/build/core/rtw_rm.o
  CC [M]  /var/lib/dkms/rtl88x2eu/5.15.0.1/build/core/rtw_rm_fsm.o
  CC [M]  /var/lib/dkms/rtl88x2eu/5.15.0.1/build/core/rtw_ft.o
  CC [M]  /var/lib/dkms/rtl88x2eu/5.15.0.1/build/core/rtw_wnm.o
  CC [M]  /var/lib/dkms/rtl88x2eu/5.15.0.1/build/core/rtw_mbo.o
  CC [M]  /var/lib/dkms/rtl88x2eu/5.15.0.1/build/core/rtw_rm_util.o
  CC [M]  /var/lib/dkms/rtl88x2eu/5.15.0.1/build/core/efuse/rtw_efuse.o
  CC [M]  /var/lib/dkms/rtl88x2eu/5.15.0.1/build/core/rtw_roch.o
  CC [M]  /var/lib/dkms/rtl88x2eu/5.15.0.1/build/core/crypto/aes-internal.o
  CC [M]  /var/lib/dkms/rtl88x2eu/5.15.0.1/build/core/crypto/aes-internal-enc.o
  CC [M]  /var/lib/dkms/rtl88x2eu/5.15.0.1/build/core/crypto/aes-gcm.o
  CC [M]  /var/lib/dkms/rtl88x2eu/5.15.0.1/build/core/crypto/aes-ccm.o
/var/lib/dkms/rtl88x2eu/5.15.0.1/build/core/efuse/rtw_efuse.c: In function ‘rtw_efuse_analyze’:
/var/lib/dkms/rtl88x2eu/5.15.0.1/build/core/efuse/rtw_efuse.c:1091:17: warning: this ‘if’ clause does not guard... [-Wmisleading-indentation]
 1091 |                 if (i % 16 == 0)
      |                 ^~
In file included from /var/lib/dkms/rtl88x2eu/5.15.0.1/build/include/drv_types.h:60,
                 from /var/lib/dkms/rtl88x2eu/5.15.0.1/build/core/efuse/rtw_efuse.c:17:
/var/lib/dkms/rtl88x2eu/5.15.0.1/build/include/rtw_debug.h:261:9: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the ‘if’
  261 |         do {\
      |         ^~
/var/lib/dkms/rtl88x2eu/5.15.0.1/build/core/efuse/rtw_efuse.c:1093:25: note: in expansion of macro ‘_RTW_PRINT_SEL’
 1093 |                         _RTW_PRINT_SEL(RTW_DBGDUMP, "%02X%s"
      |                         ^~~~~~~~~~~~~~
  CC [M]  /var/lib/dkms/rtl88x2eu/5.15.0.1/build/core/crypto/aes-omac1.o
  CC [M]  /var/lib/dkms/rtl88x2eu/5.15.0.1/build/core/crypto/ccmp.o
  CC [M]  /var/lib/dkms/rtl88x2eu/5.15.0.1/build/core/crypto/gcmp.o
  CC [M]  /var/lib/dkms/rtl88x2eu/5.15.0.1/build/core/crypto/aes-siv.o
  CC [M]  /var/lib/dkms/rtl88x2eu/5.15.0.1/build/core/crypto/aes-ctr.o
  CC [M]  /var/lib/dkms/rtl88x2eu/5.15.0.1/build/core/crypto/sha256-internal.o
  CC [M]  /var/lib/dkms/rtl88x2eu/5.15.0.1/build/core/crypto/sha256.o
  CC [M]  /var/lib/dkms/rtl88x2eu/5.15.0.1/build/core/crypto/sha256-prf.o
  CC [M]  /var/lib/dkms/rtl88x2eu/5.15.0.1/build/core/crypto/rtw_crypto_wrap.o
  CC [M]  /var/lib/dkms/rtl88x2eu/5.15.0.1/build/core/rtw_swcrypto.o
  CC [M]  /var/lib/dkms/rtl88x2eu/5.15.0.1/build/os_dep/osdep_service.o
  CC [M]  /var/lib/dkms/rtl88x2eu/5.15.0.1/build/os_dep/linux/os_intfs.o
  CC [M]  /var/lib/dkms/rtl88x2eu/5.15.0.1/build/os_dep/linux/usb_intf.o
  CC [M]  /var/lib/dkms/rtl88x2eu/5.15.0.1/build/os_dep/linux/usb_ops_linux.o
  CC [M]  /var/lib/dkms/rtl88x2eu/5.15.0.1/build/os_dep/linux/ioctl_linux.o
  CC [M]  /var/lib/dkms/rtl88x2eu/5.15.0.1/build/os_dep/linux/xmit_linux.o
  CC [M]  /var/lib/dkms/rtl88x2eu/5.15.0.1/build/os_dep/linux/mlme_linux.o
  CC [M]  /var/lib/dkms/rtl88x2eu/5.15.0.1/build/os_dep/linux/recv_linux.o
  CC [M]  /var/lib/dkms/rtl88x2eu/5.15.0.1/build/os_dep/linux/ioctl_cfg80211.o
  CC [M]  /var/lib/dkms/rtl88x2eu/5.15.0.1/build/os_dep/linux/rtw_cfgvendor.o
  CC [M]  /var/lib/dkms/rtl88x2eu/5.15.0.1/build/os_dep/linux/wifi_regd.o
  CC [M]  /var/lib/dkms/rtl88x2eu/5.15.0.1/build/os_dep/linux/rtw_android.o
  CC [M]  /var/lib/dkms/rtl88x2eu/5.15.0.1/build/os_dep/linux/rtw_proc.o
  CC [M]  /var/lib/dkms/rtl88x2eu/5.15.0.1/build/os_dep/linux/nlrtw.o
/var/lib/dkms/rtl88x2eu/5.15.0.1/build/os_dep/linux/ioctl_cfg80211.c: In function ‘rtw_cfg80211_ch_switch_notify’:
/var/lib/dkms/rtl88x2eu/5.15.0.1/build/os_dep/linux/ioctl_cfg80211.c:515:17: error: too many arguments to function ‘cfg80211_ch_switch_started_notify’
  515 |                 cfg80211_ch_switch_started_notify(adapter->pnetdev, &chdef, 0, 0, false);
      |                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /var/lib/dkms/rtl88x2eu/5.15.0.1/build/include/osdep_service_linux.h:98,
                 from /var/lib/dkms/rtl88x2eu/5.15.0.1/build/include/osdep_service.h:59,
                 from /var/lib/dkms/rtl88x2eu/5.15.0.1/build/include/drv_types.h:27,
                 from /var/lib/dkms/rtl88x2eu/5.15.0.1/build/os_dep/linux/ioctl_cfg80211.c:17:
./include/net/cfg80211.h:7716:6: note: declared here
 7716 | void cfg80211_ch_switch_started_notify(struct net_device *dev,
      |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/var/lib/dkms/rtl88x2eu/5.15.0.1/build/os_dep/linux/ioctl_cfg80211.c:540:9: error: too many arguments to function ‘cfg80211_ch_switch_notify’
  540 |         cfg80211_ch_switch_notify(adapter->pnetdev, &chdef, 0);
      |         ^~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /var/lib/dkms/rtl88x2eu/5.15.0.1/build/include/osdep_service_linux.h:98,
                 from /var/lib/dkms/rtl88x2eu/5.15.0.1/build/include/osdep_service.h:59,
                 from /var/lib/dkms/rtl88x2eu/5.15.0.1/build/include/drv_types.h:27,
                 from /var/lib/dkms/rtl88x2eu/5.15.0.1/build/os_dep/linux/ioctl_cfg80211.c:17:
./include/net/cfg80211.h:7702:6: note: declared here
 7702 | void cfg80211_ch_switch_notify(struct net_device *dev,
      |      ^~~~~~~~~~~~~~~~~~~~~~~~~
/var/lib/dkms/rtl88x2eu/5.15.0.1/build/os_dep/linux/ioctl_cfg80211.c: In function ‘rtw_cfg80211_indicate_connect’:
/var/lib/dkms/rtl88x2eu/5.15.0.1/build/os_dep/linux/ioctl_cfg80211.c:1222:26: error: ‘struct cfg80211_roam_info’ has no member named ‘links’
 1222 |                 roam_info.links[0].bssid = cur_network->network.MacAddress;
      |                          ^
  CC [M]  /var/lib/dkms/rtl88x2eu/5.15.0.1/build/os_dep/linux/rtw_rhashtable.o
/var/lib/dkms/rtl88x2eu/5.15.0.1/build/os_dep/linux/ioctl_cfg80211.c: At top level:
/var/lib/dkms/rtl88x2eu/5.15.0.1/build/os_dep/linux/ioctl_cfg80211.c:10981:20: error: initialization of ‘int (*)(struct wiphy *, struct net_device *, u8,  bool,  const u8 *, struct key_params *)’ {aka ‘int (*)(struct wiphy *, struct net_device *, unsigned char,  _Bool,  const unsigned char *, struct key_params *)’} from incompatible pointer type ‘int (*)(struct wiphy *, struct net_device *, int,  u8,  bool,  const u8 *, struct key_params *)’ {aka ‘int (*)(struct wiphy *, struct net_device *, int,  unsigned char,  _Bool,  const unsigned char *, struct key_params *)’} [-Werror=incompatible-pointer-types]
10981 |         .add_key = cfg80211_rtw_add_key,
      |                    ^~~~~~~~~~~~~~~~~~~~
/var/lib/dkms/rtl88x2eu/5.15.0.1/build/os_dep/linux/ioctl_cfg80211.c:10981:20: note: (near initialization for ‘rtw_cfg80211_ops.add_key’)
/var/lib/dkms/rtl88x2eu/5.15.0.1/build/os_dep/linux/ioctl_cfg80211.c:10982:20: error: initialization of ‘int (*)(struct wiphy *, struct net_device *, u8,  bool,  const u8 *, void *, void (*)(void *, struct key_params *))’ {aka ‘int (*)(struct wiphy *, struct net_device *, unsigned char,  _Bool,  const unsigned char *, void *, void (*)(void *, struct key_params *))’} from incompatible pointer type ‘int (*)(struct wiphy *, struct net_device *, int,  u8,  bool,  const u8 *, void *, void (*)(void *, struct key_params *))’ {aka ‘int (*)(struct wiphy *, struct net_device *, int,  unsigned char,  _Bool,  const unsigned char *, void *, void (*)(void *, struct key_params *))’} [-Werror=incompatible-pointer-types]
10982 |         .get_key = cfg80211_rtw_get_key,
      |                    ^~~~~~~~~~~~~~~~~~~~
/var/lib/dkms/rtl88x2eu/5.15.0.1/build/os_dep/linux/ioctl_cfg80211.c:10982:20: note: (near initialization for ‘rtw_cfg80211_ops.get_key’)
/var/lib/dkms/rtl88x2eu/5.15.0.1/build/os_dep/linux/ioctl_cfg80211.c:10983:20: error: initialization of ‘int (*)(struct wiphy *, struct net_device *, u8,  bool,  const u8 *)’ {aka ‘int (*)(struct wiphy *, struct net_device *, unsigned char,  _Bool,  const unsigned char *)’} from incompatible pointer type ‘int (*)(struct wiphy *, struct net_device *, int,  u8,  bool,  const u8 *)’ {aka ‘int (*)(struct wiphy *, struct net_device *, int,  unsigned char,  _Bool,  const unsigned char *)’} [-Werror=incompatible-pointer-types]
10983 |         .del_key = cfg80211_rtw_del_key,
      |                    ^~~~~~~~~~~~~~~~~~~~
/var/lib/dkms/rtl88x2eu/5.15.0.1/build/os_dep/linux/ioctl_cfg80211.c:10983:20: note: (near initialization for ‘rtw_cfg80211_ops.del_key’)
/var/lib/dkms/rtl88x2eu/5.15.0.1/build/os_dep/linux/ioctl_cfg80211.c:10984:28: error: initialization of ‘int (*)(struct wiphy *, struct net_device *, u8,  bool,  bool)’ {aka ‘int (*)(struct wiphy *, struct net_device *, unsigned char,  _Bool,  _Bool)’} from incompatible pointer type ‘int (*)(struct wiphy *, struct net_device *, int,  u8,  bool,  bool)’ {aka ‘int (*)(struct wiphy *, struct net_device *, int,  unsigned char,  _Bool,  _Bool)’} [-Werror=incompatible-pointer-types]
10984 |         .set_default_key = cfg80211_rtw_set_default_key,
      |                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/var/lib/dkms/rtl88x2eu/5.15.0.1/build/os_dep/linux/ioctl_cfg80211.c:10984:28: note: (near initialization for ‘rtw_cfg80211_ops.set_default_key’)
/var/lib/dkms/rtl88x2eu/5.15.0.1/build/os_dep/linux/ioctl_cfg80211.c:10986:33: error: initialization of ‘int (*)(struct wiphy *, struct net_device *, u8)’ {aka ‘int (*)(struct wiphy *, struct net_device *, unsigned char)’} from incompatible pointer type ‘int (*)(struct wiphy *, struct net_device *, int,  u8)’ {aka ‘int (*)(struct wiphy *, struct net_device *, int,  unsigned char)’} [-Werror=incompatible-pointer-types]
10986 |         .set_default_mgmt_key = cfg80211_rtw_set_default_mgmt_key,
      |                                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/var/lib/dkms/rtl88x2eu/5.15.0.1/build/os_dep/linux/ioctl_cfg80211.c:10986:33: note: (near initialization for ‘rtw_cfg80211_ops.set_default_mgmt_key’)
/var/lib/dkms/rtl88x2eu/5.15.0.1/build/os_dep/linux/ioctl_cfg80211.c:11065:24: error: initialization of ‘int (*)(struct wiphy *, struct wireless_dev *, struct cfg80211_chan_def *)’ from incompatible pointer type ‘int (*)(struct wiphy *, struct wireless_dev *, unsigned int,  struct cfg80211_chan_def *)’ [-Werror=incompatible-pointer-types]
11065 |         .get_channel = cfg80211_rtw_get_channel,
      |                        ^~~~~~~~~~~~~~~~~~~~~~~~
/var/lib/dkms/rtl88x2eu/5.15.0.1/build/os_dep/linux/ioctl_cfg80211.c:11065:24: note: (near initialization for ‘rtw_cfg80211_ops.get_channel’)
  CC [M]  /var/lib/dkms/rtl88x2eu/5.15.0.1/build/os_dep/linux/rtw_radiotap.o
/var/lib/dkms/rtl88x2eu/5.15.0.1/build/os_dep/linux/ioctl_cfg80211.c: In function ‘rtw_wdev_unregister’:
/var/lib/dkms/rtl88x2eu/5.15.0.1/build/os_dep/linux/ioctl_cfg80211.c:11330:17: error: ‘struct wireless_dev’ has no member named ‘valid_links’
11330 |         if (wdev->valid_links && wdev->links[0].client.current_bss)
      |                 ^~
/var/lib/dkms/rtl88x2eu/5.15.0.1/build/os_dep/linux/ioctl_cfg80211.c:11330:38: error: ‘struct wireless_dev’ has no member named ‘links’
11330 |         if (wdev->valid_links && wdev->links[0].client.current_bss)
      |                                      ^~
cc1: some warnings being treated as errors
make[2]: *** [scripts/Makefile.build:295: /var/lib/dkms/rtl88x2eu/5.15.0.1/build/os_dep/linux/ioctl_cfg80211.o] Error 1
make[2]: *** Waiting for unfinished jobs....
make[1]: *** [Makefile:1912: /var/lib/dkms/rtl88x2eu/5.15.0.1/build] Error 2
make[1]: Leaving directory '/usr/src/linux-headers-5.15.148-tegra-ubuntu22.04_aarch64/3rdparty/canonical/linux-jammy/kernel-source'
make: *** [Makefile:2600: modules] Error 2

Confirm you read

Thanks in advance for any help!

@aepkolol
Copy link

I had this issue a while ago. I think the issue was jetpack does some weird kernel mods to cfg80211. When you go to compile the drivers, it has checks for what kernel version you have an adjusts some variables based on that. However the kernel patches nvidia added makes those checks useless. I spent way too long fixing that up to get it to compile.

I added the pre-compiled driver to this git https://github.com/aepkolol/jetson-8812eu

@jmssa
Copy link
Author

jmssa commented Apr 29, 2025

Thank you very much for your reply. Which version of Jetpack are you using? I tried to load the module with modprobe and got
modprobe: ERROR: could not insert '8812eu_jetson': Exec format error
Which I believe may be caused by the kernel version in which the driver was compiled being different from the one I am currently running, since dmseg outputs
8812eu: disagrees about version of symbol module_layout

It should be worth mentioning that I downgraded to Jetpack 6.1 since the original post for other reasons relating to pytorch.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants