Qualcomm Atheros WiFI, Lenovo v310 & Ubuntu 16.04

You need to disable ideapad_laptop module that is blocking the Wi-Fi.

Run in a terminal

sudo tee /etc/modprobe.d/blacklist-ideapad.conf <<< "blacklist ideapad_laptop"

and reboot.


You don't need to disable ideapad_laptop anymore; just update the Linux kernel to the latest version (or any version after v4.13). To find out what version you currently have

uname -r

If you have an older version, you can install a newer one with the Update Manager (e.g. View > Linux kernels). If Update Manager doesn't have v4.13+, you can use the method detailed on the Ubuntu wiki mainline kernel builds page. Just get the right deb files from the Ubuntu kernel page, install and reboot.

I had the exact same issue and this fixed it for me.

If you are curious about why this happened, this is what I understood about the problem:

This is a Lenovo V310 issue. The linux kernel comes with ideapad-laptop.ko kernel module (you can find it in /lib/modules/KERNEL-VERSION/kernel/drivers/platform/x86/ideapad-laptop.ko). This is a generic module for ideapad laptops, and most of them have a hardware switch for wifi. The module will try to read the value of the switch (on/off), and if the switch is absent it will wrongfully interpret it as off, so it disables the wifi. This happens on V310. However, there is a list of laptop models in ideapad-laptop.ko that don't have this hardware switch, so the module knows to ignore the value it reads from the switch and just keep wifi on. You can find this list here in the comment on the patch on GitHub

Lenovo V310 was not initially on the list, but it was added earlier this year to versions v4.13+ (kinda, if you are really interested about this, check this commit, and this one or look at file history).

So possible solutions would be to update kernel to a version that has V310 (as I described above), add it yourself to ideapad-laptop.c, compile the module and replace the one in lib/modules or as the previous answer suggested, just disable the entire ideapad-laptop module (I guess you miss some functionality here, but it's probably not that big of a deal).