Package Details: 8188eu-dkms v4.3.0.8_13968-15

Git Clone URL: https://aur.archlinux.org/8188eu-dkms.git (read-only, click to copy)
Package Base: 8188eu-dkms
Description: Driver for Realtek RTL8188EUS (RTL8188EUS, RTL8188ETV) WLAN
Upstream URL: http://www.realtek.com.tw/
Keywords: 8188ETV 8188EUS
Licenses: GPL
Submitter: kpr
Maintainer: kpr
Last Packager: kpr
Votes: 25
Popularity: 1.27
First Submitted: 2015-10-07 04:59
Last Updated: 2021-01-09 19:50

Latest Comments

1 2 3 4 Next › Last »

rdnvndr commented on 2021-01-09 11:03

Please add the patch for Linux 5.10 support:

diff --git a/core/efuse/rtw_efuse.c b/core/efuse/rtw_efuse.c
index 5d3f80af..364da671 100644
--- a/core/efuse/rtw_efuse.c
+++ b/core/efuse/rtw_efuse.c
@@ -1329,7 +1329,9 @@ void Rtw_Hal_ReadMACAddrFromFile(PADAPTER padapter)
 {
    u32 i;
    struct file *fp;
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(5,10,0))
    mm_segment_t fs;
+#endif
    u8 source_addr[18];
    loff_t pos = 0;
    u32 curtime = rtw_get_current_time();
@@ -1347,9 +1349,10 @@ void Rtw_Hal_ReadMACAddrFromFile(PADAPTER padapter)
        pEEPROM->bloadmac_fail_flag = _TRUE;
        DBG_871X("Error, wifi mac address file doesn't exist.\n");
    } else {
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(5,10,0))
        fs = get_fs();
        set_fs(KERNEL_DS);
-
+#endif
        DBG_871X("wifi mac address:\n");
        vfs_read(fp, source_addr, 18, &pos);
        source_addr[17] = ':';
@@ -1371,7 +1374,9 @@ void Rtw_Hal_ReadMACAddrFromFile(PADAPTER padapter)
            DBG_871X("%02x \n", pEEPROM->mac_addr[i]);
        }
        DBG_871X("\n");
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(5,10,0))
        set_fs(fs);
+#endif
        pEEPROM->bloadmac_fail_flag = _FALSE;
        filp_close(fp, NULL);
    }
@@ -1397,7 +1402,9 @@ u32 Rtw_Hal_readPGDataFromConfigFile(PADAPTER padapter)
 {
    u32 i;
    struct file *fp;
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(5,10,0))
    mm_segment_t fs;
+#endif
    u8 temp[3];
    loff_t pos = 0;
    EEPROM_EFUSE_PRIV *pEEPROM = GET_EEPROM_EFUSE_PRIV(padapter);
@@ -1412,10 +1419,10 @@ u32 Rtw_Hal_readPGDataFromConfigFile(PADAPTER   padapter)
        DBG_871X("Error, Efuse configure file doesn't exist.\n");
        return _FAIL;
    }
-
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(5,10,0))
    fs = get_fs();
    set_fs(KERNEL_DS);
-
+#endif
    DBG_871X("Efuse configure file:\n");
    for (i=0; i< EFUSE_MAP_SIZE  ; i++) {
        vfs_read(fp, temp, 2, &pos);
@@ -1424,8 +1431,9 @@ u32 Rtw_Hal_readPGDataFromConfigFile(PADAPTER padapter)
        DBG_871X("%02X \n", PROMContent[i]);
    }
    DBG_871X("\n");
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(5,10,0))
    set_fs(fs);
-
+#endif
    filp_close(fp, NULL);

    pEEPROM->bloadfile_fail_flag = _FALSE;
diff --git a/core/rtw_wlan_util.c b/core/rtw_wlan_util.c
index f8e3f609..e3c11811 100644
--- a/core/rtw_wlan_util.c
+++ b/core/rtw_wlan_util.c
@@ -3657,7 +3657,9 @@ int rtw_dev_nlo_info_set(struct pno_nlo_info *nlo_info, pno_ssid_t* ssid,

    int i = 0;
    struct file *fp;
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(5,10,0))
    mm_segment_t fs;
+#endif
    loff_t pos = 0;
    u8 *source = NULL;
    long len = 0;
@@ -3689,10 +3691,10 @@ int rtw_dev_nlo_info_set(struct pno_nlo_info *nlo_info, pno_ssid_t* ssid,
        DBG_871X("Error, cipher array using default value.\n");
        return 0;
    }
