SOLVED: Lenovo Yoga 2 13″ with “hardware-disabled” Wifi

This post was written by eli on August 1, 2014
Posted Under: Internet,Linux,Linux kernel,wifi

Overview

Having a Lenovo Yoga 2 13″ (non-pro) running Ubuntu 14.04.1, I couldn’t get Wireless LAN up and running, as the WLAN NIC appeared to be “hardware locked”. This is the summary of how I solved this issue. If you’re not interested in the gory details, you may jump right to bottom, where I offer a replacement module that fixes it. At least for me.

Environment details: Distribution kernel 3.13.0-32-generic on an Intel i5-4210U CPU @ 1.70GHz. The Wifi device is an Intel Dual Band Wireless-AC 7260 (8086:08b1) connected to the PCIe bus, taken care of by the iwlwifi driver.

The problem

Laptops have a mechanism for working in “flight mode” which means turning off any device that could emit RF power, so that the airplane can crash for whatever different reason. Apparently, some laptops have a physical on-off switch to request this, but on Lenovo Yoga 13, the arrangement is to press a button on the keyboard with an airplane drawn on it. The one shared with F7.

It seems to be, that on Lenovo Yoga 13, the ACPI interface, which is responsible for reporting the Wifi’s buttons state, always reports that it’s in flight mode. So Linux turns off Wifi, and on the desktop’s Gnome network applet it says “Wi-Fi is disabled by hardware switch”.

In the dmesg log one can tell the problem with a line like

iwlwifi 0000:01:00.0: RF_KILL bit toggled to disable radio.

which is issued by the interrupt request handler defined in drivers/net/wireless/iwlwifi/pcie/rx.c, which responds to an interrupt from the device that informs the host that the hardware RF kill bit is set. So the iwlwifi module is not to blame here — it just responds to a request from the ACPI subsystem.

rfkill

The management of RF-related devices is handled by the rfkill subsystem. On my laptop, before solving the problem, a typical output went

$ rfkill list all
0: ideapad_wlan: Wireless LAN
        Soft blocked: yes
        Hard blocked: yes
1: ideapad_bluetooth: Bluetooth
        Soft blocked: no
        Hard blocked: yes
6: hci0: Bluetooth
        Soft blocked: no
        Hard blocked: no
7: phy1: Wireless LAN
        Soft blocked: yes
        Hard blocked: yes

So there are different entities that can be controlled with rfkill, enumerated and assigned soft and hard blocks. Each of these relate to a directory in /sys/class/rfkill/. For example, the last device, “phy7″ enumerated as 7 corresponds to /sys/class/rfkill/rfkill7, where the “hard” and “soft” pseudo-files signify the status with “0″ or “1″ values.

The soft block can be changed by “rfkill unblock 0″ or “rfkill unblock 7″, but this doesn’t really help with the hardware block. Both has to be “off” to use the device.

As can be seen easily from the rkfill list above, each of the physical devices are registered twice as rfkill devices: Once by their driver, and a second time by the ideapad_laptop driver. This will be used in the solution below.

The ideapad_laptop module

The ideapad-laptop module is responsible for talking with the ACPI layer on machines that match “VPC2004″ as a platform (as in /sys/devices/platform/VPC2004:00, or /sys/bus/acpi/devices/VPC2004:00, but doesn’t fit anything found in /sys/class/dmi/id/).

Blacklisting this module has been suggested for Yoga laptops all over the web. In particular this post suggests to insmod the module once with a hack that forces the Wifi on, and then blacklist it.

But by blacklisting ideapad-laptop, the computer loses some precious functionality, including disabling Wifi and the touchpad by pressing a button. So this is not an appealing solution.

Ideapad’s two debugfs output files go:

# cat /sys/kernel/debug/ideapad/cfg
cfg: 0x017DE014

Capability: Bluetooth Wireless Camera
Graphic:
# cat /sys/kernel/debug/ideapad/status
Backlight max:	16
Backlight now:	9
BL power value:	On
=====================
Radio status:	Off(0)
Wifi status:	Off(0)
BT status:	On(1)
3G status:	Off(0)
=====================
Touchpad status:Off(0)
Camera status:	On(1)

So the Radio and Wifi statuses, which are read from the ACPI registers, are off. This makes the ideapad_laptop module conclude that everything should go off.

