Tuesday, August 27, 2013

Vostro-no! Wifi Issues with Dell Vostro 1710

I have been known to extol the virtues of a Linux desktop to PC owners who don't require any software that specifically requires Windows to run. Seeing how the average person uses their machines for web-based tasks (searching, email, Facebook, etc.), all they really need is a decent browser. Co-incidentally, this is the same reason tablets are selling so well and traditional PC sales are declining; why buy/upgrade when your current system handles these basic tasks without breaking a sweat?

Anyway, back on topic: I have always found, that the average user cannot, under any circumstances, be subjected to major changes in their desktop computing experience, much to my chagrin. However, I have found one Linux distribution that provides as close to a pre-Windows 8 experience as possible: Linux Mint, specifically the Cinnamon desktop release. Being based on Ubuntu, it pretty much works with most hardware out of the box, however, recently I ran into an issue with an old Dell Vostro 1710 whereby the wireless didn't work without some tweaking.

After I found the wireless device hadn't been initialised, I scanned through the output of dmesg to see what had gone wrong and happened across the following messages:

[ 10.338771] b43-phy0: Broadcom 4312 WLAN found (core revision 15)
[ 10.679089] b43-phy0 ERROR: Firmware file "b43/ucode15.fw" not found
[ 10.679094] b43-phy0 ERROR: Firmware file "b43-open/ucode15.fw" not found
[ 10.679097] b43-phy0 ERROR: You must go to http://wireless.kernel.org/en/users/Drivers/b43#devicefirmware and download the correct firmware for this driver version. Please carefully read all instructions on this website.

I could have simply visited the URL in that message, but I wasn't happy with the thought of manually installing the firmware for the device; after all, this system needed to be manageable by someone not familiar with the command line. Quickly searching around online revealed a post on the Ubuntu forums that suggested the firmware-b43-installer package would take care of this for me. However, during the package installation, I was greeted by the following message:

An unsupported BCM4312 Low-Power (LP-PHY) device was found.
Use b43 LP-PHY firmware (firmware-b43-lpphy-installer package) instead.

Trying the firmware-b43-lpphy-installer package resulted in success:

(Reading database ... 138948 files and directories currently installed.)
Removing firmware-b43-installer ...
Selecting previously unselected package firmware-b43-lpphy-installer.
(Reading database ... 138945 files and directories currently installed.)
Unpacking firmware-b43-lpphy-installer (from .../firmware-b43-lpphy-installer_1%3a015-14_all.deb) ...
Setting up firmware-b43-lpphy-installer (1:015-14) ...
No chroot environment found. Starting normal installation
--2013-08-26 14:14:58-- http://downloads.openwrt.org/sources/broadcom-wl-4.178.10.4.tar.bz2
Resolving downloads.openwrt.org (downloads.openwrt.org)... 78.24.191.177
Connecting to downloads.openwrt.org (downloads.openwrt.org)|78.24.191.177|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 5986780 (5.7M) [application/octet-stream]
Saving to: `broadcom-wl-4.178.10.4.tar.bz2'

5,986,780 2.94M/s in 1.9s

2013-08-26 14:15:00 (2.94 MB/s) - `broadcom-wl-4.178.10.4.tar.bz2' saved [5986780/5986780]

Creating new firmware directory...
broadcom-wl-4.178.10.4/
broadcom-wl-4.178.10.4/config/
broadcom-wl-4.178.10.4/config/wlconfig_nomimo
broadcom-wl-4.178.10.4/config/wlconfig_lx_router_apsta_1chipG
broadcom-wl-4.178.10.4/config/wlconfig_lx_wl_sdstd
broadcom-wl-4.178.10.4/config/wlconfig_lx_shared
broadcom-wl-4.178.10.4/config/diffupdate.sh
broadcom-wl-4.178.10.4/config/wlconfig_lx_router_ap_1chipG
broadcom-wl-4.178.10.4/config/wlconfig_lx_router_ap
broadcom-wl-4.178.10.4/config/wlconfig_lx_router_ap_sdstd
broadcom-wl-4.178.10.4/config/wl.mk
broadcom-wl-4.178.10.4/config/wltunable_lx_router.h
broadcom-wl-4.178.10.4/config/wlconfig_lx_router_sta
broadcom-wl-4.178.10.4/config/wl_default
broadcom-wl-4.178.10.4/config/wltunable_lx_router_1chipG.h
broadcom-wl-4.178.10.4/config/wl_hnd
broadcom-wl-4.178.10.4/config/wlconfig_lx_router_sta_1chipG
broadcom-wl-4.178.10.4/config/wlconfig_lx_router_apsta
broadcom-wl-4.178.10.4/config/wlconfig_apdef
broadcom-wl-4.178.10.4/README
broadcom-wl-4.178.10.4/linux/
broadcom-wl-4.178.10.4/linux/wl_sta.o
broadcom-wl-4.178.10.4/linux/wl.o
broadcom-wl-4.178.10.4/linux/wl_ap.o
broadcom-wl-4.178.10.4/linux/wl_apsta.o
This file is recognised as:
filename : wl_apsta.o
version : 478.104
MD5 : bb8537e3204a1ea5903fe3e66b5e2763
Extracting b43/ucode5.fw
Extracting b43/pcm5.fw
Extracting b43/b0g0bsinitvals5.fw
Extracting b43/a0g0bsinitvals5.fw
Extracting b43/b0g0initvals5.fw
Extracting b43/a0g1initvals5.fw
Extracting b43/a0g0initvals5.fw
Extracting b43/a0g1bsinitvals5.fw
Extracting b43/ucode9.fw
Extracting b43/a0g1initvals9.fw
Extracting b43/a0g0bsinitvals9.fw
Extracting b43/b0g0bsinitvals9.fw
Extracting b43/b0g0initvals9.fw
Extracting b43/a0g1bsinitvals9.fw
Extracting b43/a0g0initvals9.fw
Extracting b43/ucode11.fw
Extracting b43/n0bsinitvals11.fw
Extracting b43/n0absinitvals11.fw
Extracting b43/n0initvals11.fw
Extracting b43/ucode13.fw
Extracting b43/b0g0initvals13.fw
Extracting b43/a0g1bsinitvals13.fw
Extracting b43/a0g1initvals13.fw
Extracting b43/lp0bsinitvals13.fw
Extracting b43/b0g0bsinitvals13.fw
Extracting b43/lp0initvals13.fw
Extracting b43/ucode14.fw
Extracting b43/lp0initvals14.fw
Extracting b43/lp0bsinitvals14.fw
Extracting b43/ucode15.fw
Extracting b43/lp0bsinitvals15.fw
Extracting b43/lp0initvals15.fw
Extracting b43/ucode16.fw
Extracting b43/n0bsinitvals16.fw
Extracting b43/sslpn0initvals16.fw
Extracting b43/n0initvals16.fw
Extracting b43/lp0initvals16.fw
Extracting b43/sslpn0bsinitvals16.fw
Extracting b43/lp0bsinitvals16.fw

After a reboot (I probably could have reloaded the module with a modprobe -r b43 && modprobe b43), I was able to use the network applet to view local wireless networks. For reference, the chipset in use was the BCM4312; below is the relevant line from the output of lspci:

06:00.0 Network controller: Broadcom Corporation BCM4312 802.11b/g LP-PHY (rev 01)