As of this afternoon the wifi on my Dell XPS 13 stopped working (running Debian sid with kernel 4.4.0-1-amd64). lspci detects my wifi card, but ifconfig -a shows only the loopback interface.

I tried plugging in a USB wifi dongle which I have used recently with this laptop, and this also does not get recognized as a network interface. Both during startup and immediately after plugging in a USB wifi dongle, the following message appears in dmesg:

cfg80211: Unknown symbol wireless_nlevent_flush (err 0)

cfg80211 sounds like it would be used for configuring 802.11 (i.e. wifi) so I suspect this kernel module isn't getting loaded correctly. Indeed, if I try to modprobe cfg80211 I receive the following error:

modprobe: ERROR: could not insert 'cfg80211':? Unknown symbol in module, or unknown parameter (see dmesg)

and checking dmesg I see the same message as above.

Googling for "unknown symbol wireless_nlevent_flush" yields zero results, although googling for just wireless_nlevent_flush seems to imply that it relates to wext somehow. One page suggested that rfkill must be loaded before cfg80211, but rfkill is already loaded. I would be very grateful for any advice.

  • This looks like a software error, more precisely like a module that doesn't match the kernel version. What have you upgraded recently? – Gilles Mar 23 '16 at 22:17
  • checking my apt logs, I ran updates a couple days before this issue manifested (and it's entirely possible that there was no reboot in between). The kernel, linux-image-4.4.0-1-amd, updated from version 4.4.2-3 to 4.4.6-1. Checking the deb cache, it looks like the 4.4.2-3 deb is still there, I'll try downgrading and crossing my fingers! – Mala Mar 23 '16 at 22:28
  • Hooray! Did a dpkg -i /var/cache/apt/archives/linux-image-4.4.0-1-amd64_4.4.2-3_amd64.deb and now I can internet again. If you would please write your comment as an answer I'll accept it :) – Mala Mar 23 '16 at 22:35

Your cfg80211 module and your running kernel are incompatible. The internal programming interfaces in the kernel change rather frequently, so when you upgrade your kernel, you need to keep modules in synch. (The exception is a few out-of-tree modules that are specifically maintained to work across a large range of kernel versions.)

If you upgraded your kernel package since the last reboot, you probably have a running kernel that no longer matches the kernel version(s) on disk, and so modprobe is trying to load a module for a more recent kernel. Make sure not to uninstall a linux-image-… package corresponding to the running kernel. You can check the running kernel version with the command uname -r; with Debian's package naming convention, the package linux-image-$(uname -r) should be installed.

If you've removed the package, then you'll either need to reinstall it or reboot. To reinstall, check if you still have the package in /var/cache/apt/archives. If you don't, look for the package on snapshot.debian.org (with a version matching the version of the linux-image-… package, i.e. the second column of dpkg -l, which is not always exactly the version contained in the name).

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.