The solution

In essence, the solution for the problem is to take the ideapad_laptop’s hands off the Wifi hardware, except for turning the hardware block off when it’s loaded. It consists of making the following changes in drivers/platform/x86/ideapad-laptop.c:

  • First, remove the driver’s rfkill registration. Somewhere at the beginning of the file, change
    #define IDEAPAD_RFKILL_DEV_NUM	(3)

    to

    #define IDEAPAD_RFKILL_DEV_NUM	(2)

    and in the definition of ideapad_rfk_data[], remove the line saying

    { "ideapad_wlan", CFG_WIFI_BIT, VPCCMD_W_WIFI, RFKILL_TYPE_WLAN }

    This prevents the driver from presenting an rfkill interface, so it keeps its hands off.

  • There is however a chance that the relevant bit in the ACPI layer already has the hardware block on. So let’s turn it off every time the driver loads. In ideapad_acpi_add(), after the call to ideapad_sync_rfk_state(), more or less, add the following two lines:
    pr_warn("Hack: Forcing WLAN hardware block off\n");
    write_ec_cmd(priv->adev->handle, VPCCMD_W_WIFI, 1);
  • And finally, solve a rather bizarre phenomenon, that when reading for the RF state with a VPCCMD_R_RF command, the Wifi interface is hardware blocked for some reason. Note that radio is always in off mode, so it’s a meaningless register on Yoga 2. This is handled in two places. First, empty ideapad_sync_rfk_state() completely, by turning it into
    static void ideapad_sync_rfk_state(struct ideapad_private *priv)
    {
    }

    This function reads VPCCMD_R_RF and calls rfkill_set_hw_state() accordingly, but on Yoga 2 it will always block everything, so what’s the point?
    Next, in debugfs_status_show() which prints out /sys/kernel/debug/ideapad/status, remove the following three lines:

    if (!read_ec_data(priv->adev->handle, VPCCMD_R_RF, &value))
      seq_printf(s, "Radio status:\t%s(%lu)\n",
        value ? "On" : "Off", value);

Having these changes made, the Wifi works properly, regardless of it was previously reported hardware blocked.

This can’t be submitted as a patch to the kernel, because presumably some laptops need the rfkill interface for Wifi through ideapad_laptop (or else, why was it put there in the first place?).

Also, maybe I should have done this for Bluetooth too? Don’t know. I don’t use Bluetooth right now, and the desktop applet seems to say all is fine with it anyhow.

Download the driver fix

For the lazy ones, I’ve prepared a little kit for compiling the relevant driver. I’ve taken the driver as it appears in kernel 3.16, more or less, and applied the changes above. And I then added a Makefile to make it compile easily. Since the kernel API changes rather rapidly, this will probably work well for kernels around 3.16 (that includes 3.13), and then you’ll have to apply the changes manually. If it isn’t fixed in the kernel itself by then.

Download it from here, unzip it, change directory, and compile it with typing “make”. This works only if you have the kernel headers and gcc compiler installed, which is usually the case in recent distributions. So a session like this is expected:

$ make
make -C /lib/modules/3.13.0-32-generic/build SUBDIRS=/home/eli/yoga-wifi-fix modules
make[1]: Entering directory `/usr/src/linux-headers-3.13.0-32-generic'
  CC [M]  /home/eli/yoga-wifi-fix/ideapad-laptop.o
  Building modules, stage 2.
  MODPOST 1 modules
  CC      /home/eli/yoga-wifi-fix/ideapad-laptop.mod.o
  LD [M]  /home/eli/yoga-wifi-fix/ideapad-laptop.ko
make[1]: Leaving directory `/usr/src/linux-headers-3.13.0-32-generic'

Then replace the fresh ideapad-laptop.ko with the one the kernel uses. First, let’s figure out where to. The modinfo command help here:

$ modinfo ideapad_laptop
filename:       /lib/modules/3.13.0-32-generic/kernel/drivers/platform/x86/ideapad-laptop.ko
license:        GPL
description:    IdeaPad ACPI Extras
author:         David Woodhouse <dwmw2@infradead.org>
srcversion:     BA339D663FA3B10105A1DC0
alias:          acpi*:VPC2004:*
depends:        sparse-keymap
vermagic:       3.13.0-32-generic SMP mod_unload modversions
parm:           no_bt_rfkill:No rfkill for bluetooth. (bool)

