Skip to content

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

by Jonathon on October 4th, 2011

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

From → Notebook

One Comment
  1. OliverGT permalink

    Thank you very much, this script works like a charm for me and my inspiron 1501!

Leave a Reply

Note: XHTML is allowed. Your email address will never be published.

Subscribe to this comment feed via RSS