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
definitivamente ubuntu es una mierd……………………………
Muchas gracias por tu información.
Creo que este mismo problema se da en Ubuntu. ¿Podrías indicarme qué debería hacer?
Exceso de post !!! me va a ser util ahora que actualice mi kernel =)
Busca tu tarjeta en -> http://wiki.debian.org/WiFi#PCI_Devices y sigue la wiki
¡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
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
y si mi tarjeta es intel?
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
Buscá tu tarjeta en esta lista -> http://wiki.debian.org/WiFi#PCI_Devices
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)
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