So the directory is now known (marked in red). This leaves us with copying it into the right place:

$ sudo cp ideapad-laptop.ko /lib/modules/3.13.0-32-generic/kernel/drivers/platform/x86/

The new module is valid on the next reboot. Or the next insmod/modprobe, if you’re have the same allergy as myself regarding rebooting a Linux system.

Reader Comments

Hi
Thanks! This looks very helpful.
I also bought this kind of computer about a month ago. I didn’t install Linux on it yet, but I’m planning to do so. Have you had any other kind of problems? Does it work with the pre-installed Windows side-by-side? From reading, I understand that there is some issue with the partition table type (GPT or MBR). I also understand that the trackpad is not working properly. Did it work for you?

Avishay

#1 
Written By Avishay on August 5th, 2014 @ 09:28

Hi,

Aside from the problem with the Wifi card, it seems like Ubuntu is running smoothly out of the box. That includes suspend and wakeup.

The touchpad as well as the touch screen work well (at least for a single screen touch). You can make drawings with GIMP by touching the screen, for example.

But I haven’t used the machine much, so I hope no new problems will surface.

As for co-existence with Windows — I never got there. I just wiped the Windows 8.1 installation with great pleasure. :)

#2 
Written By eli on August 5th, 2014 @ 09:41

Really helpful, Eli!

#3 
Written By Krystof on August 7th, 2014 @ 16:15

Well done, Eli. I tried three other solutions posted around the net, but this was the only one that worked (and by editing the driver source rather than just blocking the entire driver, it’s the most elegant solution). By the by, I deployed this to a Yoga 2 13″ (not pro) with Linux Mint 17.
I tested the following, also:

Sleep/wakeup: OK
Trackpad: OK
Screen re-orientation: Not OK (but that’s a different driver)
Sound: OK
Screen brightness control: OK
Airplane Mode: OK
Mute button: OK
Volume Up/Dn: OK

#4 
Written By Rich Lohman on August 15th, 2014 @ 04:06

Hi,
Does anyone of you guys use the yoga 2 13 with Windows 8.1?
I do, and the Wi-fi by far doesn’t work properly! Either it works very slow, or it disconnects all the time. Sometimes it even doesn’t find the network.
The wifi device runs with the latest driver, and I did some other updates, but since I’m not that much of a Computerpro, I don’t know what to do to solve the problem.
If anyone can help me, I would be very glad.
greets, Richi

#5 
Written By Richard Preißler on August 17th, 2014 @ 21:33

Hi,

This seems like the closest match to the issues I am having with my Lenovo Yoga 2 13″.

‘rfkill list’ was showing a software block on wifi that could be toggled with the airplane mode key. However no wifi was available.

Running ‘cat /sys/kernel/debug/ideapad/status’ showed that ‘Radio status:’ and ‘Wifi status:’ were ‘off(0)’ even when no rfkill yeses could be found.

I tried your kernel – I had to disable secure boot – but modprobe gives ‘Exec format error’.

Is this compiling for the wrong architecture or something? I’m on 64 bit Fedora 20.

#6 
Written By Michael on August 19th, 2014 @ 10:41

Thank you Eli! It worked!

I had exactly the same problem.

I downloaded your zip consisting of the C code, generated the .ko and deployed on the given path and restarted.

The wifi is working fine now.

#7 
Written By Anirudh Menon on September 2nd, 2014 @ 04:46

I tried to install the module you wrote, and I didn’t receive an error when copying the file in the last step, but I tried to compile it from Kubuntu 14.04 on my Yoga, I realized that it didn’t have the gcc compiler installed. It was a fresh installation from a few minutes before, after trying to fix the problem from a live usb. So I compiled the source file on another machine running Kubuntu 14.04, and had the compiler. I then moved the files with a usb drive. Would this affect anything?

Also, I’d like to know if this will also fix the problem in Windows, because I unfortunately need to use it for certain classes in college. My Yoga 2 13 is currently dual booted with Kubuntu 14.04 and Windows 8.1

Thanks!

#8 
Written By Bryce on September 11th, 2014 @ 04:34