-
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(5,10,0))
    fs = get_fs();
    set_fs(KERNEL_DS);
-
+#endif
    source = rtw_zmalloc(2048);

    if (source != NULL) {
@@ -3700,8 +3702,9 @@ int rtw_dev_nlo_info_set(struct pno_nlo_info *nlo_info, pno_ssid_t* ssid,
        rtw_parse_cipher_list(nlo_info, source);
        rtw_mfree(source, 2048);
    }
-
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(5,10,0))
    set_fs(fs);
+#endif
    filp_close(fp, NULL);

    DBG_871X("-%s-\n", __func__);
diff --git a/hal/rtl8188e/usb/usb_halinit.c b/hal/rtl8188e/usb/usb_halinit.c
index 366b4bd1..94d6bb76 100644
--- a/hal/rtl8188e/usb/usb_halinit.c
+++ b/hal/rtl8188e/usb/usb_halinit.c
@@ -2499,7 +2499,9 @@ static u32 Hal_readPGDataFromConfigFile(
 {
    u32 i;
    struct file *fp;
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(5,10,0))
    mm_segment_t fs;
+#endif
    u8 temp[3];
    loff_t pos = 0;
    EEPROM_EFUSE_PRIV *pEEPROM = GET_EEPROM_EFUSE_PRIV(padapter);
@@ -2514,10 +2516,10 @@ static u32 Hal_readPGDataFromConfigFile(
        DBG_871X("Error, Efuse configure file doesn't exist.\n");
        return _FAIL;
    }
-
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(5,10,0))
    fs = get_fs();
    set_fs(KERNEL_DS);
-
+#endif
    DBG_871X("Efuse configure file:\n");
    for (i=0; i<HWSET_MAX_SIZE_88E; i++) {
        vfs_read(fp, temp, 2, &pos);
@@ -2526,8 +2528,9 @@ static u32 Hal_readPGDataFromConfigFile(
        DBG_871X("%02X \n", PROMContent[i]);
    }
    DBG_871X("\n");
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(5,10,0))
    set_fs(fs);
-
+#endif
    filp_close(fp, NULL);

    pEEPROM->bloadfile_fail_flag = _FALSE;
@@ -2542,7 +2545,9 @@ Hal_ReadMACAddrFromFile_8188EU(
 {
    u32 i;
    struct file *fp;
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(5,10,0))
    mm_segment_t fs;
+#endif
    u8 source_addr[18];
    loff_t pos = 0;
    u32 curtime = rtw_get_current_time();
@@ -2560,9 +2565,10 @@ Hal_ReadMACAddrFromFile_8188EU(
        pEEPROM->bloadmac_fail_flag = _TRUE;
        DBG_871X("Error, wifi mac address file doesn't exist.\n");
    } else {
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(5,10,0))
        fs = get_fs();
        set_fs(KERNEL_DS);
-
+#endif
        DBG_871X("wifi mac address:\n");
        vfs_read(fp, source_addr, 18, &pos);
        source_addr[17] = ':';
@@ -2584,7 +2590,9 @@ Hal_ReadMACAddrFromFile_8188EU(
            DBG_871X("%02x \n", pEEPROM->mac_addr[i]);
        }
        DBG_871X("\n");
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(5,10,0))
        set_fs(fs);
+#endif
        pEEPROM->bloadmac_fail_flag = _FALSE;
        filp_close(fp, NULL);
    }
diff --git a/os_dep/osdep_service.c b/os_dep/osdep_service.c
index 8c21b7eb..96d47ec6 100644
--- a/os_dep/osdep_service.c
+++ b/os_dep/osdep_service.c
@@ -1930,7 +1930,9 @@ static int isFileReadable(char *path)
 { 
    struct file *fp;
    int ret = 0;
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(5,10,0))
    mm_segment_t oldfs;
+#endif
    char buf;

    fp=filp_open(path, O_RDONLY, 0); 
@@ -1938,12 +1940,14 @@ static int isFileReadable(char *path)
        ret = PTR_ERR(fp);
    }
    else {
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(5,10,0))
        oldfs = get_fs(); set_fs(KERNEL_DS);
-       
+#endif     
        if(1!=readFile(fp, &buf, 1))
            ret = PTR_ERR(fp);
-       
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(5,10,0))  
        set_fs(oldfs);
+#endif
        filp_close(fp,NULL);
    }   
    return ret;
@@ -1959,16 +1963,21 @@ static int isFileReadable(char *path)
 static int retriveFromFile(char *path, u8* buf, u32 sz)
 {
    int ret =-1;
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(5,10,0))
    mm_segment_t oldfs;
+#endif
    struct file *fp;

    if(path && buf) {
        if( 0 == (ret=openFile(&fp,path, O_RDONLY, 0)) ){
            DBG_871X("%s openFile path:%s fp=%p\n",__FUNCTION__, path ,fp);
-
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(5,10,0))
            oldfs = get_fs(); set_fs(KERNEL_DS);
+#endif
            ret=readFile(fp, buf, sz);
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(5,10,0))
            set_fs(oldfs);
+#endif
            closeFile(fp);

            DBG_871X("%s readFile, ret:%d\n",__FUNCTION__, ret);
@@ -1993,16 +2002,21 @@ static int retriveFromFile(char *path, u8* buf, u32 sz)
 static int storeToFile(char *path, u8* buf, u32 sz)
 {
    int ret =0;
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(5,10,0))
    mm_segment_t oldfs;
+#endif
    struct file *fp;

    if(path && buf) {
        if( 0 == (ret=openFile(&fp, path, O_CREAT|O_WRONLY, 0666)) ) {
            DBG_871X("%s openFile path:%s fp=%p\n",__FUNCTION__, path ,fp);
-
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(5,10,0))
            oldfs = get_fs(); set_fs(KERNEL_DS);
+#endif
            ret=writeFile(fp, buf, sz);
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(5,10,0))
            set_fs(oldfs);
+#endif
            closeFile(fp);

            DBG_871X("%s writeFile, ret:%d\n",__FUNCTION__, ret);

pitbuster commented on 2020-08-20 00:26

After updating to 5.8.1 my wifi card is note being recognized anymore (not even shows in lsusb). It works fine on Windows, so I suspect on something broke on the driver side. Anyone else with a similar problem?

rdnvndr commented on 2020-08-16 09:39

Please add the patch for Linux 5.8 support:

--- core/rtw_security.c
+++ core/rtw_security.c
@@ -2281,7 +2281,7 @@ BIP_exit:

 #ifndef PLATFORM_FREEBSD
 /* compress 512-bits */
-static int sha256_compress(struct sha256_state *md, unsigned char *buf)
+static int sha256_compress(struct rtw_sha256_state *md, unsigned char *buf)
 {
    u32 S[8], W[64], t0, t1;
    u32 t;
@@ -2323,7 +2323,7 @@ static int sha256_compress(struct sha256_state *md, unsigned char *buf)
 }

 /* Initialize the hash state */
