Here was the problem. I just bought a new PCIe WiFi adapter for my PC, the TP-Link Archer T6E. After placing the card into my PCIe slot, I turned on my PC and I was not able to even select WiFi network. This happened both on my Win10 OS and Ubuntu 18.04 LTS.
On Win10, the fix was pretty quick. I found the driver on the vendor’s website, installed it, restarted the OS, then it was ready to go. On Ubuntu 18.04 LTS, it was a little bit involved because I didn’t know how to do it in the first place.
A quick trip to the Software & Updates on Ubuntu, specifically the Additional Drivers tab, I saw the option for a proprietary Broadcom driver but I was not able to activate it. A quick check on the internet revealed that in order to activate it, an internet connection is required so that the system can download the driver from the repository.
So, I needed internet to activate a device that could bring me back onto the internet. Neat. I guess the question now is why I had to buy this device. Well, long story short, I thought my previous WiFi card, Gigabyte GC-WB867D-I, was faulty because I had hard time connecting to my WiFi extender. It turned out that the problem was with my WiFi extender, but I bought a new WiFi card instead of a new WiFi extender. Smart.
phase 1: query info & finding package
Okay let’s install the driver (or, in linux’s parlance, kernel module).
The first thing I did was to query the information regarding the currently activated wireless driver with lspci
.
lspci -vnn | grep -A 9 Network
From here, I learned two things. First was the currently active kernel module, which was the bcma
. Even after googling for information, all I learned was that the bcma
kernel module was introduced since kernel v3.31 and nothing more than that.
The second piece of information was the chip itself: BCM4360
and 14e4:43a0
. These identifiers were the key information that would dictate which driver I should be using to enable the PCIe adapter. After another round of googling and I forgot from where I got this information from, the BCM4360
should use the wl
kernel module, which should be available through the bcmwl-kernel-source
package.
A quick check with apt-cache
revealed this information:
Pro-tip. If the apt-cache
returned information like I saw above, it means that the Ubuntu package archive actually has that package.
It seemed to me that this was the right target. All I had to do was to actually fetch its .deb
package. But, how did I do that without an internet connection? Well, I had a laptop that I could use to download the package.
I went to Ubuntu package archive website and navigated through several folders.
ubuntu > pool > restricted > b > bcmwl
Then I found the package bcmwl-kernel-source_6.30.223.271+bdcom-0ubuntu4_amd64.deb
, which I believed to be the latest available version.
Up until now, I checked two boxes: querying driver information and finding the driver file on Ubuntu archive website.
phase 2: installation & activation
Everything from here was more straightforward than the previous detective work. After downloading the package, I ran dpkg -i
to install it.
sudo dpkg -i bcmwl-kernel-source_6.30.223.271+bdcom-0ubuntu4_amd64.deb
Then I went to edit the /etc/modprobe.d/blacklist.conf
to comment the line 32, which says blacklist bcm43xx
. I was not sure if this step was strictly required, but I did it anyway.
After that, I rebooted my operating system and when I logged back in, I was able to choose wireless network.
end phase: verification
Before I called it a success, I decided to do a quick verification with the lspci
command.
The terminal returned Kernel driver in use: wl
. All’s good now. All’s good.
I would like to say thank you to a number of threads on Stack Overflow. Too bad, I did not get the chance to bookmark them all for future reference here. They all lost during a system reboot. Noob.