Tarjetas Wireless Broadcom con kernel 2.6.38 en Debian

Después del muy esperado upgrade al kernel 2.6.38, es probable que las tarjetas wireless Broadcom no funcionen en Debian, ya que el kernel es completamente libre, pero los drivers para esta marca no lo son. Aquí les explico cómo habilitar las tarjetas Broadcom 4311, 4312, 4313, 4321, 4322, 43224, 43225, 43227 y 43228 en Debian Squeeze, Lenny y Wheezy.


Antes de empezar, si no están seguros de cuál es tu tarjeta wireless, deben correr el siguiente comando en la consola:

lspci

Y aparecerá la lista de todos los PCI en la computadora. La línea que diga Network controller es la que que indica la tarjeta wireless. Se mira algo así:

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

Con eso ya pueden asegurarse de cuál es su tarjeta wireless, en este caso, la 4312 mencionada al inicio del artículo.

Squeeze

1. Agregar el componente «non free» a /etc/apt/sources.list en caso de que no lo tengan. Un ejemplo es:

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

2. Actualizar la lista de paquetes disponibles.

# aptitude update

3. Instalar los paquetes module-assistant y wireless-tools

# aptitude install module-assistant wireless-tools

4. Compilar e instalar el paquete broadcom-sta-modules-* para su sistema, utilizando Module-Assistant

# m-a a-i broadcom-sta

5. Para las tarjetas BCM4313, BCM43224 Y BCM43225, agregar a blacklist el módulo brcm80211, para evitar que entren en conflicto con su soporte.

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

6. Reconstruir el ramdisk inicial, y agregar a blacklist los módulos definidos en el archivo /etc/modprobe.d/broadcom-sta-common.conf con initramfs

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

7. Descargar los módulos conflictivos

# modprobe -r b44 b43 b43legacy ssb brcm80211

8. Cargar el módulo wl

# modprobe wl

9. Verificar que el dispositivo tenga una interfaz disponible

# iwconfig

10. Configurar la interfaz inalámbrica

Lenny

1. Instalar los paquetes build-essential, debhelper, module-assistant, quilt y wireless tools

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

2. Descargar manualmente el paquete squeeze/broadcom-sta-source de alguno de los mirrors en 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. Descargar manualmente el paquete squeeze/broadcom-sta-common de alguno de los mirrors en 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. Instalar los paquetes squeeze/broadcom-sta-common y squeeze/broadcom-sta-source con dpkg

# dpkg -i broadcom-sta-*deb

5. Compilar e instalar el paquete broadcom-sta-modules-* para su sistema, utilizando Module-Assistant

# m-a a-i broadcom-sta

6. Para las tarjetas BCM4313, BCM43224 Y BCM43225, agregar a blacklist el módulo brcm80211, para evitar que entren en conflicto con su soporte.

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

7. Reconstruir el ramdisk inicial, y agregar a blacklist los módulos definidos en el archivo /etc/modprobe.d/broadcom-sta-common.conf con initramfs

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

8. Descargar los módulos conflictivos

# modprobe -r b44 b43 b43legacy ssb brcm80211

9. Cargar el módulo wl

# modprobe wl

10. Verificar que el dispositivo tenga una interfaz disponible

# iwconfig

11. Configurar la interfaz inalámbrica

Wheezy

1. Agregar un componente «non free» a /etc/apt/sources.list en caso de que no lo tengan. Un ejemplo es:

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

2. Actualizar la lista de paquetes disponibles.

# aptitude update

3. Instalar los paquetes module-assistant y wireless-tools

# aptitude install module-assistant wireless-tools

4. Compilar e instalar el paquete broadcom-sta-modules-* para su sistema, utilizando Module-Assistant

# m-a a-i broadcom-sta

5. Descargar los módulos conflictivos

# modprobe -r b44 b43 b43legacy ssb brcm80211

6. Cargar el módulo wl

# modprobe wl

7. Verificar que el dispositivo tenga una interfaz disponible

# iwconfig

8. Configurar la interfaz inalámbrica

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


Deja tu comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.

      can dijo

    definitivamente ubuntu es una mierd……………………………

      ALLP dijo

    Muchas gracias por tu información.

    Creo que este mismo problema se da en Ubuntu. ¿Podrías indicarme qué debería hacer?

      Edwin dijo

    Exceso de post !!! me va a ser util ahora que actualice mi kernel =)

      Mónica dijo

    Busca tu tarjeta en -> http://wiki.debian.org/WiFi#PCI_Devices y sigue la wiki

      Mónica dijo

    ¡Qué extraño! xD a mí sólo me detecta automáticamente la conexión ethernet pero no el wireless, después de hacer esto ya funciona :p

      Walter Omar Dari dijo

    Este método (Squeeze) también funcionó perfectamente con Wheezy, kernel 3.0.0-1-amd64 y una BCM4312, sólo que no hace falta ejecutar «update-initramfs -u -k $(uname -r)».
    Lo acabo de hacer en una Lenovo G550.
    Gracias por el artículo y saludos !
    Walter

      Daniel dijo

    y si mi tarjeta es intel?

      Alex dijo

    Uno de los motivos por los que me pasé de debian a Ubuntu era que no soportaba mi tarjeta de red, pero la eth, la wifi si que la detectaba :(. Espero que con esto pueda arreglarlo, aunque ahora creo que me va a costar volver a instalar debian (más que nada por vagueza 😛 ).

    Guardo el post para el futuro jeje.
    Saludos

      Mónica dijo

    Buscá tu tarjeta en esta lista -> http://wiki.debian.org/WiFi#PCI_Devices

      Alex dijo

    Pues sí, eso pensaba yo, es extraño, normalmente en los portátiles lo que suele fallar más son las inalámbricas. De momento voy a quedarme en ubuntu que todo me va bien, pero espero volver pronto a Debian, (me gusta más)

      Jhonny M dijo

    Hola mi amigo excelente aporte !!!! pero te comento que a mi en la compilacion de la tarjeta me sale el siguiente erro:
    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]: se ingresa al directorio `/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]: se sale del directorio `/usr/src/modules/broadcom-sta’
    /usr/bin/make -f debian/rules kdist_clean kdist_config binary-modules
    make[1]: se ingresa al directorio `/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]: se ingresa al directorio `/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]: se sale del directorio `/usr/src/modules/broadcom-sta’
    make[1]: No se hace nada para `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]: se ingresa al directorio `/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]: se sale del directorio `/usr/src/linux-headers-3.2.0-4-amd64′
    make[1]: *** [binary-modules] Error 2
    make[1]: se sale del directorio `/usr/src/modules/broadcom-sta’
    make: *** [kdist_build] Error 2

    Cual podria ser el problema