-static void sha256_init(struct sha256_state *md)
+static void sha256_init(struct rtw_sha256_state *md)
 {
    md->curlen = 0;
    md->length = 0;
@@ -2344,7 +2344,7 @@ static void sha256_init(struct sha256_state *md)
    @param inlen  The length of the data (octets)
    @return CRYPT_OK if successful
 */
-static int sha256_process(struct sha256_state *md, unsigned char *in,
+static int sha256_process(struct rtw_sha256_state *md, unsigned char *in,
              unsigned long inlen)
 {
    unsigned long n;
@@ -2385,7 +2385,7 @@ static int sha256_process(struct sha256_state *md, unsigned char *in,
    @param out [out] The destination of the hash (32 bytes)
    @return CRYPT_OK if successful
 */
-static int sha256_done(struct sha256_state *md, unsigned char *out)
+static int sha256_done(struct rtw_sha256_state *md, unsigned char *out)
 {
    int i;

@@ -2437,7 +2437,7 @@ static int sha256_done(struct sha256_state *md, unsigned char *out)
 static int sha256_vector(size_t num_elem, u8 *addr[], size_t *len,
          u8 *mac)
 {
-   struct sha256_state ctx;
+   struct rtw_sha256_state ctx;
    size_t i;

    sha256_init(&ctx);
--- include/rtw_security.h
+++ include/rtw_security.h
@@ -235,7 +235,7 @@ struct security_priv
 #endif /* DBG_SW_SEC_CNT */
 };

-struct sha256_state {
+struct rtw_sha256_state {
    u64 length;
    u32 state[8], curlen;
    u8 buf[64];

JanMa commented on 2020-04-05 16:44

Please add the following patch for Linux 5.6 support

diff --git a/os_dep/linux/rtw_proc.c b/os_dep/linux/rtw_proc.c
index 9ecc542..14051bc 100644
--- a/os_dep/linux/rtw_proc.c
+++ b/os_dep/linux/rtw_proc.c
@@ -63,9 +63,15 @@ inline struct proc_dir_entry *rtw_proc_create_dir(const char *name, struct proc_
    return entry;
 }

+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,6,0))
+inline struct proc_dir_entry *rtw_proc_create_entry(const char *name, struct proc_dir_entry *parent, 
+   const struct proc_ops *fops, void * data)
+{
+#else
 inline struct proc_dir_entry *rtw_proc_create_entry(const char *name, struct proc_dir_entry *parent, 
    const struct file_operations *fops, void * data)
 {
+#endif
    struct proc_dir_entry *entry;

 #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26))
@@ -165,6 +171,15 @@ static ssize_t rtw_drv_proc_write(struct file *file, const char __user *buffer,
    return -EROFS;
 }

+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,6,0))
+static const struct proc_ops rtw_drv_proc_fops = {
+   .proc_open = rtw_drv_proc_open,
+   .proc_read = seq_read,
+   .proc_write = rtw_drv_proc_write,
+   .proc_lseek = seq_lseek,
+   .proc_release = single_release,
+};
+#else
 static const struct file_operations rtw_drv_proc_fops = {
    .owner = THIS_MODULE,
    .open = rtw_drv_proc_open,
@@ -173,6 +188,7 @@ static const struct file_operations rtw_drv_proc_fops = {
    .release = single_release,
    .write = rtw_drv_proc_write,
 };
+#endif

 int rtw_drv_proc_init(void)
 {
@@ -532,6 +548,15 @@ static ssize_t rtw_adapter_proc_write(struct file *file, const char __user *buff
    return -EROFS;
 }

+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,6,0))
+static const struct proc_ops rtw_adapter_proc_fops = {
+  .proc_open = rtw_adapter_proc_open,
+  .proc_read = seq_read,
+  .proc_write = rtw_adapter_proc_write,
+  .proc_lseek = seq_lseek,
+  .proc_release = single_release,
+};
+#else
 static const struct file_operations rtw_adapter_proc_fops = {
    .owner = THIS_MODULE,
    .open = rtw_adapter_proc_open,
@@ -540,6 +565,7 @@ static const struct file_operations rtw_adapter_proc_fops = {
    .release = single_release,
    .write = rtw_adapter_proc_write,
 };
+#endif

 int proc_get_odm_dbg_comp(struct seq_file *m, void *v)
 {
@@ -710,6 +736,15 @@ static ssize_t rtw_odm_proc_write(struct file *file, const char __user *buffer,
    return -EROFS;
 }

+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,6,0))
+static const struct proc_ops rtw_odm_proc_fops = {
+   .proc_open = rtw_odm_proc_open,
+   .proc_read = seq_read,
+   .proc_write = rtw_odm_proc_write,
+   .proc_lseek = seq_lseek,
+   .proc_release = single_release,
+};
+#else
 static const struct file_operations rtw_odm_proc_fops = {
    .owner = THIS_MODULE,
    .open = rtw_odm_proc_open,
@@ -718,6 +753,7 @@ static const struct file_operations rtw_odm_proc_fops = {
    .release = single_release,
    .write = rtw_odm_proc_write,
 };
+#endif

 struct proc_dir_entry *rtw_odm_proc_init(struct net_device *dev)
 {

lpapp commented on 2019-12-06 11:29

Hi, why do you pull this from dropbox? It should be something more official/and formal....

a36233 commented on 2019-06-19 10:19

Please add linux-headers as deps make and run.

kubrick commented on 2019-05-16 08:52

Please add the following patch for linux-5.1:

diff -Naur 8188eu-v4.3.0.8_13968/os_dep/osdep_service.c 8188eu-v4.3.0.8_13968-new/os_dep/osdep_service.c
--- 8188eu-v4.3.0.8_13968/os_dep/osdep_service.c    2015-04-17 08:54:43.000000000 +0200
+++ 8188eu-v4.3.0.8_13968-new/os_dep/osdep_service.c    2019-05-16 10:45:51.002640677 +0200
@@ -1938,7 +1938,7 @@
        ret = PTR_ERR(fp);
    }
    else {
-       oldfs = get_fs(); set_fs(get_ds());
+       oldfs = get_fs(); set_fs(KERNEL_DS);

        if(1!=readFile(fp, &buf, 1))
            ret = PTR_ERR(fp);
@@ -1966,7 +1966,7 @@
        if( 0 == (ret=openFile(&fp,path, O_RDONLY, 0)) ){
            DBG_871X("%s openFile path:%s fp=%p\n",__FUNCTION__, path ,fp);

-           oldfs = get_fs(); set_fs(get_ds());
+           oldfs = get_fs(); set_fs(KERNEL_DS);
            ret=readFile(fp, buf, sz);
            set_fs(oldfs);
            closeFile(fp);
@@ -2000,7 +2000,7 @@
        if( 0 == (ret=openFile(&fp, path, O_CREAT|O_WRONLY, 0666)) ) {
            DBG_871X("%s openFile path:%s fp=%p\n",__FUNCTION__, path ,fp);

-           oldfs = get_fs(); set_fs(get_ds());
+           oldfs = get_fs(); set_fs(KERNEL_DS);
            ret=writeFile(fp, buf, sz);
            set_fs(oldfs);
            closeFile(fp);

Sunday commented on 2018-12-07 15:29

Hi folks, just to let you know. I have submitted a new version of a PKGBUILD for a version of this driver available at https://github.com/lwfinger/rtl8188eu: 8188eu-dkms-git

With a bit of extra work (patching kernel), It even functions as hostapd.

Pernat1y commented on 2018-10-03 08:26

Have issue on 4.18.11-1-ARCH (aarch64) (full log is here: http://pasted.co/a893e202 )

/var/lib/dkms/8188eu/v4.3.0.8_13968/build/core/rtw_br_ext.c:1447:28: error: implicit declaration of function 'csum_ipv6_magic'; did you mean 'csum_tcpudp_magic'? [-Werror=implicit-function-declaration] hdr->icmp6_cksum = csum_ipv6_magic(&iph->saddr, &iph->daddr, ^~~~~~~~~~~~~~~ csum_tcpudp_magic

oniony commented on 2018-09-19 19:41

I'm getting the following build errors when upgrading package linux 4.18.8. Any ideas?

Edit: seems this may be the same problem as @zhengyi5403 is having, as from what I can tell this data field was removed in Linux 4.15.0.

make: Entering directory '/usr/lib/modules/4.18.8-arch1-1-ARCH/build'
CC [M]  /var/lib/dkms/8188eu/v4.3.0.8_13968/build/core/rtw_cmd.o
In file included from 
/var/lib/dkms/8188eu/v4.3.0.8_13968/build/include/osdep_service.h:41,
                from 
/var/lib/dkms/8188eu/v4.3.0.8_13968/build/include/drv_types.h:32,
                from 
/var/lib/dkms/8188eu/v4.3.0.8_13968/build/core/rtw_cmd.c:22:
/var/lib/dkms/8188eu/v4.3.0.8_13968/build/include/osdep_service_linux.h: In function ‘_init_timer’:
/var/lib/dkms/8188eu/v4.3.0.8_13968/build/include/osdep_service_linux.h:261:8: error: ‘_timer’ {aka ‘struct timer_list’} has no member named ‘data’
ptimer->data = (unsigned long)cntx;
    ^~

/var/lib/dkms/8188eu/v4.3.0.8_13968/build/include/osdep_service_linux.h:262:2: error: implicit declaration of function ‘init_timer’; did you mean ‘_init_timer’? [-Werror=implicit-function-declaration]
init_timer(ptimer);
^~~~~~~~~~
_init_timer
In file included from 
/var/lib/dkms/8188eu/v4.3.0.8_13968/build/include/drv_types.h:32,
            from 
/var/lib/dkms/8188eu/v4.3.0.8_13968/build/core/rtw_cmd.c:22:
/var/lib/dkms/8188eu/v4.3.0.8_13968/build/include/osdep_service.h: In function ‘thread_enter’:
/var/lib/dkms/8188eu/v4.3.0.8_13968/build/include/osdep_service.h:342:2: error: implicit declaration of function ‘allow_signal’; did you mean ‘do_signal’? [-Werror=implicit-function-declaration]
allow_signal(SIGTERM);
^~~~~~~~~~~~
do_signal
/var/lib/dkms/8188eu/v4.3.0.8_13968/build/include/osdep_service.h: In function ‘flush_signals_thread’:
/var/lib/dkms/8188eu/v4.3.0.8_13968/build/include/osdep_service.h:352:6: error: implicit declaration of function ‘signal_pending’; did you mean ‘timer_pending’? [-Werror=implicit- function-declaration]
if (signal_pending (current))
    ^~~~~~~~~~~~~~
    timer_pending
/var/lib/dkms/8188eu/v4.3.0.8_13968/build/include/osdep_service.h:354: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[1]: *** [scripts/Makefile.build:318: /var/lib/dkms/8188eu/v4.3.0.8_13968/build/core/rtw_cmd.o] Error 1
make: *** [Makefile:1504: _module_/var/lib/dkms/8188eu/v4.3.0.8_13968/build] Error 2
make: Leaving directory '/usr/lib/modules/4.18.8-arch1-1-ARCH/build'