It’s safe to assume that if the kernel module is loaded, it’s running properly (at least in this case). So if it works, it works.

As far as I know, there is no problem with Wifi in Windows. And even if there is, I wouldn’t know, because I never ran Windows on my laptop. :)

#9 
Written By eli on September 11th, 2014 @ 07:01

Hi
I tried to install the driver from your zip file.
But after that also my ideapad connect to wifi and continously fluctuating after every 5 to 10 minutes.
Details of Ideapad
Lenovo yoga 2 13
Model 20344
Os :- Ubuntu 14.04 LTS (64 bit)
kernel :- 3.13.0-24-generic
Can you please suggest solution for this.
Thanks in advance

#10 
Written By sudip on September 11th, 2014 @ 12:37

Thank you very much!!! I was in deadlock till the time I didn’t find your post. After which it only took 10 mins to solve the problem. You are awesome Eli!!!

#11 
Written By Gokul Palwe on September 14th, 2014 @ 08:08

Thank you very much for sharing this. It’s the easiest solution I’ve seen, and it works well.

#12 
Written By Roy Tanck on September 15th, 2014 @ 19:32

Hi, Same results than Bryce.
I followed everything, everything steps were ok… but wifi is still hard blocked…
And as Bryce, I did a dualboot from w8.1 (the wifi ran fine before installing ubuntu) but now I don’t have any wifi at all in ubuntu and windows ! I’m really blocked right now and I don’t know what to do, your solutions was the most complete I have seen and it doesn’t work for me :-(

#13 
Written By Fab on September 17th, 2014 @ 15:22

Hi again,
The reason why your protocol doesn’t work for me is because we don’t have the same wifi card… you have the intel one, and I have the realtek one… If you have a look on the lenovo website, you will see that this yoga 2 can have an intel or a realtek wifi card…
Do you have any idea to figure out how I could do similar things with the realtek driver ? Thanks a lot….

#14 
Written By Fab on September 17th, 2014 @ 15:35

Hmmm… Obviously, I can’t say much about Realtek cards. Looks like you’ll have to solve your problem from scratch — maybe the guidelines above help a bit.

And frankly speaking, I just published my own experiences, and have no particular motivation to deal with other problems that may be related.

#15 
Written By eli on September 17th, 2014 @ 15:45

Tried with Yoga Pro 2 13″, works as charm!
The Wi-Fi, though, is awful (both in Win and Linux) – it disconnects and sometimes doesn’t find my network at all.

#16 
Written By Avishay on September 17th, 2014 @ 16:37

Will this persist across kernel upgrades, or does this need to be re-applied every time a new kernel comes along?

P.S. Wifi seems quite stable on my Yoga 2 under Ubuntu 14.04. I have the Intel card. Thanks again.

#17 
Written By Roy Tanck on September 18th, 2014 @ 13:51

This needs to be re-applied each time the kernel is upgraded.

#18 
Written By eli on September 18th, 2014 @ 13:54

I’ve bought the same laptop as yours 3 days ago.

I am a basis Linux user and tried to boot ubuntu from a live usb.

At the moment the Wifi card is disabled as well.
I am not an expierenced linux user, and try to solve this problem by your download script.

Could you tell step by step what to do, like:
1. download the file.
2. Typ $maken into the terminal
3. press enter

I am very disapointed at the moment and hope there is a more easy solution. Thanks in advance.

#19 
Written By Jeroen on September 19th, 2014 @ 17:46

I was literally on the verge of a full mental breakdown before finding this, fixed both windows and linux wifi problems. I am ever so grateful for people like you figuring out how to control the evil computer faeries who ruin my wifi. You can pat yourself on the back for preventing a potential suicide. :)

#20 
Written By Ben on October 2nd, 2014 @ 03:45

Hi Eli

Thanks so much for this solution! I have to admit to using the binary version due to time constraints and a new baby in the house but it worked like a charm.

Cheers
Andy

#21 
Written By andyc on October 3rd, 2014 @ 10:10

You Sir are an absolute star! Thank you for this explanation and fix!

#22 
Written By Philip on October 14th, 2014 @ 18:46

with my wifi down, I found a handy side door in the form of Tethering my smartphone to serve up the wifi through USB.

#23 
Written By Philip on October 18th, 2014 @ 16:25

