Sunday, October 16, 2011

WiFi Woes and Victories

Over the last several weeks my roommate and I have experienced a lot of frustrations with th Wi-Fi in our apartment. Between the two of us, we have several devises capapable of connecting to Wi-Fi including my Android phone, his laptop, an HP printer that we share and lately the laptop I received from my new job. The issue was not that these devices couldn't find or connect to the wireless router, but that they wouldn't stay connected. It's quite irritatting to see the devices showing full signal strength right up until you try to actually do something that requires that connection just to see that signal disappear!

Being a tech guy, I tried fiddling around with settings on the devices and the router. My first inclination was that there was something wrong with the router (it was a few years old and so I thought maybe it was slowly dying). So I went out a bought a new router (if nothing else, it was an excuse to update to a newer, faster router than we had). That didn't work. It was suggested by one of the IT people at my office that perhaps we needed to try moving the router lower, but placing it on the floor; she suggested that because she had had a similar issue at her house and moving the router down like that worked for her. Again, that didn't work. We were now pretty convinced that it was just that our apartment was a wireless blackhole. I mean, even our cellphones lacked signal to make and receive phone calls. My roommate has AT&T and I have Verizon, so it was unlikely that it was a carrier issue since we both experience the same issues with lack of signal.

Finally, about a week ago I finally got tired of not being able to print anything or take my laptop anywhere in the apartment or even use some of the apps on my phone while at home, so I went into troubleshooting mode. I logged into the router's GUI through my browser and starting looking at settings to see if maybe there was something there that needed tweaking. That's when I decided to check D-Link's website for any current firmware updates. Low and behold, there was a more current version of the firmware, so I proceeded to make a back up of my router configuration and flash the router. After restoring the configuration and restarting the router, everything worked! The printer, my Android, my roommate's laptop and my laptop (sort of) all were connecting to the Wi-Fi and maintaining that connection.

Now, you may wonder why I put “sort of” in parentheses when I mentioned my laptop. Being that the laptop belongs to the company I work for, I can't completely flatten it and just install Ubuntu. I have to keep the Windows 7 partition that it came with intact. So, when I boot into Windows 7, the Wi-Fi works fine, but when I boot into Ubuntu Linux, the Wi-Fi was continuing to do as it has always done – up, down, up, down. Well, obviously, if this was the only device/system that wasn't keeping the connection with the Wi-Fi, it wasn't the router causing it, so now it was time to go into troubleshooting mode again.

Here's the thing, while I'm not a big fan of Windows, I do have to give Microsoft some credit here. Since Windows is geared toward being used by everyone, not just computer geeks and technical support people, it has a lot of automated programs and scripts built in to fix itself (most of the time). So, in the case of the Wi-Fi situation when using the Windows 7 partition of my laptop, it fixed itself just by me telling it to search for a solution. Linux isn't as forgiving, not even Ubuntu, which is probably the closest thing to a mainstream flavor of Linux there is. With Linux the user is going to have exercise the ability to think and research to find the answers, and even then, have to have the confidence to make changes and tweaks to the system without fear of royally fucking up their computer. So, I exercised my skills in “Google-Fu” and started looking for any updates to Wi-Fi drivers specific to Linux for my Wi-Fi card.

The first step in this project was to try to search for drivers for the laptop model (in my case, a Dell Latitude E6400). I didn't have much luck there, except to find out information about how Ubuntu's default drivers generally wouldn't work with certain chipsets due to licensing constrictions. Great, now all I had to do was figure out which chipset I had for my wireless card. This is where it gets fun. On Dell's website, there were no less than about six different wireless cards possibly used in my model of laptop. That didn't exactly narrow things down for my search.

So, here's how you find out specifics on what's under the hood, so to speak, on a Linux machine. Open a command line terminal (CTRL-ALT-T or click on Applications>Accessories>Terminal). At the prompt type the command, lspci. This will produce output that looks something like this:


