Wireless Broadcom cards with kernel 2.6.38 on Debian

After the highly anticipated upgrade to kernel 2.6.38, it is likely that wireless cards Broadcom do not work in Debian, since the kernel is completely free, but the drivers for this brand are not. Here I explain how enable the cards Broadcom 4311, 4312, 4313, 4321, 4322, 43224, 43225, 43227 y 43228 en Debian Squeeze, Lenny y Wheezy.


Before starting, if you are not sure what your wireless card is, you should run the following command on the console:

lspci

And the list of all PCI in the computer. The line that says networkcontroller It is the one indicated by the wireless card. It looks something like this:

01: 00.0 Network controller: Broadcom Corporation BCM4312 802.11b / g LP-PHY (rev 01)

With that they can already make sure which is their wireless card, in this case, the 4312 mentioned at the beginning of the article.

Squeeze

1. Add the "non free" component to / Etc / apt / sources.list in case they don't. An example is:

# Debian Squeeze / 6.0
deb http://ftp.us.debian.org/debian squeeze main contrib non-free

2. Update the list of available packages.

# aptitude update

3. Install the packages module-assistant y wireless-tools

# aptitude install module-assistant wireless-tools

4. Compile and install the package broadcom-sta-modules- * for your system, using Module Assistant

# ma ai broadcom-sta

5. For the cards BCM4313, BCM43224 Y BCM43225, add the module to blacklist brcm80211, to avoid conflict with your support.

# echo blacklist brcm80211 >> /etc/modprobe.d/broadcom-sta-common.conf

6. Rebuild the initial ramdisk, and add the modules defined in the file to the blacklist /etc/modprobe.d/broadcom-sta-common.conf with initramfs

# update-initramfs -u -k $ (uname -r)

7. Download conflicting modules

# modprobe -r b44 b43 b43legacy ssb brcm80211

8. Load wl module

# modprobe wl

9. Verify that the device has an available interface

#iwconfig

10. Setup the wireless interface

Lenny

1. Install the packages build-essential, debhelper, module-assistant, quilt y wireless tools

# aptitude update
# aptitude install build-essential debhelper module-assistant quilt wireless-tools

2. Manually download the package squeeze / broadcom-sta-source from any of the mirrors in http://packages.debian.org/squeeze/all/broadcom-sta-source/download

$wget http://ftp.us.debian.org/debian/pool/non-free/b/broadcom-sta/broadcom-sta-source_5.60.48.36-2_all.deb

3. Manually download the package squeeze / broadcom-sta-common from any of the mirrors in http://packages.debian.org/squeeze/all/broadcom-sta-common/download

$wget http://ftp.us.debian.org/debian/pool/non-free/b/broadcom-sta/broadcom-sta-common_5.60.48.36-2_all.deb

4. Install the packages squeeze / broadcom-sta-common y squeeze / broadcom-sta-source with dpkg

# dpkg -i broadcom-sta- * deb

5. Compile and install the package broadcom-sta-modules- * for your system, using Module Assistant

# ma ai broadcom-sta

6. For the cards BCM4313, BCM43224 Y BCM43225, add the module to blacklist brcm80211, to avoid conflict with your support.

# echo blacklist brcm80211 >> /etc/modprobe.d/broadcom-sta-common.conf

7. Rebuild the initial ramdisk, and add the modules defined in the file to the blacklist /etc/modprobe.d/broadcom-sta-common.conf with initramfs

# update-initramfs -u -k $ (uname -r)

8. Download conflicting modules

# modprobe -r b44 b43 b43legacy ssb brcm80211

9. Load wl module

# modprobe wl

10. Verify that the device has an available interface

#iwconfig

11. Setup the wireless interface

Wheezy

1. Add a "non free" component to / Etc / apt / sources.list in case they don't. An example is:

# Debian Wheezy (testing)
deb http://ftp.us.debian.org/debian wheezy main contrib non-free

2. Update the list of available packages.

# aptitude update

3. Install the packages module-assistant y wireless-tools

# aptitude install module-assistant wireless-tools

4. Compile and install the package broadcom-sta-modules- * for your system, using Module Assistant

# ma ai broadcom-sta

5. Download conflicting modules

# modprobe -r b44 b43 b43legacy ssb brcm80211

6. Load wl module

# modprobe wl

7. Verify that the device has an available interface

#iwconfig

8. Setup the wireless interface

Source: http://wiki.debian.org/wl


Leave a Comment

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

*