Hi,
I recently got a yoga pro 2. For few days I could get the Internet connection through wi fi. However, now I am not able to connect. I have updated all the drivers as well. The irony is I am able to connect through Ethernet. Could you please help in solving the issue.
Thanks and Regards
Uma

#24 
Written By Uma on October 20th, 2014 @ 08:09

What do you mean by “…Or the next insmod/modprobe…” ?? How do I achieve this?

#25 
Written By Julien on October 22nd, 2014 @ 04:20

rmmod ideapad-laptop
modprobe ideapad-laptop

#26 
Written By eli on October 22nd, 2014 @ 07:55

Hi.
In the last part of the installing driver, It gives me this:
cp: cannot stat `ideapad-laptop.ko`: No such file or directory.
But I am sure it exist, there. What can I do?

#27 
Written By Kerim on October 24th, 2014 @ 21:31

THANKS !!!!
I’m not an informatician, it too me quite a long time, but it was clear and efficient.

#28 
Written By Seth on October 25th, 2014 @ 01:07

Worked for me. Ubuntu 14.04 Desktop 64-bit on Lenovo Yoga 2.

#29 
Written By Corba The Geek on October 29th, 2014 @ 07:10

I am still not getting it. my LAN works fine, but can’t get wlan working. can someone please explain step by step how I get wireless working on my Mint 17 for yoga 2 pro.

#30 
Written By iqbal on November 9th, 2014 @ 17:03

Thanks so much! It worked out all perfectly!!!

After days off trying to fix my Wlan hardwareblocked = yes on my yoga 2 11 with wubi running, I found your blog entry! 10 minutes later it worked! Now I can start my bachelor thesis!

INSANE!

Greetings,
Dominik

#31 
Written By Dominik Spreuer on November 18th, 2014 @ 12:49

for windows, you can use the .bat file provided by Lenovo. See this thread:
https://forums.lenovo.com/t5/Idea-Windows-based-Tablets-and/Yoga-2-13-wifi-hard-blocked/td-p/1685805/page/2

#32 
Written By Francois on November 19th, 2014 @ 20:58

None of the solutions found online worked for me until I switched from Ubuntu 14.04 to 14.10. It worked without any modifications after that, and has been reliable for the last 3 weeks.

#33 
Written By Keith on November 23rd, 2014 @ 21:19

Hi guys,
could you please share some info about the energy autonomy of Lenovo Yoga 2 13″ and Lenovo Yoga 2 Pro under Linux? How many hours are you able to use the laptop with a single battery charge?
Thank you very much!

#34 
Written By ilfugiuliopascal on December 2nd, 2014 @ 20:53

Hi Eli,
just to say you really big thanks,
works perfectly and nice job for the community!
kenavo ;)

#35 
Written By Jim on December 10th, 2014 @ 01:20

if it can help, i updated the linux kernel to 3.18 under ubuntu 14.04 and it’s working !

#36 
Written By david on December 25th, 2014 @ 22:43

Eli,

Great article! As a new Ubuntu user it was super easy to follow and fix my wifi issue. Much appreciated!

#37 
Written By Matt on December 28th, 2014 @ 02:02

As of late December 2014, the update manager of Linux Mint (View->Linux kernels) allows directly and conveniently to upgrade to kernel 3.16.0-some which solves the issue as well.

#38 
Written By rfl on December 29th, 2014 @ 05:29

For anyone still struggling with the Realtek driver, the combination working for me is 96CN29WW (V1.15) (Nov 2014) BIOS, 3.16 Kernal, Ubuntu 14.10, and then running make && make install on this repo of driver updates https://github.com/lwfinger/rtlwifi_new . Good luck!

#39 
Written By Andy on December 30th, 2014 @ 16:44

I don’t understand. These files don’t actually exist?

#40 
Written By Maximilian on December 31st, 2014 @ 05:31

thanks #39
Written By Andy on December 30th, 2014 @ 16:44

I was starting to despair, your hint fixed my wifi!

happy 2015 to all!
andrea

#41 
Written By andrea on December 31st, 2014 @ 17:41

Hola también tengo una Yoga 13 mi wifi lo detecto bien, también mi tarjeta de video hd 4000 pero lo malo es que no se activan los efectos gráficos de las ventanas o el cubito, revise en todo lado y la única explicación es que lo efectos de compiz no los trabaja mi tarjeta de vídeo ….como hago eso ???

