1

I have a Lenovo IdeaPad Yoga 13. WLAN won't work out of box with fedora 18. So I googled around and found this 2 links:

https://askubuntu.com/questions/139632/wireless-card-realtek-rtl8723ae-bt-is-not-recognized https://ask.fedoraproject.org/question/9633/i-can-not-get-my-realtek-8723-chip-to-work/

So I downloaded the source install gcc, kernel-header, kernel-devel and patch. I comment the line 320 in base.c out. But I get still an error.

make -C /lib/modules/3.8.9-200.fc18.x86_64/build M=/home/l33tname/rtl_92ce_92se_92de_8723ae_linux_mac80211_0006.0514.2012 modules
make[1]: Entering directory `/usr/src/kernels/3.8.9-200.fc18.x86_64'
  CC [M]  /home/l33tname/rtl_92ce_92se_92de_8723ae_linux_mac80211_0006.0514.2012/base.o
In file included from /home/l33tname/rtl_92ce_92se_92de_8723ae_linux_mac80211_0006.0514.2012/base.c:39:0:
/home/l33tname/rtl_92ce_92se_92de_8723ae_linux_mac80211_0006.0514.2012/pci.h:245:15: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘rtl_pci_probe’
/home/l33tname/rtl_92ce_92se_92de_8723ae_linux_mac80211_0006.0514.2012/base.c: In function ‘rtl_action_proc’:
/home/l33tname/rtl_92ce_92se_92de_8723ae_linux_mac80211_0006.0514.2012/base.c:870:25: error: ‘RX_FLAG_MACTIME_MPDU’ undeclared (first use in this function)
/home/l33tname/rtl_92ce_92se_92de_8723ae_linux_mac80211_0006.0514.2012/base.c:870:25: note: each undeclared identifier is reported only once for each function it appears in
/home/l33tname/rtl_92ce_92se_92de_8723ae_linux_mac80211_0006.0514.2012/base.c: In function ‘rtl_send_smps_action’:
/home/l33tname/rtl_92ce_92se_92de_8723ae_linux_mac80211_0006.0514.2012/base.c:1432:16: error: ‘struct <anonymous>’ has no member named ‘sta’
make[2]: *** [/home/l33tname/rtl_92ce_92se_92de_8723ae_linux_mac80211_0006.0514.2012/base.o] Error 1
make[1]: *** [_module_/home/l33tname/rtl_92ce_92se_92de_8723ae_linux_mac80211_0006.0514.2012] Error 2
make[1]: Leaving directory `/usr/src/kernels/3.8.9-200.fc18.x86_64'
make: *** [all] Error 2

The line 245 on pci.h is this:

int __devinit rtl_pci_probe(struct pci_dev *pdev,const struct pci_device_id *id);

And yeah I try it as normal user and as root.

My question is how can I compile this or what must be fixed.

4 Answers 4

1

So the solutions is really simple take the latest source from: https://github.com/lwfinger

make & make install

So this works well for realtek-8723.

And there is a small blog post I wrote about it -> http://l33tsource.com/blog/2013/05/08/Yoga-with-WLAN.html

1

It seems the __devinit macros were removed from the kernel in 3.8. I got the rtl8192ce driver (from the same source tree) to compile and load by removing__devinit from pci.h and pci.c) and also removing all instances of __devinitdata from each sw.c (one per driver directory).

A grep -R __devinit in the source root should show you all the files you have to modify.

4
  • If CONFIG_HOTPLUG is not defined in the source, this would be a suitable fix, see this thread for the defintion of __devinit http://www.spinics.net/lists/newbies/msg29197.html
    – Drav Sloan
    Commented Aug 28, 2013 at 16:16
  • __devinit has been completely removed "reflecting the fact that we all live in a hotplug world now". Commented Aug 28, 2013 at 16:46
  • It's great to know where the change was made and the thought behind it. Thanks for the link :) I was just wanting to clarify that in the case of the OP editing his driver code, to be aware of the possible ramifications of the change.
    – Drav Sloan
    Commented Aug 28, 2013 at 16:51
  • Indeed :) Here's a patch along similar lines Commented Aug 28, 2013 at 16:55
0

You tried this?

int __devinit = rtl_pci_probe(struct pci_dev *pdev,const struct pci_device_id *id);
1
0

Fedora has rather new kernels, often the driver sources floating around are for older kernel versions. Check the requisite kernel version, rummage through the Fedora fora, check for possibly relevant bug reports, look for not-yet-official drivers by the kernel hackers (not the vendor; vendors often live under the illusion that it is possible to have one source working for a wide range of kernel versions, others just shoehorn a source blob for That Other Unnameable System into something that has a superficial resemblance to a native Linux driver, some uncorrigible heretics try both).

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .