Jump to content

Module 8192cu.ko not working in Armbian >= 5.14


rgb

Recommended Posts

Hello:

 

First, thank you for all your incredible work in armbian. It is really great what you've done so far. And future looks even better.

I come here to try to solve a problem that I have with a cheap usb wifi dongle. The dongle usb identifier is:

Bus 001 Device 006: ID 0bda:8176 Realtek Semiconductor Corp. RTL8188CUS 802.11n WLAN Adapter

With armbian 5.14 (and a fresh install image), I followed the instruction here

https://forum.armbian.com/index.php/topic/1237-tutorial-opi-one-wireless-success/

to let it work, without problems. Nice tutorial.

My problems began when I was trying to use the same dongle with a fresh installed armbian 5.20. The dongle is not auto recogniced.

What is more interesting, is that the module is there, under:

/lib/modules/3.4.112-sun8i/kernel/net/wireless/8192cu

In this case, I can even insert manually the modules with:

root@equuleus:/lib/modules/3.4.112-sun8i/kernel/net/wireless# insmod ./8192cu.ko
root@equuleus:/lib/modules/3.4.112-sun8i/kernel/net/wireless# lsmod
Module                  Size  Used by
8192cu                624560  0
sunxi_cir               1601  0
mac80211              358429  0
pcf8591                 3363  0
bmp085                  3487  0

And wifi is working flawless!!

If I try to load the module in boot time in rc.local, it fails complaining:
"Tue Nov 15 00:03:41 CET 2016
uid=0(root) gid=0(root) groups=0(root)
insmod: ERROR: could not insert module /lib/modules/3.4.112-sun8i/kernel/net/wireless/8
192cu.ko: Unknown symbol in module"


Thats my /etc/rc.local:

root@equuleus:/etc# more rc.local
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

date >> /root/arrancaModulo8192cuEn_rc.local.log


echo $(id) >> /root/arrancaModulo8192cuEn_rc.local.log

modprobe mac80211 2>> /root/arrancaModulo8192cuEn_rc.local.log 1 >> /root/arrancaModulo
8192cuEn_rc.local.log

insmod /lib/modules/3.4.112-sun8i/kernel/net/wireless/8192cu.ko 2>> /root/arrancaModulo
8192cuEn_rc.local.log 1 >> /root/arrancaModulo8192cuEn_rc.local.log

date >> /root/arrancaModulo8192cuEn_rc.local.log

echo "fin arranque" >> /root/arrancaModulo8192cuEn_rc.local.log

exit 0