#42 
Written By Krlts on January 7th, 2015 @ 22:57

I can’t find the file that needs to be modified, I was looking for “ideapad-laptop.c” but I can’t see it anywhere. Can someone please help me with the complete path to locating this file so I can open it and make changes.

Thank you

#43 
Written By Rosberg on January 16th, 2015 @ 00:43

Works, thanks!

#44 
Written By Steven on January 16th, 2015 @ 12:22

Thanks!!!
Fixed wifi on Lenovo Yoga 2 Pro + fresh install of openSUSE 13.2 64bit.

#45 
Written By Alexander on January 17th, 2015 @ 17:56

Just bought this laptop for my son. Same problem. Why does nt the company fix it instead of Eli having to do this. Have nt tried yet. Might just take back to the shop.

#46 
Written By Lynda on January 19th, 2015 @ 01:56

Depends on who “the company is”: If you referred to Lenovo, well, they supplied the laptop with almighty Windows 8. Why would anyone want to use anything else?…

As for Linux, this issue has been resolved in recent kernels. Someone said in a comment above that Wifi works without this fix on Ubuntu 14.10.

#47 
Written By eli on January 19th, 2015 @ 09:23

first of all thanks dear your information is authentic so now my wifi working well again thanks !

regards

Dave Gill

#48 
Written By Dave on January 29th, 2015 @ 18:13

Thanks man, you are a life saver

#49 
Written By Felix on February 3rd, 2015 @ 23:13

This solution is too complex to implement and therefore impossible for any real-world user.

The real solution?

Abandon linux, go back to Windows. Wifi works on Windows. Wifi just doesn’t work on linux.

#50 
Written By ian on February 6th, 2015 @ 02:40

I have Yoga 2 Pro with windows 8.1. Wifi was working fine till last week. All of a sudden after few windows update, WIFI is not working. Network adapter is not showing in the Device Manager.

Could you please anyone help to solve this issue? I have tried resetting to factory defaults, loading retail Windows8.1, updating new drivers. Nothing working.

It would be great if someone can help in this.

#51 
Written By Jeyakanthan on February 23rd, 2015 @ 17:05

thanks! After figuring out how it works it was a very helpful hint. When i create USB install media i always add persistent space to include your modified modules. No i am able to boot a live session, fix the missing wifi and finally install ubuntu or elementary while i am connected to the internet.

#52 
Written By Addi on March 4th, 2015 @ 14:18

i did the same, i got this error. Please help me.. I am new to UBUNTU. Thanks

