Enabling a Dell Wireless 1370 network adapter (BCM4328) on Ubuntu Linux

After three recent virus infections on Windows XP and Windows 7 (including at least one rootkit infection), I turned to Ubuntu Linux as a safer operating system. Two of the PCs were blessed with Atheros-based wireless network adapters, which are well-supported on Linux. The other laptop, a Dell Inspiron 2200, is blessed with one of those infamous Broadcom chipsets.

Supposedly, the BCM4328 (rev 02) wireless chipset is supported on Linux, but as of Ubuntu Desktop 11.04 and Linux Mint 11, it doesn’t work reliably. So I turned to the old tried-and-true ndiswrapper to run the BCM4328 Windows driver under Linux.

ndiswrapper conflicts

The process was nowhere near as straightforward as I expected. Ubuntu users since 6.04 have experienced with ndiswrapper conflicts with any of the following kernel modules:

  • bcm43xx
  • b43
  • b43legacy
  • ssb
  • b44

Resolution

  1. Blacklist the conflicting modules:
    echo -e "blacklist bcm43xx\nblacklist b43\nblacklist b43legacy\nblacklist ssb\nblacklist b44" | sudo tee -a /etc/modprobe.d/blacklist.conf
  2. Install the Windows driver into ndiswrapper:
    sudo ndiswrapper -i ~/drivers/bcmwl5.inf
    sudo ndiswrapper -l
    sudo ndiswrapper -m
    sudo depmod -a
    sudo modprobe ndiswrapper
  3. Configure nm-applet to load ndiswrapper:
    echo -e "\nndiswrapper\n" | sudo tee -a /etc/modules
  4. Create a boot script to unload and re-load the conflicting kernel modules in the right order (thanks to levmatta):
    1. Create a file in /etc/init.d/ndiswrapper with this text:
      #! /bin/sh
      ### BEGIN INIT INFO
      # Provides: ndiswrapper
      # Required-Start:
      # Required-Stop:
      # Default-Start: S
      # Default-Stop:
      # Short-Description: enable to load ndiswrapper
      # Description: enable to load ndiswrapper
      ### END INIT INFO
      
      rmmod b44
      rmmod ohci_hcd
      rmmod ssb
      rmmod ndiswrapper
      modprobe ndiswrapper
      modprobe ssb
      modprobe ohci_hcd
      modprobe b44
      
      ############# end file ############
    2. Set the file access permissions:
      sudo chmod 755 /etc/init.d/ndiswrapper
    3. Set this script to run at startup:
      sudo ln -s /etc/ndiswrapper /etc/rc2.d/S99ndiswrapper
  5. Reboot.

This worked for me on Linux Mint 11, which is based on Ubuntu 11.04. Your mileage may vary.

References

One thought on “Enabling a Dell Wireless 1370 network adapter (BCM4328) on Ubuntu Linux”

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>