Depois de fazer uma pesquisa, acabei de usar o próprio driver da Broadcom. Não é ideal, ele corrompe o kernel com coisas que não são da GPL, mas está funcionando (o kernel-tainting é apenas um problema filosófico, tem a ver apenas com licenças e não tem nenhum efeito em como o driver funciona). Eu só terei que recompilar o módulo toda vez que eu atualizar o kernel ... oh well.
Então, peguei o driver do link , o descompactei e tentei compilá-lo (executando make
no mesmo diretório onde o arquivo foi descompactado).
Depois de vários erros, editei o arquivo em src/wl/sys/wl_cfg80211.c
(que veio com o arquivo tar), substituindo todas as ocorrências de KERNEL_VERSION(2, 6, **)
por 0
(zero). Depois de compilar o módulo wl.ko, executei modprobe lib80211
e, em seguida, insmod wl ; modprobe wl
e voilà, problema resolvido.
Para simplificar, os comandos abaixo instalam o módulo de 64 bits:
wget http://www.broadcom.com/docs/linux_sta/hybrid-portsrc_x86_64-v5_100_82_112.tar.gz
mkdir wldir
tar -xvzf hybrid-portsrc_x86_64-v5_100_82_112.tar.gz -C wldir
cd wldir
sed -e 's/KERNEL_VERSION(2, 6, ..)/0/g' src/wl/sys/wl_cfg80211.c -i
make
modprobe lib80211
insmod wl.ko
modprobe wl
Para o de 32 bits, basta substituir hybrid-portsrc_x86_64-v5_100_82_112.tar.gz
por hybrid-portsrc_x86_32-v5_100_82_112.tar.gz