Internet issues in Ubuntu 10.04

Wired ethernet

To download, compile and install the driver, first go to http://linuxwireless.org/download/compat-wireless-2.6 and download the file named “compat-wireless-2.6.tar.bz2” (you can’t download it in the terminal because of anti-hotlinking). Save it to your desktop. Then run these commands:
Code:

sudo apt-get update
sudo apt-get install build-essential
cd ~/Desktop
tar -xjvf compat-wireless-2.6.tar.bz2
cd compat-wireless*
scripts/driver-select atl1c
make
sudo make install

Then reboot. Hopefully your ethernet will work automatically after reboot; if not, run:
Code:

sudo modprobe atl1c

Wireless WiFi:

this is what you must do:

1. Download the Broadcom drivers: http://www.broadcom.com/support/802.11/linux_sta.php
2. Unpack and modify the ‘src/wl/sys/wl_linux.c‘:
Line 35 (after #include ) add:

#include<linux/sched.h>

3. Compile the code with: make
4. Copy the new driver: sudo mv wl.ko /lib/modules/$(uname -r)/kernel/drivers/net/wireless
5. Update dependencies: sudo depmod -a
6. Modify the blacklist to include the ‘b43′ and ’ssb’ drivers /etc/modprobe.d/blacklist.conf (Add below the bcm43xx blacklist)

The part above you probably have seen a few times while googling for the answer. But there is a small problem, as you would have noticed, the ‘ssb‘ driver cannot be blacklisted. It is included in the initrd as I remember from the ubuntuforums. To solve this issue modify the /etc/rc.local to include before the exit(0):

Code:

rmmod ssb
modprobe wl

Now on startup the ssb gets removed and after that the new wl gets inserted. Adding wl to the /etc/modules will not help because the removing needs to be done first.
So with the /etc/rc.local modification everything happens in the correct order for perfect WiFi.

This was tested multiple times on a MacBook Pro with the Broadcom 4328 chipset and should work for all chipsets not supported by the b43 drivers.

Update:
Not all systems include the ‘linux/sched.h’ file. Install the ‘linux-headers-generic’ package if you get errors. The generic package is a meta package that should install the propper package for your kernel. If it isn’t working install with
Code:

sudo apt-get install linux-headers-$(uname -r)