***This is a how-to on compiling the latest Broadcom driver for people who's card is not working/supported by the driver in repositories***
Hi guys
I just bought a Lenovo Thinkpad E420 some days back. It came pre-installed with Windows 7. So, I chucked that out and installed Ubuntu 11.04 (though I must add I still use in under Gnome classic). But after installation, like most other Linux users, I had a nightmare and the wireless was not working. Right clicking wouldn't be given me an option to 'Enable Wireless'. I tried every single solution on this forum:
http://ubuntuforums.org/showthread.php?t=1604868but only to get more frustrated. Weird results as of some commands which I would like to share:
Code:
kamal@ThinkPad-E420 ~ $lspci -nn
00:00.0 Host bridge [0600]: Intel Corporation Sandy Bridge DRAM Controller [8086:0104] (rev 09)
00:02.0 VGA compatible controller [0300]: Intel Corporation Sandy Bridge Integrated Graphics Controller [8086:0116] (rev 09)
00:16.0 Communication controller [0780]: Intel Corporation Cougar Point HECI Controller #1 [8086:1c3a] (rev 04)
00:1a.0 USB Controller [0c03]: Intel Corporation Cougar Point USB Enhanced Host Controller #2 [8086:1c2d] (rev 04)
00:1b.0 Audio device [0403]: Intel Corporation Cougar Point High Definition Audio Controller [8086:1c20] (rev 04)
00:1c.0 PCI bridge [0604]: Intel Corporation Cougar Point PCI Express Root Port 1 [8086:1c10] (rev b4)
00:1c.1 PCI bridge [0604]: Intel Corporation Cougar Point PCI Express Root Port 2 [8086:1c12] (rev b4)
00:1c.2 PCI bridge [0604]: Intel Corporation Cougar Point PCI Express Root Port 3 [8086:1c14] (rev b4)
00:1c.3 PCI bridge [0604]: Intel Corporation Cougar Point PCI Express Root Port 4 [8086:1c16] (rev b4)
00:1c.7 PCI bridge [0604]: Intel Corporation Cougar Point PCI Express Root Port 8 [8086:1c1e] (rev b4)
00:1d.0 USB Controller [0c03]: Intel Corporation Cougar Point USB Enhanced Host Controller #1 [8086:1c26] (rev 04)
00:1f.0 ISA bridge [0601]: Intel Corporation Cougar Point LPC Controller [8086:1c49] (rev 04)
00:1f.2 SATA controller [0106]: Intel Corporation Cougar Point 6 port SATA AHCI Controller [8086:1c03] (rev 04)
00:1f.3 SMBus [0c05]: Intel Corporation Cougar Point SMBus Controller [8086:1c22] (rev 04)
02:00.0 Ethernet controller [0200]: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller [10ec:8168] (rev 06)
03:00.0 System peripheral [0880]: Ricoh Co Ltd Device [1180:e823] (rev 04)
08:00.0 Network controller [0280]: Broadcom Corporation Device [14e4:0576] (rev 01)
Code:
kamal@ThinkPad-E420 ~ $ sudo lshw -C network
[sudo] password for kamal:
*-network
description: Ethernet interface
product: RTL8111/8168B PCI Express Gigabit Ethernet controller
vendor: Realtek Semiconductor Co., Ltd.
physical id: 0
bus info: pci@0000:02:00.0
logical name: eth0
version: 06
serial: f0:de:f1:53:f8:6d
size: 100MB/s
capacity: 1GB/s
width: 64 bits
clock: 33MHz
capabilities: pm msi pciexpress msix vpd bus_master cap_list ethernet physical tp mii 10bt 10bt-fd 100bt 100bt-fd 1000bt 1000bt-fd autonegotiation
configuration: autonegotiation=on broadcast=yes driver=r8169 driverversion=2.3LK-NAPI duplex=full ip=192.168.1.2 latency=0 link=yes multicast=yes port=MII speed=100MB/s
resources: irq:45 ioport:4000(size=256) memory:d0404000-d0404fff memory:d0400000-d0403fff
*-network
description: Wireless interface
product: Broadcom Corporation
vendor: Broadcom Corporation
physical id: 0
bus info: pci@0000:08:00.0
logical name: eth1
version: 01
serial: ac:81:12:20:ca:05
width: 64 bits
clock: 33MHz
capabilities: pm msi pciexpress bus_master cap_list ethernet physical wireless
configuration: broadcast=yes driver=wl0 driverversion=5.100.82.38 latency=0 multicast=yes wireless=IEEE 802.11abgn
resources: irq:19 memory:d1d00000-d1d03fff
So, coming to the point I thought I should start a thread for people who are struggling with Broadcom drivers for wireless.
To tell you the truth, I only followed the instructions on the Broadcom drivers website which is at
http://www.broadcom.com/support/802.11/linux_sta.phpBut I would like to give step by step instructions for people who might have had difficulty following the readme file
1.
Code:
sudo apt-get install build-essentials linux-headers-generic
2.
Code:
sudo apt-get build-dep linux
These 2 steps are required to install the relevant headers and tools
Step 2 might return an error regarding sources.list. Don't worry about it!
3.
Note down the kernel version number. I will be required at a later stage to load the driver at boot up
4. Download relevant driver - 32bit or 64bit
5. Make a directory in the home folder using
6. Change directory using
7. Untar the file to the directory we just created
Code:
tar xzf <path>/hybrid-portsrc_x86-32_v5.100.82.38.tar.gz
In my case <path> was home/kamal/Downloads
So I wrote
Code:
tar xzf home/kamal/Downloads/hy...
8. Now build the driver as linux loadable kernel moduleh
After the build a wl.ko file will be created in this directory
Now, if you have installed STA or any other Broadcom driver before remove it from Synaptics by searching for 'b43'
For removing STA, use
Code:
sudo apt-get --purge remove bcmwl-kernel-source
Then type
Code:
lsmod | grep "b43\|ssb\|wl"
If any of the following are installed, remove them:
# rmmod b43
# rmmod ssb
# rmmod wl
Though, as per my understanding, the purge command should remove each and every bit.
9. Then type
Code:
sudo modprobe lib80211
If it returns any error, use
Code:
sudo modprobe ieee80211_crypt_tkip
And then
Your wireless should be working now and you can enable it by clicking the nm-applet
**Load Driver at boot time**
Now like a smart-*** I didn't do it at first.
Type
Code:
sudo cp wl.ko /lib/modules/'uname -r'/kernel/drivers/net/wireless
And then
Now the last command, which was meant to be used in Ubuntu, as per the readme, didn't work for me. I had some syntax error.
You can try it by typing
Code:
sh: for i in `find /lib /var -name wl\.ko`; do mv $i ${i}.orig; done
What I tried was meant to be for Fedora but worked on my Ubuntu.
Code:
sudo echo modeprobe wl >> /etc/rc.local
Now, this one denied me permission when I tried to do it this way. So, I had to log in as root and do the command and it worked. Strange, eh!
Later I realised you can use the root terminal as well to do it. It can be found the applications once you unhide it.