make -C /lib/modules/3.16.0-30-generic/build SUBDIRS= /home/vickybaba/Documents/yoga-wifi-fix modules
make: Entering directory `/usr/src/linux-headers-3.16.0-30-generic’
arch/x86/Makefile:136: CONFIG_X86_X32 enabled but no binutils support
Makefile:652: Cannot use CONFIG_CC_STACKPROTECTOR_REGULAR: -fstack-protector not supported by compiler
HOSTCC scripts/basic/fixdep
scripts/basic/fixdep.c:462:1: fatal error: opening dependency file scripts/basic/.fixdep.d: Permission denied
}
^
compilation terminated.
make[2]: *** [scripts/basic/fixdep] Error 1
make[1]: *** [scripts_basic] Error 2
make: Nothing to be done for `/home/vickybaba/Documents/yoga-wifi-fix’.
make[1]: *** No rule to make target `arch/x86/syscalls/syscall_32.tbl’, needed by `arch/x86/syscalls/../include/generated/asm/syscalls_32.h’. Stop.
make: *** [archheaders] Error 2
make: Leaving directory `/usr/src/linux-headers-3.16.0-30-generic’

#53 
Written By Vikramaditya on March 10th, 2015 @ 11:46

I was using this fix for about 4 months and it was the only thing out there that worked. Recently, I reformatted my laptop and upgraded to 14.10, and there was no longer a hardware block for the WIFI. Anyone who wants a permanent fix (as far as I can tell) should try the dist-upgrade and see what happens.
Thanks!

#54 
Written By Benjamin Quinn on April 10th, 2015 @ 17:49

I just loaded Mint on my Yoga 2 Pro and could not make the wifi work until I came across your blog. This worked great for me right off the bat. Thank you very much! Lifesaver!

Mint 17.1 Rebecca, kernel 13.3.0-37

#55 
Written By Matt Palmer on April 13th, 2015 @ 21:47

Everything works out of the box with Ubuntu 15.04, everything. All the Function buttons, webcam, internal mic, SD reader, Bluetooth, Wi-Fi, touch screen, touch pad, …

#56 
Written By manuti on May 20th, 2015 @ 15:09

It’s working! Thanks :)

#57 
Written By mbgoth on June 21st, 2015 @ 17:30

Oh man, I just lost 3 hours tinkering with this until I found your Post! Many many thanks for the details and the solution provided. (I’m no linux pro, that was very helpful with the pre-configured file)

Saved my life as the Yoga has no ethernet port.

#58 
Written By Martin on July 11th, 2015 @ 23:57

hello .. you have given me valuable information but need a little more of your help .. in my case I have a Miix 2 i5 lenovo .. I’m new and do not know how to modify the kernel to turn off the airplane mode ..

$ rfkill list
0: ideapad_wlan: Wireless LAN
Soft blocked: no
Hard blocked: yes
1: ideapad_bluetooth: Bluetooth
Soft blocked: no
Hard blocked: yes
2: phy0: Wireless LAN
Soft blocked: no
Hard blocked: no
5: hci0: Bluetooth
Soft blocked: no
Hard blocked: no

$ sudo cat /sys/kernel/debug/ideapad/cfg

cfg: 0x007D0002

Capability: Bluetooth Wireless Camera
Graphic:

$sudo cat /sys/kernel/debug/ideapad/status

Backlight max: 16
Backlight now: 16
BL power value: On
=====================
Radio status: Off(0)
Wifi status: On(1)
BT status: On(1)
3G status: Off(0)
=====================
Touchpad status:Off(0)
Camera status: Off(0)

$ cat /etc/*-release
ISTRIB_ID=Ubuntu
DISTRIB_RELEASE=15.04
DISTRIB_CODENAME=vivid
DISTRIB_DESCRIPTION=”Ubuntu 15.04″
NAME=”Ubuntu”

$ uname -mrs
Linux 3.19.0-15-generic x86_64

Please can you teach me how and what I have to modify the kernet to work Wifi, 3G, touchpad, camera

#59 
Written By luigi on July 17th, 2015 @ 06:11

MY LENOVO YOGA 2-13 KEYBOARD IS BLOCKED

#60 
Written By Anonymous on August 26th, 2015 @ 00:44

Hi friend…
Thanks for ur nice solution…everything was going fine but at last, i am facing problem as it displays..

cp: cannot stat ‘ideapad-laptop.ko’ : No such file or directory

Pls help.

#61 
Written By sunny on September 1st, 2015 @ 20:58

OMFG THANK YOU!
I am a skilled professional Linux admin and I’ve been banging my head against this for hours. Thank you for posting this and the patch as well, you’ve saved my bacon.

– R

#62 
Written By Raston on September 20th, 2015 @ 00:38

Thank you so much for helping. I spend 1 full day experimenting with ask-Ubuntu and other. Could not make it working. With your simple and clear explanation I could fix Wi-Fi issue in 10 minutes.
I have Lenovo Yoga 3.
Cheers Eli.

#63 
Written By alfonso on October 6th, 2015 @ 20:39

This solution work for my Lenovo G50-80 with Intel 3160 AC wifi card, kernel 3.19.0-31, running elementary OS Freya.

Thanks Eli.

#64 
Written By bitseater on October 30th, 2015 @ 17:56

hello!

can you help me get the internal wifi to work on my lenovo yoga 700-14isk running kali 2.0?

Intel® Dual Band Wireless-AC 7265

thanks!

#65 
Written By carey on November 13th, 2015 @ 15:50

Are you a wizard?

#66 
Written By das monster on November 16th, 2015 @ 14:50

I have the same Yoga 2 13″ non-pro and I purchased and installed the Intel Dual Band Wireless-AC 7260. It wouldn’t go past POST. It complains I have unsupported hardware. I may have newer BIOS and they have blacklist this card. Is there a work around fix for this?

#67 
Written By Richard on December 7th, 2015 @ 21:26

I imagine you don’t check this anymore, but I’m having the same issue. I’m just confused where you say:

” It consists of making the following changes in drivers/platform/x86/ideapad-laptop.c”

I can’t find that file or that path anywhere on my machine, except for the one in red (/lib/modules/3.13.0-32-generic/kernel/drivers/platform/x86/) but those are all .ko files, not .c, so I’m really confused. Are we supposed to create the .c file? They way to describe it makes me think it’s supposed to be there already.

I would really appreciate if someone (especially the OP) could help clarify this very vague guide.

#68 
Written By Anthony on March 10th, 2016 @ 22:03

The said file is part of the Linux kernel’s sources. They aren’t installed by default on most distributions.

So you need to obtain the sources (probably with an apt-get or yum install), make the change, and then have the module compiled. That’s not necessarily trivial without any experience in kernel hacking or compilation.

#69 
Written By eli on March 10th, 2016 @ 22:10

On ubuntu 1604 the after the make command I get the following error: ” error: implicit declaration of function ‘acpi_video_backlight_support’ [- Werror=implicit-function-declaration]”

What can i do to bypass this situation? Thank you!

#70 
Written By kratos on July 30th, 2016 @ 19:03

Actually, I don’t think you need to fix anything on Ubuntu 1.04.

Anyhow, it sounds like you went for the “lazy fix” and it didn’t work on a more updated kernel. So you’ll have to go through the manual procedure, if necessary.

#71 
Written By eli on July 30th, 2016 @ 21:26

I’m having the same problem but running tails from a usb drive. Is this a solution that could run like a script and I could just run it every time I start a session?

#72 
Written By C on August 27th, 2016 @ 00:06

Hello,

You could compile the kernel module once on the target system, and then write a small script that removes the module and then does an insmod on the updated one.

But I doubt there’s something written already. This was a very transient problem, as later kernels fixed the original driver.

#73 
Written By eli on August 27th, 2016 @ 07:56

Hello,

Just wanted to say thanks for this post. It totally fixed the wifi under my CentOS 7 install on my Lenovo Yoga 2 13

Thanks!!

#74 
Written By Ryan L. on February 24th, 2017 @ 11:45

Try this command, it works for me.
sudo modprobe -r ideapad_laptop

#75 
Written By Dee Cai on April 24th, 2017 @ 08:30

Thanks for this great guide. It really helped me. I installed Linux Mint 18.1 on a Lenovo Y520 and had the same problem. The kernel is 4.4.0-53-generic.

I fist looked for kernel sources with

sudo apt-cache search linux-source

and then loaded the 4.4.0 sources with

sudo apt-get install linux-source-4.4.0

There I found the ideapad-laptop.c file under /usr/src/linux-source-4.4.0 in the only archive in this directory.

I located the function “static const struct dmi_system_id no_hw_rfkill_list” and extended the structure of laptops that do not have a kill switch as such:
{
.ident = “Lenovo Y520-15IKBN”,
.matches = {
DMI_MATCH(DMI_SYS_VENDOR, “LENOVO”),
DMI_MATCH(DMI_PRODUCT_VERSION, “Lenovo Y520-15IKBN”),
},
},

I had previously obtained the id of my laptop with
sudo dmidecode | grep “Version: Lenovo”

Then I used your makefile and followed your instructions.

Thanks again
Reinhard

#76 
Written By Reinhard on June 4th, 2017 @ 22:00

Thanks a lot for the blog. But this command works for me too.
sudo modprobe -r ideapad_laptop

#77 
Written By Hamed on September 10th, 2017 @ 23:39

Thank you my friend, it was really helpful!!!

#78 
Written By Asdrubal on September 11th, 2017 @ 15:43

It sounds like the problem I am having… well, one of the problems. The other problem is that I don’t understand most of what you said. :)

#79 
Written By Linda on September 26th, 2017 @ 00:10

verry good bro

#80 
Written By Kali Linux on April 14th, 2018 @ 19:12

Nice Blog ! I have found here lots of interesting information for my knowledge I need. all the details you provide to us, it was very helpful and useful, thanks for sharing this amazing post.

#81 
Written By Lenovo Support on August 13th, 2018 @ 10:24

Add a Comment

required, use real name
required, will not be published
optional, your blog address