*

  1. Responsible for the data: Miguel Ángel Gatón
  2. Purpose of the data: Control SPAM, comment management.
  3. Legitimation: Your consent
  4. Communication of the data: The data will not be communicated to third parties except by legal obligation.
  5. Data storage: Database hosted by Occentus Networks (EU)
  6. Rights: At any time you can limit, recover and delete your information.

  1.   can said

    definitely ubuntu is shit ……………………………

  2.   ALLP said

    Thank you very much for your information.

    I think this same problem occurs in Ubuntu. Could you tell me what should I do?

  3.   Edwin said

    Post excess !!! It will be useful to me now that I update my kernel =)

  4.   Monica said

    Find your card in -> http://wiki.debian.org/WiFi#PCI_Devices and follow the wiki

  5.   Monica said

    How weird! xD I only automatically detect the ethernet connection but not the wireless one, after doing this it already works: p

  6.   Walter Omar Dari said

    This method (Squeeze) also worked perfectly with Wheezy, kernel 3.0.0-1-amd64 and a BCM4312, only there is no need to run "update-initramfs -u -k $ (uname -r)".
    I just did it on a Lenovo G550.
    Thanks for the article and greetings!
    Walter

  7.   Daniel said

    and if my card is intel?

  8.   Alex said

    One of the reasons why I switched from debian to Ubuntu was that it did not support my network card, but the eth, the wifi did detect it :(. I hope that with this I can fix it, although now I think it will cost me reinstall debian (mostly for laziness 😛).

    I keep the post for the future hehe.
    regards

  9.   Monica said

    Look for your card in this list -> http://wiki.debian.org/WiFi#PCI_Devices

  10.   Alex said

    Yes, that's what I thought, it's strange, normally in laptops, what tends to fail the most are wireless. For the moment I'm going to stay in Ubuntu, everything is fine for me, but I hope to return to Debian soon, (I like it better)

  11.   Johnny M said

    Hello my friend, excellent contribution !!!! But I will tell you that in the compilation of the card I get the following error:
    QUILT_PATCHES = debian / patches \
    quilt –quiltrc / dev / null pop -a -R || test $? = 2
    rm -rf .pc debian / stamp-patched
    dh_testdir
    #dh_testroot
    dh_clean
    / usr / bin / make -f debian / rules clean
    make [1]: enter the directory `/ usr / src / modules / broadcom-sta '
    QUILT_PATCHES = debian / patches \
    quilt –quiltrc / dev / null pop -a -R || test $? = 2
    rm -rf .pc debian / stamp-patched
    dh_testdir
    #dh_testroot
    dh_clean
    make [1]: exit the directory `/ usr / src / modules / broadcom-sta '
    / usr / bin / make -f debian / rules kdist_clean kdist_config binary-modules
    make [1]: enter the directory `/ usr / src / modules / broadcom-sta '
    QUILT_PATCHES = debian / patches \
    quilt –quiltrc / dev / null pop -a -R || test $? = 2
    No patch removed
    rm -rf .pc debian / stamp-patched
    dh_testdir
    #dh_testroot
    dh_clean
    / usr / bin / make -w -f debian / rules clean
    make [2]: enter the directory `/ usr / src / modules / broadcom-sta '
    QUILT_PATCHES = debian / patches \
    quilt –quiltrc / dev / null pop -a -R || test $? = 2
    No patch removed
    rm -rf .pc debian / stamp-patched
    dh_testdir
    #dh_testroot
    dh_clean
    make [2]: exit the directory `/ usr / src / modules / broadcom-sta '
    make [1]: Nothing is done for `kdist_config '.
    for templ in; do \
    cp $ templ `echo $ templ | sed -e 's / _KVERS_ / 3.2.0-4-amd64 / g'`; \
    done
    for templ in `ls debian / *. modules.in`; do \
    test -e $ {templ% .modules.in} .backup || cp $ {templ% .modules.in} $ {templ% .modules.in} .backup 2> / dev / null || true; \
    sed -e 's / ## KVERS ## / 3.2.0-4-amd64 / g; s / # KVERS # / 3.2.0-4-amd64 / g; s / _KVERS_ / 3.2.0-4-amd64 / g; s / ## KDREV ## // g; s / # KDREV # // g; s / _KDREV _ // g '$ {templ% .modules.in}; \
    done
    dh_testroot
    dh_prep
    # Build the module
    cd / usr / src / modules / broadcom-sta / amd64 && \
    make -C /lib/modules/3.2.0-4-amd64/build M = / usr / src / modules / broadcom-sta / amd64
    make [2]: enter the directory `/usr/src/linux-headers-3.2.0-4-amd64 ′
    LD /usr/src/modules/broadcom-sta/amd64/built-in.o
    CC [M] /usr/src/modules/broadcom-sta/amd64/src/shared/linux_osl.o
    CC [M] /usr/src/modules/broadcom-sta/amd64/src/wl/sys/wl_linux.o
    /usr/src/modules/broadcom-sta/amd64/src/wl/sys/wl_linux.c:219:2: error: unknown field 'ndo_set_multicast_list' specified in initializer
    /usr/src/modules/broadcom-sta/amd64/src/wl/sys/wl_linux.c:219:2: warning: initialization from incompatible pointer type [enabled by default]
    /usr/src/modules/broadcom-sta/amd64/src/wl/sys/wl_linux.c:219:2: warning: (near initialization for 'wl_netdev_ops.ndo_validate_addr') [enabled by default]
    /usr/src/modules/broadcom-sta/amd64/src/wl/sys/wl_linux.c: In function '_wl_set_multicast_list':
    /usr/src/modules/broadcom-sta/amd64/src/wl/sys/wl_linux.c:1435:27: error: 'struct net_device' has no member named 'mc_list'
    /usr/src/modules/broadcom-sta/amd64/src/wl/sys/wl_linux.c:1435:56: error: 'struct net_device' has no member named 'mc_count'
    /usr/src/modules/broadcom-sta/amd64/src/wl/sys/wl_linux.c:1436:24: error: dereferencing pointer to incomplete type
    /usr/src/modules/broadcom-sta/amd64/src/wl/sys/wl_linux.c:1442:57: error: dereferencing pointer to incomplete type
    make [5]: *** [/usr/src/modules/broadcom-sta/amd64/src/wl/sys/wl_linux.o] Error 1
    make [4]: ​​*** [_module_ / usr / src / modules / broadcom-sta / amd64] Error 2
    make [3]: *** [sub-make] Error 2
    make [2]: *** [all] Error 2
    make [2]: exits the `/usr/src/linux-headers-3.2.0-4-amd64 ′ directory
    make [1]: *** [binary-modules] Error 2
    make [1]: exit the directory `/ usr / src / modules / broadcom-sta '
    make: *** [kdist_build] Error 2

    What could be the problem