lwfinger / rtl8188eu

Repository for stand-alone RTL8188EU driver.
Other
1.68k stars 598 forks source link

Unable to compile module after updating from 3.6.11+ to 3.10.18+ #18

Open MrEngman opened 10 years ago

MrEngman commented 10 years ago

After updating my Raspberry Pi from Raspbian 3.6.11+ to 3.10.18+ using rpi-update yesterday I cannot now compile 8188eu.ko without getting warnings which appear to stop the kernel loading the driver.

If I compile using the following which required that I provided some input to fully configure .config during command make modules_prepare

cd src/linux make mrproper zcat /proc/config.gz > .config make modules_prepare cp /home/pi/src/firmware/extra/Module.symvers . cd /home/pi/src/rtl8188eu-master CONFIG_RTL8188EU=m make -C /home/pi/src/linux M=pwd

the compile terminates with the following warning

Building modules, stage 2. MODPOST 1 modules WARNING: "schedule_work" [/home/pi/src/rtl8188eu-master/8188eu.ko] undefined! CC /home/pi/src/rtl8188eu-master/8188eu.mod.o LD [M] /home/pi/src/rtl8188eu-master/8188eu.ko make: Leaving directory `/home/pi/src/linux'

Attempting to load the 8188eu.ko module generates the following error

sudo install -p -m 644 8188eu.ko /lib/modules/uname -r/kernel/drivers/net/wireless sudo insmod /lib/modules/uname -r/kernel/drivers/net/wireless/8188eu.ko Error: could not insert module /lib/modules/3.10.18+/kernel/drivers/net/wireless/8188eu.ko: Unknown symbol in module

Hopefully I've not made some stupid error and I'm wasting your time. Let me know if you need more data.

MrEngman

lwfinger commented 10 years ago

What symbol is unknown? You can get that from the output of dmesg. My guess is that you missed something in the kernel configuration.

BTW, if you use kernel 3.12, this driver is built in.

MrEngman commented 10 years ago

Presumably the symbol is "schedule_work" that is described as undefined when the module is compiled. Checked dmesg and yes it is "schedule_work".

I try to maintain a set of compiled drivers, for wifi using 8188eu, for people using Raspbian on the Raspberry Pi. This is currently 3.6.11+ but is about to be updated to 3.10.18+ as rpi-update master branch has just updated to 3.10.18+, and I would like continue updating the compiled driver until it is include in the standard build. Rather like the 8188cus driver I used to compile and make available for people before that was included in the standard build.

Could be I've screwed up the configuration, just not sure how to figure out how if I have.

lwfinger commented 10 years ago

I just fired up my RPi that runs Raspbian and updated the git repo. I have switched to the 3.10.y branch and I am building 3.10.18. The kernel build started at 06:20 UTC on Nov 6. I do not remember how long it takes. I have never setup a cross-build system, and my sources are on an NFS volume, thus it takes a long time.

I'll let you know my results.

MrEngman commented 10 years ago

Thanks. Much appreciated that you can find some time to look at this.

rolsch commented 10 years ago

Same Problem here: https://github.com/liwei/rpi-rtl8188eu/issues/4

Needs to adapt create_proc_read_entry and replace it with proc_create() and proc_create_data() and the use of seq_file facilities.

RobboRob commented 10 years ago

Same problem here... I'm looking forward to the new, pre-compilled 3.10.18+ version of 8188eu. I really appreciate your efforts!

lwfinger commented 10 years ago

I finally got 3.10.18+ built for RPi. My version of the git repo had code for the driver.

In case my repo is different than yours, http://www.lwfinger.net/download/r8188eu_add_driver.patch will add the driver from scratch.

http://www.lwfinger.net/download/0001-staging-r8188eu-Update-driver-to-latest-version.patch will update what was in my repo to the latest version.

Whichever version you need to use, external firmware will be needed. http://www.lwfinger.net/download/rtl8188eufw.bin has the file.

MrEngman commented 10 years ago

Thanks for that. I'll let you know how I get on.

lwfinger commented 10 years ago

Those URLs above should be lwfinger.com, not lwfinger.net. Sorry about that. The correct links are http://www.lwfinger.com/download/r8188eu_add_driver.patch http://www.lwfinger.com/download/0001-staging-r8188eu-Update-driver-to-latest-version.patch http://www.lwfinger.com/download/rtl8188eufw.bin

One thing I did notice on 3.10.18+ is that the ping times are very long. Is there something wrong with the USB layer?

I will try the latest version on the git repo to see if that makes a difference. I got my cross compiler fixed and I can build a new system fairly quickly.

RobboRob commented 10 years ago

Hi Larry,

Thanks for your help fixing this problem on such a short time frame!

As a relative new Linux user I’m unsure what to do with these patches, is there a step-by-step procedure somewhere how to apply?

Or is there a pre-compiled 8188ey.ko file available to use, using the existing procedures?

Regards, Rob

lwfinger commented 10 years ago

No, kernel modules are quite finicky. They not only have to be built using the same configuration and headers as the underlying kernel, but they need to be built with the same version of the compiler. That means that you need to build it yourself.

RobboRob commented 10 years ago

Mmm, thats a pitty, all the build procedures I was able to find on the net so far failed on a RPi fresh wheezy install with the latest firmware installed (using rpi-update).

Latest used procedure found at http://tech.enekochan.com/2013/05/29/compile-and-install-driver-for-tp-link-tl-wn725n-version-2-in-raspbian executed as root in /root:

git clone https://github.com/lwfinger/rtl8188eu.git git clone --depth 1 git://github.com/raspberrypi/linux.git rpi-linux git clone --depth 1 git://github.com/raspberrypi/firmware.git rpi-firmware cd rpi-linux make mrproper zcat /proc/config.gz > .config make modules_prepare cp ../rpi-firmware/extra/Module.symvers . cd ../rtl8188eu CONFIG_RTL8188EU=m make -C ../rpi-linux M=pwd sudo rmmod 8188eu sudo install -p -m 644 8188eu.ko /lib/modules/uname -r/kernel/drivers/net/wireless sudo depmod -a sudo modprobe 8188eu

line failing:

CONFIG_RTL8188EU=m make -C ../rpi-linux M=pwd

errors (without doing anything with your delivered patch files):

root@pi001:~/rpi-rtl8188eu# CONFIG_RTL8188EU=m make -C ../rpi-linux M=pwd make: Map '/root/rpi-linux' wordt binnengegaan LD /root/rpi-rtl8188eu/built-in.o CC [M] /root/rpi-rtl8188eu/core/rtw_cmd.o In file included from /root/rpi-rtl8188eu/core/rtw_cmd.c:23:0: /root/rpi-rtl8188eu/include/osdep_service.h: In function âthread_enterâ: /root/rpi-rtl8188eu/include/osdep_service.h:1397:2: error: implicit declaration of function âdaemonizeâ [-Werror=implicit-function-declaration] cc1: some warnings being treated as errors make[1]: * [/root/rpi-rtl8188eu/core/rtw_cmd.o] Fout 1 make: * [module/root/rpi-rtl8188eu] Fout 2 make: Map '/root/rpi-linux' wordt verlaten

what should I do with the three patch files you offered to make this work?

RobboRob commented 10 years ago

I've replaced the original Kconfig file with the one from your first link and now I get the same error while executing CONFIG_RTL8188EU=m make -C ../rpi-linux M=pwd

CONFIG_RTL8188EU=m make -C ../rpi-linux M=pwd make: Directory '/root/rpi-linux' entered CC [M] /root/rpi-rtl8188eu/core/rtw_cmd.o In file included from /root/rpi-rtl8188eu/core/rtw_cmd.c:23:0: /root/rpi-rtl8188eu/include/osdep_service.h: In function âthread_enterâ: /root/rpi-rtl8188eu/include/osdep_service.h:1397:2: error: implicit declaration of function âdaemonizeâ [-Werror=implicit-function-declaration] cc1: some warnings being treated as errors make[1]: * [/root/rpi-rtl8188eu/core/rtw_cmd.o] Fout 1 make: * [module/root/rpi-rtl8188eu] Fout 2 make: Left directory '/root/rpi-linux'

lwfinger commented 10 years ago

Where did you get those source files? My version has not had that daemonize call for some time.

One or the other of those patch files are meant to be applied to the Raspbian source so that you can build its kernel with driver r8188eu built in. The 3rd file is firmware, noit a patch.

RobboRob commented 10 years ago

I just cloned it using:

git clone https://github.com/liwei/rpi-rtl8188eu.git (according to the found procedure). Oops, let me try the correct one (updated above procedure with correct git container).

Recompiling... (seems to work better now)

RobboRob commented 10 years ago

compiled without errors, executed:

rmmod 8188eu install -p -m 644 8188eu.ko /lib/modules/uname -r/kernel/drivers/net/wireless depmod -a modprobe 8188eu

ERROR: could not insert '8188eu': Invalid argument

also tried:

insmod /lib/modules/uname -r/kernel/drivers/net/wireless/8188eu.ko Error: could not insert module /lib/modules/3.10.18+/kernel/drivers/net/wireless/8188eu.ko: Invalid parameters

rolsch commented 10 years ago

@RobboRob

i think you must use https://github.com/lwfinger/rtl8188eu.git and not https://github.com/liwei/rpi-rtl8188eu.git.

Then apply the .patch for the lwfinger repo.

I’m unsure what to do with these patches, but google can help :)

rolsch commented 10 years ago

... and executed as pi in /home/pi ...

rolsch commented 10 years ago

"One or the other of those patch files are meant to be applied to the Raspbian source so that you can build its kernel with driver r8188eu built in."

I understand that we patch the org. RPI kernel sources - correct?

lwfinger commented 10 years ago

Yes.

MrEngman commented 10 years ago

Anyone getting anywhere with this issue.

When trying to compile I am getting a weird error but don't know why or how to fix it. Error is

" LD arch/arm/mach-bcm2708/built-in.o CC kernel/fork.o CC kernel/exec_domain.o CC kernel/panic.o CC kernel/printk.o CC kernel/cpu.o CC kernel/exit.o CC kernel/itimer.o HZFILE kernel/hz.bc BC kernel/timeconst.h /bin/sh: 1: bc: not found make[1]: * [kernel/timeconst.h] Error 127 make: * [kernel] Error 2 "

Found this http://lkml.indiana.edu/hypermail/linux/kernel/1303.0/03271.html but doesn't help as patch is already applied.

@lwfinger do you have a working r8188eu.ko? Any chance you can post it somewhere to download if you have

MrEngman

RobboRob commented 10 years ago

I was able to compile without errors but it wouldn't install on the Raspberry Pi when modprobe command was executed:

modprobe 8188eu

ERROR: could not insert '8188eu': Invalid argument

MrEngman commented 10 years ago

Hi RobboRob,

I was able to compile OK as well but had the same problem and when I ran modinfo r8188eo.ko it said file was for 3.6.11+. I ran git checkout rpi-3.10.y to change from master to 3.10.y branch and now I get the error I decribed in previous post.

Very frustrating. Compile modules loads of time without problems until now.

RobboRob commented 10 years ago

I'm at the point to discard the Wifi dongle and order a TP-Link WN823N 300n equivalent which I use for a second RPi module and still works after the rpi-update to 3.10.18+ (http://www.tp-link.com/en/products/details/?model=TL-WN823N)

MrEngman commented 10 years ago

I have Edimax EW-7811Un (rtl8188cus, 8192cu driver), EW-7622UMn (rtl8192su?, using r8712u driver) and Netgear WNA1100 (Atheros AR9271, using ath9_htc driver) and all these are working OK after updating to 3.10.18+.

But really would like to solve this issue as there will be a load of people with the TL-WN725N V2 likely to be having the same problem before too long.

MrEngman commented 10 years ago

Sorted the problem with compiling 3.10.18+ and bc: not found. Dom suggested sudo apt-get install bc which fixed it.

Waiting for the compile to complete, a few hours I guess, and I'll see what happens then.

rolsch commented 10 years ago

@ MrEngman: Do you compile the kernel or the driver.ko only?

Von: MrEngman [mailto:notifications@github.com] Gesendet: Samstag, 9. November 2013 15:37 An: lwfinger/rtl8188eu Cc: rolsch Betreff: Re: [rtl8188eu] Unable to compile module after updating from 3.6.11+ to 3.10.18+ (#18)

Sorted the problem with compiling 3.10.18+ and bc: not found. Dom suggested sudo apt-get install bc which fixed it.

Waiting for the compile to complete, a few hours I guess, and I'll see what happens then.

— Reply to this email directly or view it on GitHub https://github.com/lwfinger/rtl8188eu/issues/18#issuecomment-28128467 . https://github.com/notifications/beacon/LdDdrMM6tz2uWE_thNxGUVsgu-2SSvTuHSYRPhpdeAWVho8ay5TfEio4JZrOLEci.gif

lwfinger commented 10 years ago

The kernel image is at http://www.lwfinger.com/download/kernel.img_3.10.18.bz2. A tarball with the modules is at http://www.lwfinger.net/download/modules_3.10.18.tar.bz2.

Decompress the kernel image and copy it to /boot. Change directory to / and 'tar jxvf . You will need to run 'depmode -a'.

RobboRob commented 10 years ago

I can unbzip and untar the second file but the first file I can only unbzip. Should they both go into /boot?

I didn't find a rtl8188.eu.ko or 8188eu.ko file in the modules tar ball???

RobboRob commented 10 years ago

output modinfo:

filename: /lib/modules/3.10.18+/kernel/drivers/net/wireless/8188eu.ko firmware: rtlwifi/rtl8188eufw.bin version: v4.1.4_6773.20130222 author: Realtek Semiconductor Corp. description: Realtek Wireless Lan Driver license: GPL srcversion: D4D022174822924914833AF alias: usb:v2001p330Fd_dc_dsc_dp_ic_isc_ipin alias: usb:v8179p07B8d_dc_dsc_dp_ic_isc_ipin alias: usb:v0BDAp0179d_dc_dsc_dp_ic_isc_ipin alias: usb:v0BDAp8179d_dc_dsc_dp_ic_isc_ipin depends: vermagic: 3.10.18+ mod_unload modversions ARMv6 parm: rtw_ips_mode:The default IPS mode (int) parm: ifname:The default name to allocate for first interface (charp) parm: if2name:The default name to allocate for second interface (charp) parm: rtw_initmac:charp parm: rtw_channel_plan:int parm: rtw_chip_version:int parm: rtw_rfintfs:int parm: rtw_lbkmode:int parm: rtw_network_mode:int parm: rtw_channel:int parm: rtw_mp_mode:int parm: rtw_wmm_enable:int parm: rtw_vrtl_carrier_sense:int parm: rtw_vcs_type:int parm: rtw_busy_thresh:int parm: rtw_ht_enable:int parm: rtw_cbw40_enable:int parm: rtw_ampdu_enable:int parm: rtw_rx_stbc:int parm: rtw_ampdu_amsdu:int parm: rtw_lowrate_two_xmit:int parm: rtw_rf_config:int parm: rtw_power_mgnt:int parm: rtw_smart_ps:int parm: rtw_low_power:int parm: rtw_wifi_spec:int parm: rtw_antdiv_cfg:int parm: rtw_antdiv_type:int parm: rtw_enusbss:int parm: rtw_hwpdn_mode:int parm: rtw_hwpwrp_detect:int parm: rtw_hw_wps_pbc:int parm: rtw_max_roaming_times:The max roaming times to try (uint) parm: rtw_fw_iol:FW IOL (int) parm: rtw_mc2u_disable:int parm: rtw_80211d:Enable 802.11d mechanism (int) parm: rtw_notch_filter:0:Disable, 1:Enable, 2:Enable only for P2P (uint) parm: debug:Set debug level (1-9) (default 1) (int)

RobboRob commented 10 years ago

I still get:

modprobe 8188eu ERROR: could not insert '8188eu': Invalid argument

MrEngman commented 10 years ago

Hi Rolsh,

I usually compile just the driver.ko but the format of the Makefile does not make this possible so I am having to compile the whole kernel. It’s taking a long time. Had another different error and had to restart the compile so no idea when it will finish, several hours I expect.

From: rolsch [mailto:notifications@github.com] Sent: 09 November 2013 15:24 To: lwfinger/rtl8188eu Cc: Richard Waltham Subject: Re: [rtl8188eu] Unable to compile module after updating from 3.6.11+ to 3.10.18+ (#18)

@ MrEngman: Do you compile the kernel or the driver.ko only?

Von: MrEngman [mailto:notifications@github.com] Gesendet: Samstag, 9. November 2013 15:37 An: lwfinger/rtl8188eu Cc: rolsch Betreff: Re: [rtl8188eu] Unable to compile module after updating from 3.6.11+ to 3.10.18+ (#18)

Sorted the problem with compiling 3.10.18+ and bc: not found. Dom suggested sudo apt-get install bc which fixed it.

Waiting for the compile to complete, a few hours I guess, and I'll see what happens then.

— Reply to this email directly or view it on GitHub https://github.com/lwfinger/rtl8188eu/issues/18#issuecomment-28128467 . https://github.com/notifications/beacon/LdDdrMM6tz2uWE_thNxGUVsgu-2SSvTuHSYRPhpdeAWVho8ay5TfEio4JZrOLEci.gif

— Reply to this email directly or view it on GitHub https://github.com/lwfinger/rtl8188eu/issues/18#issuecomment-28129375 . https://github.com/notifications/beacon/xhZ0EYojBMgB9NRFcGAD7AVLOAmEUVdafEodJ-ti5PfarQcLVa2uBFh0Zs50dSlG.gif

MrEngman commented 10 years ago

Hi RobboRob,

It’s possible the problem is this.

Command uname –a shows “Linux raspberrypi 3.10.18+ #585 Thu Nov 7 15:16:15 GMT 2013 armv6l GNU/Linux” for my running kernel.

Command modinfo r8188eu.ko shows info “vermagic: 3.10.18+ preempt mod_unload modversions ARMv6” for lwfingers module, which includes “preempt”. So may be it’s compiled with a different format kernel – using preempt. Just a thought.

From: RobboRob [mailto:notifications@github.com] Sent: 09 November 2013 17:29 To: lwfinger/rtl8188eu Cc: Richard Waltham Subject: Re: [rtl8188eu] Unable to compile module after updating from 3.6.11+ to 3.10.18+ (#18)

I still get:

modprobe 8188eu ERROR: could not insert '8188eu': Invalid argument

— Reply to this email directly or view it on GitHub https://github.com/lwfinger/rtl8188eu/issues/18#issuecomment-28132146 . https://github.com/notifications/beacon/xhZ0EYojBMgB9NRFcGAD7AVLOAmEUVdafEodJ-ti5PfarQcLVa2uBFh0Zs50dSlG.gif

RobboRob commented 10 years ago

I'm afraid this is a little above my paygrade. Although I have an extensive Unix background (but that was 15 years ago) I only started with the RPi and Linux recently. Lots of specifics is still to learn...

ryantcassidy commented 10 years ago

ran rpi-update, bricked my pi. if anyone has any more insights for compiling on 3.10.18+ -- I can't get it to work.

I was able to compile using some weird linux kernel headers I'd set up (for 3.10.18), but got Invalid exec format after using modprobe.

lwfinger commented 10 years ago

It was likely the weird kernel headers. To help all of you, I have created a copy of the repo with all the patching done. I am using 3.11.7 rather than 3.10.18, but you need to do the following:

git clone http://github.com/lwfinger/linux.git cd linux git checkout remotes/origin/rpi-3.11.y git checkout -b rpi-3.11.y git branch --set-upstream-to=origin/rpi-3.11.y rpi-3.11.y git pull cp config_save_3.11 .config make ./install_kernel

If the above finishes with no errors or warnings, then

sudo reboot

MrEngman commented 10 years ago

There is a driver compatible with latest rpi-update for raspbian

Linux raspberrypi 3.10.18+ #587 Sun Nov 10 15:30:45 GMT 2013 armv6l GNU/Linux

available at https://dl.dropboxusercontent.com/u/80256631/8188eu-20131111.tar.gz

Uses a slightly older version of lwfingers code and does NOT need a separate firmware file :)

lwfinger commented 10 years ago

Beware. Most of the changes in my code are to fix bugs. Using an older version means those are not fixed.

dmainz commented 10 years ago

@MrEngman Thank you so much for providing the download. I have the same kernel version and now I have a working TL-WN725N V2. @lwfinger Thank you for providing this driver.

MrEngman commented 10 years ago

I haven't had, and don't have, problems with it (version from 27 Sept), and I am able to compile it as a separate module without compiling the kernel as it has a "proper" Makefile.

Would be helpful if you could restore the original format Makefile into the current version then it could be compiled without having to compile it with the kernel, and it will only take 10-15 minutes to find if it works or not. Compiling the new version with the kernel takes forever on the RPi and the module will not install for some reason. For me most recent error is "Invalid module format". Viewing modinfo data shows no difference to working modules so no idea why it fails to work.

rolsch commented 10 years ago

@MrEngman: can you describe the compiling steps - thanks.

RobboRob commented 10 years ago

@lwfinger, I got it working due to a pre-compiled version made by @mrEngman based on your scripts! Both thanks again for making this working!

download & install description at: http://www.raspberrypi.org/phpBB3/viewtopic.php?f=28&t=60152&p=451997#p451997

PS to use it you need to update to RPi firmware build #587!

rolsch commented 10 years ago

Hmm, i've now compile the kernel 3.12.y. But i don't know how the 8188eu driver works. No wlan0 Interface...

lwfinger commented 10 years ago

Did you check the output of dmesg? You probably did not install the firmware.

rolsch commented 10 years ago

I've crosscompiled the rpi 3.12.y kernel.

git init git fetch git://github.com/raspberrypi/linux.git rpi-3.12.y:refs/remotes/origin/rpi-3.12.y git checkout rpi-3.12.y

This is my scripting: http://pastebin.com/cqfAeXQt

dmesg: http://pastebin.com/2uRHGZPR lsusb;lsmod;uname -a: http://pastebin.com/jQd5Ha1K

lwfinger commented 10 years ago

Nor should you. Driver r8188eu is in staging, and it does not use rtlwifi!!

MrEngman commented 10 years ago

OK, finally sorted my problem with compiling for 3.10.18+, and now 3.10.19+. Mainly down to problems on my behalf and a certain lack of brain power, although there did seem to be some inconsistencies in the repos for linux and firmware which did not help. The Makefile problem was also mainly a lack of brain power, due to the Makefile in the patch file which was actually irrelevant for what I wanted to do.

Anyway for anyone interested in drivers, using the latest 19 Oct r8188eu source, for 3.10.18+ and 3.10.19+ read on.

rtl8188eu drivers for 3.10.18+

577 - 8188eu-20131105.tar.gz https://dl.dropboxusercontent.com/u/80256631/8188eu-20131105.tar.gz

579 - 8188eu-20131106.tar.gz https://dl.dropboxusercontent.com/u/80256631/8188eu-20131106.tar.gz

585 - 8188eu-20131106.tar.gz https://dl.dropboxusercontent.com/u/80256631/8188eu-20131106.tar.gz

585 - 8188eu-20131106.tar.gz https://dl.dropboxusercontent.com/u/80256631/8188eu-20131106.tar.gz

587 - 8188eu-20131110.tar.gz https://dl.dropboxusercontent.com/u/80256631/8188eu-20131110.tar.gz

590 - 8188eu-20131111.tar.gz https://dl.dropboxusercontent.com/u/80256631/8188eu-20131111.tar.gz

592 - 8188eu-20131111.tar.gz https://dl.dropboxusercontent.com/u/80256631/8188eu-20131111.tar.gz

594 - 8188eu-20131113.tar.gz https://dl.dropboxusercontent.com/u/80256631/8188eu-20131113.tar.gz

596 - 8188eu-20131113.tar.gz https://dl.dropboxusercontent.com/u/80256631/8188eu-20131113.tar.gz

rtl8188eu drivers for 3.10.19+

600 - 8188eu-20131116.tar.gz https://dl.dropboxusercontent.com/u/80256631/8188eu-20131116.tar.gz

Installation details here: http://www.raspberrypi.org/phpBB3/viewtopic.php?p=454488#p454488

rolsch commented 10 years ago

Hello MrEngman, my rpi runs at 3.12.x Kernel. Please explain how you compile the driver.

@lwfinger: i can't find the driver in staging (see my post and logs... ). Any suggestions?

lwfinger commented 10 years ago

What repo are you using for you 3.12 kernel?

rolsch commented 10 years ago

@lwfinger : https://github.com/lwfinger/rtl8188eu/issues/18#issuecomment-28645777

=> git://github.com/raspberrypi/linux.git rpi-3.12.y:refs/remotes/origin/rpi-3.12.y