Ah. You can always manually insmod or modprobe a blacklisted module by name. aka i'm suggesting using the modded module to force the wifi bits in the EC to be turned back on.
Ah. You can always manually insmod or modprobe a blacklisted module by name. aka i'm suggesting using the modded module to force the wifi bits in the EC to be turned back on.
Mini-update: after exhausting the patience of all my Windows-using computer literate friends and the IT guys at work, I finally took the Yoga 2 to a local computer shop yesterday. They are going to (try to) reinstall Windows. If that succeeds (everyone else failed so far..), it's going back to Best Buy. If it fails, I'm stuck with it... So I'm encouraged that there seems to be a fix now. Thanks, @kainz!
[EDIT: just to be clear - my 15 day return period runs out today. Otherwise I'd try the fix first. However, I won't have time to try it and still return the laptop if the fix doesn't work for me.]
Last edited by yangmusa; April 11th, 2014 at 06:29 PM.
Best of luck either way. I count myself damn lucky that I discovered that, since the linux 3.11 ideapad-laptop basically bricked my wifi (reinstalling windows didnt help).
Mini-update 2: Central Computers was successful in reinstalling Windows, and Best Buy finally accepted the machine back. Phew, a weight off my mind.
I'm going to mark the thread "SOLVED" in deference to kainz' solution - if anyone else uses the fix on a non-Pro Yoga 2 please add your experiences.
I followed the hack that kainz described and successfully unblocked the wireless on my Yoga 2 13''. I am running Ubuntu 14.04. Here are the detailed steps to share:
(1) Download the kernel source
$ sudo apt-get install build-essential linux-headers-$(uname -r)
$ cd ~/workspace
$ git clone git://kernel.ubuntu.com/ubuntu/ubuntu-trusty.git
$ cp ~/workspace/ubuntu-trusty/drivers/platform/x86/ideapad-laptop.c ~/workspace/ideapad/
$ cd ~/workspace/ideapad/
(2) Change the function ideapad_rfk_set(void *data, bool blocked) in ideapad-laptop.c to
static int ideapad_rfk_set(void *data, bool blocked)
{
struct ideapad_rfk_priv *priv = data;
/* hack to unblock wireless by sending 1 to these bits */
write_ec_cmd(priv->priv->adev->handle, VPCCMD_W_RF, 1);
write_ec_cmd(priv->priv->adev->handle, VPCCMD_W_BT, 1);
write_ec_cmd(priv->priv->adev->handle, VPCCMD_W_WIFI, 1);
return 0;
/* */
return write_ec_cmd(priv->priv->adev->handle, priv->dev, !blocked);
}
(3) Create a file named Makefile:
obj-m += ideapad-laptop.o
all:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
clean:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
(4) Build the new module
$ cd ~/workspace/ideapad/
$ make
(5) Load the module
$ cp /lib/modules/3.13.0-24-generic/kernel/drivers/platform/x86/ideapad-laptop.ko ~/ideapad-laptop.ko.backup
$ sudo cp ~/workspace/ideapad/ideapad-laptop.ko /lib/modules/3.13.0-24-generic/kernel/drivers/platform/x86/
$ sudo modprobe -r ideapad-laptop
$ sudo modprobe ideapad-laptop
$ sudo rfkill unblock all
$ sudo modprobe -r ideapad-laptop
$ sudo mv ~/ideapad-laptop.ko.backup /lib/modules/3.13.0-24-generic/kernel/drivers/platform/x86/ideapad-laptop.ko
(6) Blacklist the ideapad module
$ cd /etc/modprobe.d/
$ sudo echo 'blacklist ideapad-laptop' > blacklist-ideapad.conf
(7) Reboot the Yoga 2 laptop
I want to say a BIG THANK YOU to kainz and haohe. I`ve followed the step-by-step described by haohe and my wireless became fully functional again! It is so good that I managed to fix it by myself, even with my small knowledge of Linux. Thanks!!
Hi haohe and kainz
I just registered in this forum just for say to you BIG THANK YOU !!!!!!! You are The best , Can i share with lenovo comunnity ?
Hi haohe,
I'm desprite for help. I tried what you posted but ran into an issue with a missing ideapad-laptop.ko file. Here are my steps...
I made a new file called "Makefile" which only contains the following...
obj-m += ideapad-laptop.o
all:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
clean:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
... and saved it in ~/workspace/ideapad/
When, while in that folder via terminal, I enter "make" I get...
make: Nothing to be done for `all'.
Should this "make" command be creating the ideapad-laptop.ko file? No such file is being created for me and thus the later copy command in (5) gives an error.
If haohe or anyone can help it would be greatly appreciated. I have little use for this Lenovo Yoga 2 13 59408082 if I can't get the wireless working.
- Joe
Joe
You will need to change the Kernal version. Do the uname -r command and find your version. It may be 3.13.0-27. I followed the same steps and it worked. Try this:
(1) Download the kernel source
$ sudo apt-get install build-essential linux-headers-$(uname -r)
$ cd ~/workspace
$ git clone git://kernel.ubuntu.com/ubuntu/ubuntu-trusty.git
$ cp ~/workspace/ubuntu-trusty/drivers/platform/x86/ideapad-laptop.c ~/workspace/ideapad/
$ cd ~/workspace/ideapad/
(2) Change the function ideapad_rfk_set(void *data, bool blocked) in ideapad-laptop.c to
static int ideapad_rfk_set(void *data, bool blocked)
{
struct ideapad_rfk_priv *priv = data;
/* hack to unblock wireless by sending 1 to these bits */
write_ec_cmd(priv->priv->adev->handle, VPCCMD_W_RF, 1);
write_ec_cmd(priv->priv->adev->handle, VPCCMD_W_BT, 1);
write_ec_cmd(priv->priv->adev->handle, VPCCMD_W_WIFI, 1);
return 0;
/* */
return write_ec_cmd(priv->priv->adev->handle, priv->dev, !blocked);
}
(3) Create a file named Makefile:
obj-m += ideapad-laptop.o
all:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
clean:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
(4) Build the new module
$ cd ~/workspace/ideapad/
$ make
(5) Load the module
$ cp /lib/modules/3.13.0-27-generic/kernel/drivers/platform/x86/ideapad-laptop.ko ~/ideapad-laptop.ko.backup
$ sudo cp ~/workspace/ideapad/ideapad-laptop.ko /lib/modules/3.13.0-27-generic/kernel/drivers/platform/x86/
$ sudo modprobe -r ideapad-laptop
$ sudo modprobe ideapad-laptop
$ sudo rfkill unblock all
$ sudo modprobe -r ideapad-laptop
$ sudo mv ~/ideapad-laptop.ko.backup /lib/modules/3.13.0-27-generic/kernel/drivers/platform/x86/ideapad-laptop.ko
(6) Blacklist the ideapad module
$ cd /etc/modprobe.d/
$ sudo echo 'blacklist ideapad-laptop' > blacklist-ideapad.conf
(7) Reboot the Yoga 2 laptop
Bookmarks