Same case if I upgrade online (following https://docs.armbian.com/User-Guide_Getting-Started/)Armbian from 5.14 to 5.23 (the current version).

The module doesn't load at boot time.

The module is still in the same path but in this case, I can't even manually load the module; the error is different:

root@orangepipc:/lib/modules/3.4.112-sun8i/kernel/net/wireless# ls
8192cu.ko               lib80211_crypt_tkip.ko  lib80211.ko
lib80211_crypt_ccmp.ko  lib80211_crypt_wep.ko

root@orangepipc:/lib/modules/3.4.112-sun8i/kernel/net/wireless# insmod ./8192cu.ko
insmod: ERROR: could not insert module ./8192cu.ko: Invalid parameters

In messages, I found this:

Nov 15 20:02:44 localhost kernel: [  231.219508] 8192cu: Unknown symbol alloc_etherdev_mqs (err -22)
Nov 15 20:02:44 localhost kernel: [  231.219667] 8192cu: Unknown symbol skb_copy_bits (err -22)
Nov 15 20:02:44 localhost kernel: [  231.219748] 8192cu: Unknown symbol skb_put (err -22)
Nov 15 20:02:44 localhost kernel: [  231.219892] 8192cu: Unknown symbol __netif_schedule (err -22)
Nov 15 20:02:44 localhost kernel: [  231.219980] 8192cu: Unknown symbol unregister_netdev (err -22)
Nov 15 20:02:44 localhost rsyslogd-2007: action 'action 17' suspended, next retry is Tue Nov 15 20:03:14 2016 [try http://www.rsyslog.com/e/2007 ]
Nov 15 20:02:44 localhost kernel: [  231.220181] 8192cu: Unknown symbol skb_dequeue (err -22)
Nov 15 20:02:44 localhost kernel: [  231.220269] 8192cu: Unknown symbol dev_alloc_name (err -22)
Nov 15 20:02:44 localhost kernel: [  231.220364] 8192cu: Unknown symbol unregister_netdevice_queue (err -22)
Nov 15 20:02:44 localhost kernel: [  231.220464] 8192cu: Unknown symbol eth_type_trans (err -22)
Nov 15 20:02:44 localhost kernel: [  231.220596] 8192cu: Unknown symbol __alloc_skb (err -22)
Nov 15 20:02:44 localhost kernel: [  231.220663] 8192cu: Unknown symbol netif_device_attach (err -22)
Nov 15 20:02:44 localhost kernel: [  231.220717] 8192cu: Unknown symbol skb_queue_tail (err -22)
Nov 15 20:02:44 localhost kernel: [  231.220811] 8192cu: Unknown symbol dev_kfree_skb_any (err -22)
Nov 15 20:02:44 localhost kernel: [  231.220898] 8192cu: Unknown symbol skb_pull (err -22)
Nov 15 20:02:44 localhost kernel: [  231.221002] 8192cu: Unknown symbol skb_push (err -22)
Nov 15 20:02:44 localhost kernel: [  231.221070] 8192cu: Unknown symbol wireless_send_event (err -22)
Nov 15 20:02:44 localhost kernel: [  231.221125] 8192cu: Unknown symbol register_netdev (err -22)
Nov 15 20:02:44 localhost kernel: [  231.221195] 8192cu: Unknown symbol free_netdev (err -22)
Nov 15 20:02:44 localhost kernel: [  231.221348] 8192cu: Unknown symbol __pskb_pull_tail (err -22)
Nov 15 20:02:44 localhost kernel: [  231.221398] 8192cu: Unknown symbol netif_rx (err -22)
Nov 15 20:02:44 localhost kernel: [  231.221457] 8192cu: Unknown symbol skb_trim (err -22)
Nov 15 20:02:44 localhost kernel: [  231.221627] 8192cu: Unknown symbol netif_carrier_off (err -22)
Nov 15 20:02:44 localhost kernel: [  231.221698] 8192cu: Unknown symbol skb_copy (err -22)
Nov 15 20:02:44 localhost kernel: [  231.221755] 8192cu: Unknown symbol skb_clone (err -22)
Nov 15 20:02:44 localhost kernel: [  231.221804] 8192cu: Unknown symbol dev_get_by_name (err -22)
Nov 15 20:02:44 localhost kernel: [  231.221859] 8192cu: Unknown symbol netif_carrier_on (err -22)
Nov 15 20:02:44 localhost kernel: [  231.221995] 8192cu: Unknown symbol register_netdevice (err -22)



Is there a way to make it work in Arbian >5.14?
Can I somehow install the module in the kernel?
Should I recompile it? Is there a way to do this without recompiling all kernel?

Thanks in advance.

Ramón
 

Link to comment
Share on other sites

@rgb

 

Using here the 8192cu with all my boards and 3.4.113 kernel, armbian 5.24, NanoPi NEO & OPi ONE

 

Just put it in modules.conf

 

nano /etc/modules-load.d/modules.conf
=====================================

#8189es
8192cu

 

Christos

Link to comment
Share on other sites

Hello,Christos:

 

Thank you for your response.

 

Which usb id has your wifi dongle? I think that this is the key thing. Somehow, the driver is not associated with the usb dongle...

 

By the way, I didn't include it in the subject, but I have a Orange Pi PC. I don't think this matters that much though...

 

I dont have access to the OpI now, but I will recheck kernel version and files. I was adding or tunning what is required in https://forum.armbian.com/index.php/topic/1237-tutorial-opi-one-wireless-success/, so:

 

/etc/modules-load.d/modules.conf with you configuration (to avoid preload of 8189es).

/etc/network/interfaces with the apropiate network config for the new interface.

/etc/wpa_supplicant/wpa_supplicant.conf with data for my wifi network.

 

Outside of this, I have files to give options to the module (about power management, etc: https://forum.armbian.com/index.php/topic/749-orange-pi-pc-wireless-module-8192cu/):

 

/etc/modprobe.d/8192cu.conf

         options 8192cu rtw_power_mgnt=0 rtw_enusbss=0

 

and to blacklist the rtl* modules.

 

that's it...

Link to comment
Share on other sites

Well, with new Armbian releases, I use only the inclusion of 8192cu in the modules.conf and nothing else regarding configuration.

There is a utility nowadays that takes care of everything and works ok for me, it is the nmtui.

So just include the 8192cu in the modules.conf then reboot and then use nmtui.

Working with usb wifi dongle/key in NanoPi NEO and OPi ONE.

Link to comment
Share on other sites

Hello, Christos.

Thank you again for your anwer.

I was checking again with a fresh install of 5.20 (last version you can download). This time, I just did what you told me and... ITS WORKING!

What is really strange, is what I see in the loaded modules:

root@orangepipc:~# lsmod
Module                  Size  Used by
sunxi_cir               1601  0
rtlwifi                45784  0
rtl8192c_common        33420  0
mac80211              358429  2 rtlwifi,rtl8192c_common
8192cu                624560  0

I say it is strange, because before (Armbian <=5.14) you really needed to blacklist all those rtl* modules and configure the 8192cu with power parameters.

Now, it seems like the those modules are necesary.

More insteresting: upgrading online to 5.23, (root@equuleus:~# uname -a
Linux equuleus 3.4.112-sun8i #10 SMP PREEMPT Sun Oct 23 16:06:55 CEST 2016 armv7l GNU/Linux)

After a reboot, module is AGAIN not loading at boot time:

root@equuleus:~# lsmod
Module                  Size  Used by
sunxi_cir               1601  0
rtl8192cu              61143  0
rtlwifi                45784  1 rtl8192cu
rtl8192c_common        33420  1 rtl8192cu
mac80211              358429  3 rtlwifi,rtl8192c_common,rtl8192cu
pcf8591                 3363  0
bmp085                  3487  0

root@equuleus:~# iwconfig
lo        no wireless extensions.

tunl0     no wireless extensions.

eth0      no wireless extensions.

And in this case, if I try to load it manually:

root@equuleus:/lib/modules/3.4.112-sun8i/kernel/net/wireless# insmod ./8192cu.ko
insmod: ERROR: could not insert module ./8192cu.ko: Device or resource busy

I guess the "bad" driver is locking the usb dongle.

If I blacklist with /etc/modprobe.d/blacklist-native-rtl8192.conf

## Keep the native (and currently broken) kernel driver from loading so ours
## is used instead:
install rtl8192cu /bin/false
install rtl8192c_common /bin/false
install rtlwifi /bin/false
## There is also a new mainline driver starting with kernel v4.4
install rtl8xxxu /bin/false

And reboot

It still doesn't load the module at boot time.

But if I insert it manually again...

root@equuleus:/lib/modules/3.4.112-sun8i/kernel/net/wireless# insmod 8192cu.ko
root@equuleus:/lib/modules/3.4.112-sun8i/kernel/net/wireless#

Module loads and seems to be working.. even when the dongle can't associate with my AP.

???

I really don't understand what happens...

May be someone can enlighten me...?
 

Link to comment
Share on other sites

I do not know why but after every update of kernel my 8192cu module is dead again. So I go through it:

recompile on Opi Pc, install it, depmod -a, reboot with power remove,

then it works again....

 

maybe its the same for you?

gnasch

Link to comment
Share on other sites

I'm seeing the same thing as the OP on my OPi PC with a cheap Realtek 8188CUS wifi adapater.  Something seems to go wonky with the drivers and firmware after apt-get upgrade from 5.20 to 5.23.  After a clean install of 5.20 image (let it reboot for swap, fs resize, etc), plugged in Ethernet, apt-get update, apt-get upgrade to 5.23, reboot.   First, dmesg complains about missing firmware.  apt-get install armbian-firmware-full corrected that problem.  Reboot.  Use of nmtui results in stack trace, panic, and reboot. 

 

When I get home I'll post system data (dmesg, syslog, ifconfig, etc).

Link to comment
Share on other sites

@rgb 

 

Last night I did a fresh install of Armbian 5.20 for Orange Pi PC using the image off the main site, Armbian_5.20_Orangepipc_Debian_jessie_3.4.112.7z. I followed the same steps in my post above, except I did not insert my USB wifi dongle until after the updated 8192CU driver was installed. Ultimately the wifi network connection is working.

 

First I apt-get upgraded to 5.23, apt-get install armbian-firmware-full and network-manager, and rebooted.  Then I installed the updated RTL8192CU driver using the instructions listed below.  I powered off the OPi PC, inserted the USB dongle, unplugged the ethernet cable, powered up, and used nmtui to configure the wifi network and wifi is working.   I think the key was to not have the USB wifi dongle inserted until after the updated 8192CU driver was installed. 

 

 

sudo apt-get install dkms
git clone https://github.com/pvaret/rtl8192cu-fixes.git
sudo dkms add ./rtl8192cu-fixes
sudo dkms install 8192cu/1.10
sudo depmod -a
sudo cp ./rtl8192cu-fixes/blacklist-native-rtl8192.conf /etc/modprobe.d/
sudo reboot

Link to comment
Share on other sites

I do not know why but after every update of kernel my 8192cu module is dead again. So I go through it:

recompile on Opi Pc, install it, depmod -a, reboot with power remove,

then it works again....

 

maybe its the same for you?

gnasch

It is expected since the only way to keep out-of-tree modules during kernel upgrades is DKMS, and it doesn't work properly due to kernel upgrade scheme that is used in Armbian.

Link to comment
Share on other sites

@gnasch, rajprakash & zador.blood.stained:

Thank you for your answers.

Sorry about the delayed follow-up. Pretty busy at work lately.

I was checking again with a fresh install and following rajprakash's procedure everything worked like a charm.

I guess that the trick was the "sudo dkms install"; the module itself, was there  before (at least when I was testing).

Installing the drivers with a testing fresh 5.20 (online updated to 5.23), worked.

But... when I was trying to do the same in my "production" machine, I found another problem: some how, "sudo dkms install 8192cu/1.10" complained about an existing module already installed (I guess thats the original -not installed- module).

When I continued WITHOUT recompiling the module (default action), nothing worked again (symbols problems and so on).

Solution:

sudo dkms install --force 8192cu/1.10

So, you get a new compiled module, with the right symbols.

If you also play with many different network dongles, it worths checking the contains of /etc/udev/rules.d directory.

Anyway, for me it remains still a question: ¿Why is not preinstaled the module?

Link to comment
Share on other sites

I ask: would it be better to do: depmod -a and modprobe 8192cu.ko .... when compiling the driver ?. I, too, fail. If compiling the module works, but restarting fails to load the module. A script that would set the network and wifi settings would work well.

Link to comment
Share on other sites

Hello, I have managed to permanently run the 8192cu.ko module with the following script.

I also have it saved waiting for an apt-get upgrade to leave me without wifi. At that moment I will run the script and go. I hope it serves them.

 

Script wifi-compile-8192cu.sh:

#!/bin/bash
# compile and install 8192cu.ko in armbian
rm /etc/udev/rules.d/70-persistent-net.rules
cd /usr/src/linux-headers-$(uname -r)
make scripts
cd      
git clone https://github.com/pvaret/rtl8192cu-fixes.git
cd rtl8192cu-fixes
make ARCH=arm
rmmod 8192cu.ko
cp 8192cu.ko /lib/modules/$(uname -r)/kernel/drivers/net/wireless
depmod -a
insmod /lib/modules/$(uname -r)/kernel/drivers/net/wireless/8192cu.ko

other changes:

nano /etc/modprobe.d/8192cu.conf
================================
    options 8192cu rtw_power_mgnt=0 rtw_enusbss=0

nano /etc/modules-load.d/modules.conf
=====================================
    #8189es
    8192cu

 

....run script wifi-compile.sh, modify /etc/modprobe.d/8192cu.conf, modify /etc/modules-load.d/modules.conf, and reboot.

Link to comment
Share on other sites

Today I've used fresh install Armbian_5.24_Orangepipc_Debian_jessie_default_3.4.113 and used my favorite WiFi dongle based on RTL8188CUS. But when tried to connect with nmtui, it halts the system and reboots. The WiFi is connected via a powered hub and the OPi PC has strong power supply too. It's not related to the power issue for sure. I've seen a lot of issues at the previous version, but guess that it was all solved before the version release.

 

EDIT: the driver issue still persists in this last version. When rebuild the driver, as described above, it works.

Link to comment
Share on other sites

I also got kernel panics on boot with a strong well known PS, when plugging in the usual ebay 8188CUS with the usual ID

I have apt upgraded to the latest

Tried above scripts, but get this error

 

.....
rtw_android.c:(.text+0x28): multiple definition of `is_broadcast_mac_addr'
/root/rtl8192cu-fixes/core/rtw_cmd.o:rtw_cmd.c:(.text+0x5c): first defined here
/root/rtl8192cu-fixes/os_dep/linux/rtw_android.o: In function `is_zero_mac_addr'                                                   :
rtw_android.c:(.text+0xb4): multiple definition of `is_zero_mac_addr'
/root/rtl8192cu-fixes/core/rtw_cmd.o:rtw_cmd.c:(.text+0xe8): first defined here
scripts/Makefile.build:432: recipe for target '/root/rtl8192cu-fixes/8192cu.o' f                                                   ailed
make[2]: *** [/root/rtl8192cu-fixes/8192cu.o] Error 1
Makefile:1368: recipe for target '_module_/root/rtl8192cu-fixes' failed
make[1]: *** [_module_/root/rtl8192cu-fixes] Error 2
make[1]: Leaving directory '/usr/src/linux-headers-3.4.113-sun8i'
Makefile:584: recipe for target 'modules' failed
make: *** [modules] Error 2

 

Link to comment
Share on other sites

UPDATE: Ah fixed it.

Looks like asterix's install method (above) was required rather than the GIT method.

I also happened to do a make clean beforehand.

[INFO] The changes to ieee80211.h were required.

 

----------------------

 

Update: full reinstall of Armbian, apt update/upgrade, then I also made the changes recommended in another thread, changing extern to static for is_multicast_mac_addr , is_broadcast_mac_addr , is_zero_mac_addr in include/ieee80211.h

Recompile

Still getting similar errors :/

Please help!

 

/var/lib/dkms/8192cu/1.10/build/core/rtw_cmd.o:rtw_cmd.c:(.text+0xe8): first defined here
/var/lib/dkms/8192cu/1.10/build/os_dep/linux/ioctl_cfg80211.o: In function `is_multicast_mac_addr':
ioctl_cfg80211.c:(.text+0x0): multiple definition of `is_multicast_mac_addr'
/var/lib/dkms/8192cu/1.10/build/core/rtw_cmd.o:rtw_cmd.c:(.text+0x34): first defined here
/var/lib/dkms/8192cu/1.10/build/os_dep/linux/ioctl_cfg80211.o: In function `is_broadcast_mac_addr':
ioctl_cfg80211.c:(.text+0x28): multiple definition of `is_broadcast_mac_addr'
/var/lib/dkms/8192cu/1.10/build/core/rtw_cmd.o:rtw_cmd.c:(.text+0x5c): first defined here
/var/lib/dkms/8192cu/1.10/build/os_dep/linux/ioctl_cfg80211.o: In function `is_zero_mac_addr':
ioctl_cfg80211.c:(.text+0xb4): multiple definition of `is_zero_mac_addr'
/var/lib/dkms/8192cu/1.10/build/core/rtw_cmd.o:rtw_cmd.c:(.text+0xe8): first defined here
/var/lib/dkms/8192cu/1.10/build/os_dep/linux/rtw_android.o: In function `is_multicast_mac_addr':
rtw_android.c:(.text+0x0): multiple definition of `is_multicast_mac_addr'
/var/lib/dkms/8192cu/1.10/build/core/rtw_cmd.o:rtw_cmd.c:(.text+0x34): first defined here
/var/lib/dkms/8192cu/1.10/build/os_dep/linux/rtw_android.o: In function `is_broadcast_mac_addr':
rtw_android.c:(.text+0x28): multiple definition of `is_broadcast_mac_addr'
/var/lib/dkms/8192cu/1.10/build/core/rtw_cmd.o:rtw_cmd.c:(.text+0x5c): first defined here
/var/lib/dkms/8192cu/1.10/build/os_dep/linux/rtw_android.o: In function `is_zero_mac_addr':
rtw_android.c:(.text+0xb4): multiple definition of `is_zero_mac_addr'
/var/lib/dkms/8192cu/1.10/build/core/rtw_cmd.o:rtw_cmd.c:(.text+0xe8): first defined here
scripts/Makefile.build:432: recipe for target '/var/lib/dkms/8192cu/1.10/build/8192cu.o' failed
make[1]: *** [/var/lib/dkms/8192cu/1.10/build/8192cu.o] Error 1
Makefile:1368: recipe for target '_module_/var/lib/dkms/8192cu/1.10/build' failed
make: *** [_module_/var/lib/dkms/8192cu/1.10/build] Error 2
make: Leaving directory '/usr/src/linux-headers-3.4.113-sun8i'


 

Edited by ChrisAdmin
fixed it
Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...

Important Information

Terms of Use - Privacy Policy - Guidelines