Ubuntu 8.04 Wireless Woes
I just finished updating my laptop from Ubuntu 7.10 to the new Ubuntu 8.04 release. All went well except for one thing. In addition to many other improvements, Ubuntu 8.04 installed a new version (2.6.24-16) of the Linux kernel. Now this would seem to be a good thing. But, once again a Linux distribution failed my "Ready for Prime Time" test...which is to provide me with a working 802.11b/g, or "Wi-Fi," interface with little or no pain my part.
This issue with wireless interfaces is not unique to Ubuntu...I had the same problem with SUSE Linux in the past. I won't go into the many reasons for the lack of robust wireless support in Linux as Google can find you many learned (and some not so learned) dissertations on that subject and many places to point the finger and fix the blame.
Having been faced with this problem in the past, I applied all my "lessons learned" in an attempt to fix it. But much to my chagrin, none of them worked. I was finally reduced to searching through the Linux syslog to see if I could find a clue about what the problem was. I found the following entries in the syslog:
Apr 30 07:53:55 roadie firmware_helper: main: error loading '/lib/firmware/b43legacy/ucode4.fw' for device '/devices/pci0000:00/0000:00:1e.0/0000:02:01.0/0000:03:00.0/ssb1:0/firmware/ssb1:0' with driver '(unknown)'
Apr 30 07:53:55 roadie kernel: [26485.121152] b43legacy-phy0 ERROR: Firmware file "b43legacy/ucode4.fw" not found or load failed.
Apr 30 07:53:55 roadie kernel: [26485.121166] b43legacy-phy0 ERROR: You must go to http://linuxwireless.org/en/users/Drivers/b43#devicefirmware and download the correct firmware (version 3).
Apr 30 07:53:57 roadie NetworkManager:
nm_device_802_11_wireless_scan(): (eth1): could not trigger wireless scan: Network is down
These error messages were generated by the Linux kernel during the system boot, but Ubuntu happily finished booting and asked for the userid and password without giving any hint of there being a serious error encountered during the system boot up. Seems to me not much has changed over the years in *nix systems when errors such as this occur. Can you imagine some poor user with minimal knowledge of Linux trying to determine what went wrong? And determining what went wrong is only the first step...determining how to fix it is no walk in the park for those with minimal Linux knowledge. Unfortunately. it is not as simple as "downloading the correct firmware...."
Fortunately for me, I knew that one could download and install packages from Ubuntu that would fix the problem. You need to open a terminal window and enter the fllowing at the command line prompts (or, alternatively, use the GUI-oriented Synaptics Package Manger:
sudo apt-get install build-essential
sudo apt-get install b43-fwcutter
build-essential contains a recommended list of basic packages used when "building" packages such as b43-fwcutter.
b43-fwcutter is a utility for extracting firmware from Broadcom BCM43xx "proprietary" (Windows) driver files and then storing the resulting files in a folder where the Linux kernel can use them to initialize the wireless device at boot time. You can learn more about b43-fwcutter and what it does here.
So that solved my wireless problem...or so I thought! The laptop's wireless card initialized and synced up with my Wireless Access Point (WAP), But I still had no connectivity to the Internet. I could access all my local PCs and local Server, but could not make a connection over the Internet. I checked the log in the gateway router and noticed that there were error message saying that the router was getting errors when trying to make TCP connections.
It then occurred to me that I had both the wired and tethered interfaces active on the laptop. I disabled the tethered interface (ifdowm eth0) and that solved the problem. I now connectivity on both my LAN and the Internet. Why this solved the problem and why the LAN connectivity with both interfaces active remains a problem to be solved another day...if ever! The only thing that comes to mind is that for connections over the LAN I use actual IP addresses (e.g., 192.168.1.x), while for Internet connections the ISP's DNS gets involved to do the domain name to address mapping.
And I almost forgot...for the record, my wireless card is a Linksys WPC54G, which was a popular device back in the olden days (aka 2003). And I guess it still is as Linksys still sells and support them. I wonder how many potential converts have given up on Linux for their desktop OS because they've experienced problems like this.
Finally here is a link to another person's blog where he describes goinhg through a similar exercise to get his wireless interface working with Ubuntu 8.04.