Installing EDGE WiFi module on linux

Hello,

I used to run EDGE with a Windows ground station without problems, however now I switched to a linux and couldn’t follow to quick start guide.

When I try to install the WiFi driver with to command:
sudo ./install-rtl8812au

I got the following error message:

gabriel@gabriel-note:~/Downloads/edge/8812au$ sudo ./install-rtl8812au
[sudo] senha para gabriel:
EFI variables are not supported on this system
Building the module
make ARCH=x86_64 CROSS_COMPILE= -C /lib/modules/5.3.0-26-generic/build M=/home/gabriel/Downloads/edge/8812au modules
make[1]: Entering directory ‘/usr/src/linux-headers-5.3.0-26-generic’
CC [M] /home/gabriel/Downloads/edge/8812au/core/rtw_cmd.o
CC [M] /home/gabriel/Downloads/edge/8812au/core/rtw_security.o
CC [M] /home/gabriel/Downloads/edge/8812au/core/rtw_debug.o
CC [M] /home/gabriel/Downloads/edge/8812au/core/rtw_io.o
In file included from /home/gabriel/Downloads/edge/8812au/include/osdep_service.h:41,
from /home/gabriel/Downloads/edge/8812au/include/drv_types.h:32,
from /home/gabriel/Downloads/edge/8812au/core/rtw_io.c:52:
/home/gabriel/Downloads/edge/8812au/include/osdep_service_linux.h: In function ‘_init_timer’:
/home/gabriel/Downloads/edge/8812au/include/osdep_service_linux.h:277:8: error: ‘_timer’ {aka ‘struct timer_list’} has no member named ‘data’
277 | ptimer->data = (unsigned long)cntx;
| ^~
In file included from /home/gabriel/Downloads/edge/8812au/include/osdep_service.h:41,
from /home/gabriel/Downloads/edge/8812au/include/drv_types.h:32,
from /home/gabriel/Downloads/edge/8812au/core/rtw_cmd.c:22:
/home/gabriel/Downloads/edge/8812au/include/osdep_service_linux.h: In function ‘_init_timer’:
/home/gabriel/Downloads/edge/8812au/include/osdep_service_linux.h:277:8: error: ‘_timer’ {aka ‘struct timer_list’} has no member named ‘data’
277 | ptimer->data = (unsigned long)cntx;
| ^~
/home/gabriel/Downloads/edge/8812au/include/osdep_service_linux.h:278:2: error: implicit declaration of function ‘init_timer’; did you mean ‘_init_timer’? [-Werror=implicit-function-declaration]
278 | init_timer(ptimer);
| ^~~~~~~~~~
| _init_timer
/home/gabriel/Downloads/edge/8812au/include/osdep_service_linux.h:278:2: error: implicit declaration of function ‘init_timer’; did you mean ‘_init_timer’? [-Werror=implicit-function-declaration]
278 | init_timer(ptimer);
| ^~~~~~~~~~
| _init_timer
In file included from /home/gabriel/Downloads/edge/8812au/include/drv_types.h:35,
from /home/gabriel/Downloads/edge/8812au/core/rtw_io.c:52:
/home/gabriel/Downloads/edge/8812au/include/wifi.h: At top level:
/home/gabriel/Downloads/edge/8812au/include/wifi.h:1019: warning: “IEEE80211_MAX_AMPDU_BUF” redefined
1019 | #define IEEE80211_MAX_AMPDU_BUF 0x40
|
In file included from ./include/net/cfg80211.h:21,
from /home/gabriel/Downloads/edge/8812au/include/osdep_service_linux.h:91,
from /home/gabriel/Downloads/edge/8812au/include/osdep_service.h:41,
from /home/gabriel/Downloads/edge/8812au/include/drv_types.h:32,
from /home/gabriel/Downloads/edge/8812au/core/rtw_io.c:52:
./include/linux/ieee80211.h:1441: note: this is the location of the previous definition
1441 | #define IEEE80211_MAX_AMPDU_BUF 0x100
|
In file included from /home/gabriel/Downloads/edge/8812au/include/drv_types.h:35,
from /home/gabriel/Downloads/edge/8812au/core/rtw_cmd.c:22:
/home/gabriel/Downloads/edge/8812au/include/wifi.h: At top level:
/home/gabriel/Downloads/edge/8812au/include/wifi.h:1019: warning: “IEEE80211_MAX_AMPDU_BUF” redefined
1019 | #define IEEE80211_MAX_AMPDU_BUF 0x40
|
In file included from ./include/net/cfg80211.h:21,
from /home/gabriel/Downloads/edge/8812au/include/osdep_service_linux.h:91,
from /home/gabriel/Downloads/edge/8812au/include/osdep_service.h:41,
from /home/gabriel/Downloads/edge/8812au/include/drv_types.h:32,
from /home/gabriel/Downloads/edge/8812au/core/rtw_cmd.c:22:
./include/linux/ieee80211.h:1441: note: this is the location of the previous definition
1441 | #define IEEE80211_MAX_AMPDU_BUF 0x100
|
In file included from /home/gabriel/Downloads/edge/8812au/include/osdep_service.h:41,
from /home/gabriel/Downloads/edge/8812au/include/drv_types.h:32,
from /home/gabriel/Downloads/edge/8812au/core/rtw_debug.c:22:
/home/gabriel/Downloads/edge/8812au/include/osdep_service_linux.h: In function ‘_init_timer’:
/home/gabriel/Downloads/edge/8812au/include/osdep_service_linux.h:277:8: error: ‘_timer’ {aka ‘struct timer_list’} has no member named ‘data’
277 | ptimer->data = (unsigned long)cntx;
| ^~
In file included from /home/gabriel/Downloads/edge/8812au/include/osdep_service.h:41,
from /home/gabriel/Downloads/edge/8812au/include/drv_types.h:32,
from /home/gabriel/Downloads/edge/8812au/core/rtw_security.c:22:
/home/gabriel/Downloads/edge/8812au/include/osdep_service_linux.h: In function ‘_init_timer’:
/home/gabriel/Downloads/edge/8812au/include/osdep_service_linux.h:277:8: error: ‘_timer’ {aka ‘struct timer_list’} has no member named ‘data’
277 | ptimer->data = (unsigned long)cntx;
| ^~
/home/gabriel/Downloads/edge/8812au/include/osdep_service_linux.h:278:2: error: implicit declaration of function ‘init_timer’; did you mean ‘_init_timer’? [-Werror=implicit-function-declaration]
278 | init_timer(ptimer);
| ^~~~~~~~~~
| _init_timer
/home/gabriel/Downloads/edge/8812au/include/osdep_service_linux.h:278:2: error: implicit declaration of function ‘init_timer’; did you mean ‘_init_timer’? [-Werror=implicit-function-declaration]
278 | init_timer(ptimer);
| ^~~~~~~~~~
| _init_timer
In file included from /home/gabriel/Downloads/edge/8812au/include/drv_types.h:35,
from /home/gabriel/Downloads/edge/8812au/core/rtw_debug.c:22:
/home/gabriel/Downloads/edge/8812au/include/wifi.h: At top level:
/home/gabriel/Downloads/edge/8812au/include/wifi.h:1019: warning: “IEEE80211_MAX_AMPDU_BUF” redefined
1019 | #define IEEE80211_MAX_AMPDU_BUF 0x40
|
In file included from ./include/net/cfg80211.h:21,
from /home/gabriel/Downloads/edge/8812au/include/osdep_service_linux.h:91,
from /home/gabriel/Downloads/edge/8812au/include/osdep_service.h:41,
from /home/gabriel/Downloads/edge/8812au/include/drv_types.h:32,
from /home/gabriel/Downloads/edge/8812au/core/rtw_debug.c:22:
./include/linux/ieee80211.h:1441: note: this is the location of the previous definition
1441 | #define IEEE80211_MAX_AMPDU_BUF 0x100
|
In file included from /home/gabriel/Downloads/edge/8812au/include/drv_types.h:35,
from /home/gabriel/Downloads/edge/8812au/core/rtw_security.c:22:
/home/gabriel/Downloads/edge/8812au/include/wifi.h: At top level:
/home/gabriel/Downloads/edge/8812au/include/wifi.h:1019: warning: “IEEE80211_MAX_AMPDU_BUF” redefined
1019 | #define IEEE80211_MAX_AMPDU_BUF 0x40
|
In file included from ./include/net/cfg80211.h:21,
from /home/gabriel/Downloads/edge/8812au/include/osdep_service_linux.h:91,
from /home/gabriel/Downloads/edge/8812au/include/osdep_service.h:41,
from /home/gabriel/Downloads/edge/8812au/include/drv_types.h:32,
from /home/gabriel/Downloads/edge/8812au/core/rtw_security.c:22:
./include/linux/ieee80211.h:1441: note: this is the location of the previous definition
1441 | #define IEEE80211_MAX_AMPDU_BUF 0x100
|
cc1: some warnings being treated as errors
make[2]: *** [scripts/Makefile.build:290: /home/gabriel/Downloads/edge/8812au/core/rtw_io.o] Error 1
make[2]: ** Esperando que outros processos terminem.
/home/gabriel/Downloads/edge/8812au/core/rtw_debug.c: In function ‘dump_drv_version’:
/home/gabriel/Downloads/edge/8812au/core/rtw_debug.c:71:64: warning: macro “DATE” might prevent reproducible builds [-Wdate-time]
71 | DBG_871X_SEL_NL(sel, “build time: %s %s\n”, DATE, TIME);
| ^
In file included from /home/gabriel/Downloads/edge/8812au/include/drv_types.h:65,
from /home/gabriel/Downloads/edge/8812au/core/rtw_debug.c:22:
/home/gabriel/Downloads/edge/8812au/core/rtw_debug.c:71:46: warning: macro “TIME” might prevent reproducible builds [-Wdate-time]
71 | DBG_871X_SEL_NL(sel, “build time: %s %s\n”, DATE, TIME);
| ^~~~~~~~
/home/gabriel/Downloads/edge/8812au/include/rtw_debug.h:205:43: note: in definition of macro ‘DBG_871X_LEVEL’
205 | _dbgdump(DRIVER_PREFIX"ERROR " fmt, ##arg);
| ^~~
/home/gabriel/Downloads/edge/8812au/core/rtw_debug.c:71:2: note: in expansion of macro ‘DBG_871X_SEL_NL’
71 | DBG_871X_SEL_NL(sel, “build time: %s %s\n”, DATE, TIME);
| ^~~~~~~~~~~~~~~
/home/gabriel/Downloads/edge/8812au/core/rtw_debug.c:71:56: warning: macro “DATE” might prevent reproducible builds [-Wdate-time]
71 | DBG_871X_SEL_NL(sel, “build time: %s %s\n”, DATE, TIME);
| ^~~~~~~~
/home/gabriel/Downloads/edge/8812au/include/rtw_debug.h:205:43: note: in definition of macro ‘DBG_871X_LEVEL’
205 | _dbgdump(DRIVER_PREFIX"ERROR " fmt, ##arg);
| ^~~
/home/gabriel/Downloads/edge/8812au/core/rtw_debug.c:71:2: note: in expansion of macro ‘DBG_871X_SEL_NL’
71 | DBG_871X_SEL_NL(sel, “build time: %s %s\n”, DATE, TIME);
| ^~~~~~~~~~~~~~~
/home/gabriel/Downloads/edge/8812au/core/rtw_debug.c:71:46: warning: macro “TIME” might prevent reproducible builds [-Wdate-time]
71 | DBG_871X_SEL_NL(sel, “build time: %s %s\n”, DATE, TIME);
| ^~~~~~~~
/home/gabriel/Downloads/edge/8812au/include/rtw_debug.h:207:35: note: in definition of macro ‘DBG_871X_LEVEL’
207 | _dbgdump(DRIVER_PREFIX fmt, ##arg);
| ^~~
/home/gabriel/Downloads/edge/8812au/core/rtw_debug.c:71:2: note: in expansion of macro ‘DBG_871X_SEL_NL’
71 | DBG_871X_SEL_NL(sel, “build time: %s %s\n”, DATE, TIME);
| ^~~~~~~~~~~~~~~
/home/gabriel/Downloads/edge/8812au/core/rtw_debug.c:71:56: warning: macro “DATE” might prevent reproducible builds [-Wdate-time]
71 | DBG_871X_SEL_NL(sel, “build time: %s %s\n”, DATE, TIME);
| ^~~~~~~~
/home/gabriel/Downloads/edge/8812au/include/rtw_debug.h:207:35: note: in definition of macro ‘DBG_871X_LEVEL’
207 | _dbgdump(DRIVER_PREFIX fmt, ##arg);
| ^~~
/home/gabriel/Downloads/edge/8812au/core/rtw_debug.c:71:2: note: in expansion of macro ‘DBG_871X_SEL_NL’
71 | DBG_871X_SEL_NL(sel, “build time: %s %s\n”, DATE, TIME);
| ^~~~~~~~~~~~~~~
/home/gabriel/Downloads/edge/8812au/core/rtw_debug.c:71:46: warning: macro “TIME” might prevent reproducible builds [-Wdate-time]
71 | DBG_871X_SEL_NL(sel, “build time: %s %s\n”, DATE, TIME);
| ^~~~~~~~
/home/gabriel/Downloads/edge/8812au/include/rtw_debug.h:242:25: note: in definition of macro ‘DBG_871X_SEL_NL’
242 | _seqdump(sel, fmt, ##arg) /rtw_warn_on(1)/;
| ^~~
/home/gabriel/Downloads/edge/8812au/core/rtw_security.c: In function ‘aes_cipher’:
/home/gabriel/Downloads/edge/8812au/core/rtw_security.c:1598:5: warning: this ‘for’ clause does not guard… [-Wmisleading-indentation]
1598 | for (j = 0; j < 8; j++)
| ^~~
/home/gabriel/Downloads/edge/8812au/core/rtw_security.c:1601:2: note: …this statement, but the latter is misleadingly indented as if it were guarded by the ‘for’
1601 | payload_index = hdrlen + 8;
| ^~~~~~~~~~~~~
/home/gabriel/Downloads/edge/8812au/core/rtw_security.c: In function ‘aes_decipher’:
/home/gabriel/Downloads/edge/8812au/core/rtw_security.c:1984:5: warning: this ‘for’ clause does not guard… [-Wmisleading-indentation]
1984 | for (j = 0; j < 8; j++)
| ^~~
/home/gabriel/Downloads/edge/8812au/core/rtw_security.c:1987:2: note: …this statement, but the latter is misleadingly indented as if it were guarded by the ‘for’
1987 | payload_index = hdrlen + 8;
| ^~~~~~~~~~~~~
cc1: some warnings being treated as errors
make[2]: *** [scripts/Makefile.build:290: /home/gabriel/Downloads/edge/8812au/core/rtw_security.o] Error 1
cc1: some warnings being treated as errors
make[2]: *** [scripts/Makefile.build:290: /home/gabriel/Downloads/edge/8812au/core/rtw_cmd.o] Error 1
cc1: some warnings being treated as errors
make[2]: *** [scripts/Makefile.build:290: /home/gabriel/Downloads/edge/8812au/core/rtw_debug.o] Error 1
make[1]: *** [Makefile:1655: module/home/gabriel/Downloads/edge/8812au] Error 2
make[1]: Leaving directory ‘/usr/src/linux-headers-5.3.0-26-generic’
make: *** [Makefile:1717: modules] Error 2

Adding udev rule for 8812au device

Installing the module…
install -p -m 644 8812au.ko /lib/modules/5.3.0-26-generic/kernel/drivers/net/wireless/
install: não foi possível obter estado de ‘8812au.ko’: Arquivo ou diretório inexistente
make: *** [Makefile:1723: install] Error 1
modprobe: FATAL: Module 8812au not found in directory /lib/modules/5.3.0-26-generic
gabriel@gabriel-note:~/Downloads/edge/8812au$

As you can see, the problem is related to EFI variables. I’m no linux expert and I know it’s related to my PC, not EMLID software. Any ideas of how I should procede?

I am running Ubuntu 19.10 64 bits, already installed and runned QGroundControl, no issues with linux OS so far.

You should be able to install that driver with your distro’s package manager, e.g. Debian has the firmware-realtek package in their non-free repo, and that is probably also in Ubuntu, Mint, and several others. Your install command might be something like this:
sudo apt-get update
sudo apt-get install firmware-realtek

If the distro’s driver doesn’t work for some reason, the following link helped one user, but you have to clone the driver from a GIT repo and compile it (instructions provided):

3 Likes

This topic was automatically closed 100 days after the last reply. New replies are no longer allowed.