Broadcom Wireless

From SlackWiki
Jump to navigation Jump to search

Introduction

This tutorial is written for setting up wireless on Slackware on laptops with Broadcom wireless cards. It deals with installing Boradcom's official proprietary wl driver for Linux that includes support for Broadcom's BCM4311-, BCM4312-, BCM4313-, BCM4321-, BCM4322-, BCM43224-, and BCM43225-, BCM43227- and BCM43228-based hardware.

Prerequisites

This tutorial assumes a full Slackware installation. There should also be a way to transfer files to the target laptop - it can either be a working internet connection using the laptop's ethernet card, or a different machine with internet access and a USB thumb drive to transfer the files. The regular user account on the laptop must also be a part of the netdev group.

Getting Started

The first thing is to check if the user is part of the netdev group :

groups

If the output does not contain netdev, then as root, enter the following command :

usermod -a -G netdev username

where username is the name of your user account.

Installing the driver

Sbopkg method

If a working internet connection is available on the laptop (say a wired connection), use sbopkg to install the drivers :

sbopkg -i broadcom-sta

Manual method

Navigate to the slackbuilds.org's broadcom-sta page and build the package according to the instructions given. Make sure to download the source code relevant to the architecture of your installation (32-bit or 64-bit).

Kernel upgrade

If at any point you upgrade your kernel, you will have to do this process again, because the module is compiled against the running kernel only.

Blacklisting the b43 and ssb modules

The Broadcom's wl driver conflicts with the kernel's b43 driver, so create the /etc/modprobe.d/b43-blacklist.conf file (name doesn't matter, but it's nice to have something intuitive) using the text editor of your choice as root and add the following lines to it :

blacklist ssb
blacklist b43
blacklist bcma

Final steps

At this point, reboot your machine. The drivers should be installed and work now. To test this, enter the iwconfig command. you should see an output like this :

$ iwconfig
lo        no wireless extensions.

eth1      IEEE 802.11  Nickname:"lapto"
          Access Point: Not-Associated   
          Link Quality:5  Signal level:217  Noise level:199
          Rx invalid nwid:0  invalid crypt:31  invalid misc:0

eth0      no wireless extensions.

This output suggests that the drivers installed right and your wireless card is recognized as eth1 by the kernel. Hooray!

If you still don't see the wireless extensions, check if any of the blacklisted modules are really not loaded:

lsmod | grep ssb
lsmod | grep b43
lsmod | grep bcma

None of this commands should return anything. If any of the modules are still loaded, remove them manually:

rmmod ssb
rmmod b43
rmmod bcma

You can also make sure that the "wl" module is properly loaded

lsmod | grep wl

If there is no output, you may load the "wl" module manually

modprobe wl


You can now either use the iwconfig tool to configure your wireless networks, or if you prefer to use a GUI, follow the next section for installing Wicd.

Installing Wicd

To make management of wireless connections easier, we will install Wicd network manager that provides a simple configuration GUI and system tray icon.

Using slackpkg

If a working internet connection is available on the laptop (say a wired connection), simply use slackpkg to install wicd :

slackpkg install wicd

Using package tarball

Download the Wicd package for your Slackware version from the extra/ section of your preferred Slackware mirror and install using installpkg.

For example, on a 32-bit system running Slackware 13.37, as root:

 wget http://slackware.dreamhost.com/slackware/slackware-13.37/extra/wicd/wicd-1.7.0-i486-2.txz
 installpkg ./wicd-1.7.0-i486-2.txz

Wicd usage

Start the Wicd daemon :

 /etc/rc.d/rc.wicd start

Once its started, run wicd-client and configure the network to your liking.

Caveat

Wicd by default treats wlan0 as the default wireless interface. Since the interface is eth1 in our case, you might want to correct this in Wicd's Preferences.

User note

In order to access the wicd client utilities, your user must also be in the netdev group. Add your user to the netdev group, logout and login to make it effective, then you can run the wicd client utilities as your user. For the CLI based tool, there is wicd-cli and wicd-curses. For the GUI client, ther is wicd-client and wicd-gtk.