After doing some research, I've just used Broadcom's own driver. It's not ideal, it taints the kernel with non-GPL stuff, but it's working (kernel-tainting is just a philosophical problem, it just has to do with licenses and has no effect whatsoever in how the driver works). I'll just have to recompile the module every time I update the kernel... oh well.
So, I got the driver from http://www.broadcom.com/support/802.11/linux_sta.php, untarred it and tried to compile it (running make
in the same directory where the file was uncompressed).
After a bunch of errors I've edited the file at src/wl/sys/wl_cfg80211.c
(which came with the tar file), replacing every occurrence of KERNEL_VERSION(2, 6, **)
with 0
(zero). After compiling the wl.ko module, I ran modprobe lib80211
and then insmod wl ; modprobe wl
, and voilà, problem solved.
To make it simpler, the commands below install the 64 bits module:
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
For the 32 bits one, just replace hybrid-portsrc_x86_64-v5_100_82_112.tar.gz
with hybrid-portsrc_x86_32-v5_100_82_112.tar.gz