:/$ lspci
00:00.0 Host bridge: Intel Corporation Mobile 4 Series Chipset Memory Controller Hub (rev 07)
00:01.0 PCI bridge: Intel Corporation Mobile 4 Series Chipset PCI Express Graphics Port (rev 07)
00:03.0 Communication controller: Intel Corporation Mobile 4 Series Chipset MEI Controller (rev 07)
00:03.2 IDE interface: Intel Corporation Mobile 4 Series Chipset PT IDER Controller (rev 07)
00:03.3 Serial controller: Intel Corporation Mobile 4 Series Chipset AMT SOL Redirection (rev 07)
00:19.0 Ethernet controller: Intel Corporation 82567LM Gigabit Network Connection (rev 03)
00:1a.0 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #4 (rev 03)
00:1a.1 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #5 (rev 03)
00:1a.2 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #6 (rev 03)
00:1a.7 USB Controller: Intel Corporation 82801I (ICH9 Family) USB2 EHCI Controller #2 (rev 03)
00:1b.0 Audio device: Intel Corporation 82801I (ICH9 Family) HD Audio Controller (rev 03)
00:1c.0 PCI bridge: Intel Corporation 82801I (ICH9 Family) PCI Express Port 1 (rev 03)
00:1c.1 PCI bridge: Intel Corporation 82801I (ICH9 Family) PCI Express Port 2 (rev 03)
00:1c.2 PCI bridge: Intel Corporation 82801I (ICH9 Family) PCI Express Port 3 (rev 03)
00:1d.0 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #1 (rev 03)
00:1d.1 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #2 (rev 03)
00:1d.2 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #3 (rev 03)
00:1d.7 USB Controller: Intel Corporation 82801I (ICH9 Family) USB2 EHCI Controller #1 (rev 03)
00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev 93)
00:1f.0 ISA bridge: Intel Corporation ICH9M-E LPC Interface Controller (rev 03)
00:1f.2 RAID bus controller: Intel Corporation Mobile 82801 SATA RAID Controller (rev 03)
00:1f.3 SMBus: Intel Corporation 82801I (ICH9 Family) SMBus Controller (rev 03)
01:00.0 VGA compatible controller: nVidia Corporation G98M [Quadro NVS 160M] (rev a1)
03:01.0 CardBus bridge: Ricoh Co Ltd RL5c476 II (rev ba)
03:01.1 FireWire (IEEE 1394): Ricoh Co Ltd R5C832 IEEE 1394 Controller (rev 04)
03:01.2 SD Host controller: Ricoh Co Ltd R5C822 SD/SDIO/MMC/MS/MSPro Host Adapter (rev 21)
0c:00.0 Network controller: Intel Corporation WiFi Link 5100
:/$

Notice the last line in the output that says 0c:00.0 Network controller: Intel Corporation WiFi Link 5100 . In my case, that'st the WiFi adapter that is installed. Naturally, your's will most likely be different. Again, this is where Google-Fu skills need to be employed as now we have a specific chipset for which to search online for Linux drivers. My search lead me to http://intellinuxwireless.org/?n=Downloads and to the tar file iwlwifi-5000-ucode-8.83.5.1-1.tgz. The next step here was to download that file, open it, and extract the file iwlwifi-5000-5.ucode and copy that into the /lib/firmware directory on my laptop, then reboot and test. I'm happy to say it worked. Wi-Fi is up and running on everything in the apartment now.

Hopefully writing this blog will help someone else and keep them from having to go through as long of period of searching, re-searching and figuring out exactly what the fuck is wrong. Granted, my examples are specific to my laptop, but the methodology will be the same for anyone. Good luck and happy hunting!

~ JC

Glossary of terms:

Wi-Fi – a mechanism for wirelessly connecting electronic devices (http://en.wikipedia.org/wiki/Wi-Fi)

GUI – a graphical user interface (GUI, sometimes pronounced gooey) is a type of user interface that allows users to interact with electronic devices with images rather than text commands - (http://en.wikipedia.org/wiki/GUI)

Linux – a computer operating system which is based on free and open source software. Although many different varieties of Linux exist, all are Unix-like and based on the Linux kernel, an operating system kernel first released October 5, 1991 by Linus Torvalds - (http://en.wikipedia.org/wiki/Linux)

Ubuntu – a computer operating system based on the Debian GNU/Linux distribution and distributed as free and open source software. It is named after the Southern African philosophy of Ubuntu ("humanity towards others") - (http://en.wikipedia.org/wiki/Ubuntu_(operating_system)


No comments: