- My WiFi adapter is not working at all, how to troubleshoot?
- 3 Answers 3
- Preparation
- Is it really a driver issue?
- Installing (newer) drivers
- Identifying the exact hardware
- Tips in using Google
- I had no luck with all options. What should I provide in a new question?
- Things to avoid if possible
- Hardware requiring special care
My WiFi adapter is not working at all, how to troubleshoot?
On this site I see hundreds if not a thousand questions being asked about issues with a Wireless LAN adapter not being detected/recognized by Ubuntu. Some mainstream adapters appear to be utterly broken in Linux support, while others just require some simple steps to get it to work. The options to get it to work appear to be infinitely huge and I have no clue where to get started! What is considered ‘best practice’? What order of things to try is most efficient in terms of time, effort and imposes minimal risk to my Ubuntu installation? Please help me save time and guide me what to do, step by step.
For those who are still looking for some solution, I searched for several days, the solution is therefore to update the kernel to 5.10 or 5.12 example, I had 5.8 on 20.04.2 LTS with a dual boot, neither wireless or bluetooth worked, I upgraded the kernel to 5.12 via askubuntu.com/a/1291835/855698 and it works now. I hope it will help those who will have this trouble.
3 Answers 3
This answer covers completely non-functional wireless LAN only. It is not about stability/performance issues, or half-working cases. However, some steps may be helpful in case you’re running into them and looking for other options.
Preparation
In this answer I’m assuming you’re familiar with at least the following tasks: running commands in a terminal and installing regular Ubuntu software packages. If you’re not familiar with these basic steps, start reading this and this.
- Get the machine connected to the internet. This makes performing the the steps a lot easier and to use the clipboard for the actions. If another network card is working, this should be easy. If your only card is failing at this point, find alternatives to this and be creative, e.g. using an USB wired network adapter or an alternative working WiFi adapter borrowed from a friend or neighbour.
- Make sure you have installed the following packages: lshw , rfkill .
- Update your system. By installing all latest (regular) system updates, bug fixes already released by developers after the release should be on your PC by doing so. Don’t forget to reboot your system afterwards. See also How do I update Ubuntu? After applying all updates, reboot. It may already work in this stage. If not, just continue.
Is it really a driver issue?
First of all, one should determine whether the card isn’t recognized and/or if it’s a radio kill switch preventing it from working. Follow all steps below, as your problem may be two- or three-fold:
- Run sudo lshw -C network in a terminal. You might need to install lshw first.
- In case multiple devices are listed, locate the device concerned.
- In case it’s listed as *-network UNCLAIMED , you should follow the steps in Installing (newer) drivers.
- In case it’s listed as *-network (without ‘Unclaimed’), the output below about the driver could be relevant in further steps, e.g. configuration: broadcast=yes driver=iwlwifi
- In case your device isn’t listed at all, try the additional steps in Identifying the exact hardware.
- Run rfkill list in a terminal. This lists the state of radio killswitches. Sample output:
1: phy0: Wireless LAN Soft blocked: no Hard blocked: no
- In case you see yes on Hard blocked : refer to your notebook manual for a hardware switch for Wireless LAN.
- In case you see yes on Soft blocked : hotkeys on your notebook may help activating it, as well as hitting «Enable Wireless» in the Network Manager applet. If that fails to remove the soft block, run sudo rfkill unblock all .
- In case you don’t see any kill switches listed: this might not apply for your device. Usually only mobile PCs are equipped with killswitches.
- Preferably, try one directly attached to your mainbord, avoiding hubs or your computer case’s connectors.
- Try using another type of USB port (e.g. USB2.0 instead of USB3.0 port).
- Go to Identifying the exact hardware and see if you can see some error messages when you plug in your device.
- Try another cable (if any) you’ve verified is working.
Installing (newer) drivers
These are some obvious, sane and harmless steps to take, avoiding the ones listed in Things to avoid if possible.
- Try to see if Ubuntu suggests to install additional drivers. Refer to How do I install additional drivers? for more information on how to do do this.
- Install additional firmware as this may be required for your hardware.
- Make sure you have enabled multiverse as posted in How do I enable the «multiverse» repository?
- Install both linux-firmware and linux-firmware-nonfree packages, e.g. sudo apt-get install linux-firmware linux-firmware-nonfree and reboot.
- Try backported kernel modules (drivers) from the compat-wireless package. Ubuntu provides packages of compat-wireless of more recent Linux kernel releases for the kernel with the stable distribution (available since 11.10 Oneiric Ocelot).
- Find the latest ones available by searching with your favourite package management tool. At the time of writing, this was linux-backports-modules-cw-3.6-quantal-generic for Quantal. In the near future, a 3.7 package may be out.
- Install it, e.g. sudo apt-get install linux-backports-modules-cw-3.6-quantal-generic for Quantal, or sudo apt-get install linux-backports-modules-cw-3.6-precise-generic for Precise. Then reboot.
In case you’re running an LTS release (e.g. Precise or Lucid), backported kernels of all next releases are provided as a package. At the time of writing Quantal is the latest release after Precise and the package is linux-image-generic-lts-quantal and boot into your new kernel.
- Go to the kernel.ubuntu.com downloads section and identify the latest stable release (e.g. v3.7.1-raring at the time of writing).
- Download all the .deb files for your architecture (e.g. amd64 or i386 ), plus the ones with all in the name.
- Install them all at once by issuing e.g.:
cd Downloads sudo dpkg -i linux-headers-3.7.1-030701-generic_3.7.1-12345678_amd64.deb linux-image. # include all
Identifying the exact hardware
The product you have was probably sold using a retail name completely irrelevant to you issue. Most vendors just use chipsets from manufacturers like Broadcom, Atheros, Ralink or Intel while the product itself may not carry this name. One example of this: a ThinkPad 11a/b/g/n Wireless LAN Mini Express Adapter may in fact just be a Atheros AR5418 . The Thinkpad rebrand does usually not affect the hardware support in Linux, but the used chipset does. Therefore, it’s of great importance to identify the chipset.
- PCI and integrated devices (e.g. mobile PCs):
- Unplug the device.
- Open a terminal and run sudo tail -n 0 -f /var/log/syslog
- Re-plug the device in and give the kernel/device a few seconds to initialize.
- Stop the command by pressing Ctrl + C . The output should help identifying it from the list.
- Check for output mentioning unable to enumerate USB device . If such output is present, your device is already failing on communication on USB-level. You’re hitting a hardware issue probably: check for broken cables/connectors, power issues, broken hubs, other broken hardware. Don’t bother dealing with drivers at this point — fix USB communication first.
In case your hardware isn’t listed, this may be unrelated to your adapter, but a general PCI/USB bus error. This is considered outside the scope of a WiFi issue. Note that some notebooks have integrated WiFi adapters connected to an internal USB port, so it may be listed as USB in such a case.
$ lsusb Bus 001 Device 002: ID 8087:0024 Intel Corp. . ^^^^-- product ID ^^^^------- vendor ID $ lspci -nn | grep -i network 04:00.0 Network controller [0280]: Intel Corporation [. ] [8086:4238] (rev 3e) vendor ID --^^^^ product ID -------^^^^
Tips in using Google
- Use the numeric product/vendor IDs as identified by the commands issued.
- Use linux as a keyword with it, rather than Ubuntu .
- Try using the device’s chipset name as listed in the output in the steps of Identifying the exact hardware. Examples: AR9285 , BCM4311 , Intel + 6300 .
- Avoid using keywords unrelated to hardware support. E.g. your desktop environment is unrelated, so use Ubuntu instead of Lubuntu .
- Try to be sensitive for ‘general’ information about your device, rather than focusing on specific solutions, e.g. «Firmware is needed for this device», or reports of users that it worked out-of-the-box in a previous release.
I had no luck with all options. What should I provide in a new question?
Before posting a new question, search this site using keywords from Identifying the exact hardware.
- All relevant (unexpected or errors) output from the options in this answer.
- Relevant output of the steps done in the Identifying the exact hardware section.
- The kernel you’re running and the versions you’ve tried. Use the uname -r command to identify your kernel version.
- Other Ubuntu versions you’ve tried.
Things to avoid if possible
- Compiling from source (e.g. running make , sudo make install ).
- This may overwrite system files and confuse your package management. Installing this way may work, but can break anytime later if the package management updates overwrite the files again.
- It may lead to unexpected errors which may be hard to solve for a novice user.
- It’s hard to undo all the changes done by sudo make install in case you want to revert your actions.
- This ‘wrapper’ around Windows drivers should be tried as a last resort only, as it’s very inefficient to emulate a Windows environment on Linux for hardware drivers.
- Stability and performance are usually reported as low.
Hardware requiring special care
- Broadcom BCM43xx devices. Please refer to this answer for a nice tutorial on getting these devices to work.