https://wiki.archlinux.org/api.php?action=feedcontributions&user=Mabac&feedformat=atomArchWiki - User contributions [en]2024-03-29T02:20:47ZUser contributionsMediaWiki 1.41.0https://wiki.archlinux.org/index.php?title=Broadcom_wireless&diff=125390Broadcom wireless2010-12-15T15:35:40Z<p>Mabac: </p>
<hr />
<div>[[Category:Communication and network (English)]]<br />
[[Category:HOWTOs (English)]]<br />
= Introduction =<br />
<br />
Finally Broadcom has released a linux driver for most of its wireless chipsets. See the [http://ubuntuforums.org/showthread.php?t=914697 Ubuntu forums] and the [http://forums.debian.net/viewtopic.php?p=174719&sid=801a8f97aa7112c8c1c4f9294ad5d3e9 Debian forums]. It seems to work with all modern 43xx Broadcom cards. Up until recently the only way to get some of these working, such as 4328, was via [[ndiswrapper|ndiswrapper]]. Broadcom chipsets are used in most Dell laptops, among others.<br />
<br />
Unfortunately, the driver does not work with hidden ESSID's.<br />
<br />
= Determine whether you actually have one of these cards =<br />
<br />
Type in console (mind the letter case):<br />
$ lspci -nn | grep 14e4<br />
Look at the numbers at the end, in square brackets.<br />
<br />
Here is a list of cards which work with this driver:<br />
<br />
<pre><br />
[14e4:4311]<br />
[14e4:4312]<br />
[14e4:4313]<br />
[14e4:4315]<br />
[14e4:4727]<br />
[14e4:4328]<br />
[14e4:4328]<br />
[14e4:4329]<br />
[14e4:432a]<br />
[14e4:432b]<br />
[14e4:432c]<br />
[14e4:432d]<br />
[14e4:4353]<br />
[14e4:4357]<br />
</pre><br />
<br />
[http://www.broadcom.com/docs/linux_sta/README.txt This document] should have more up-to-date information.<br />
<br />
If you have some other Broadcom model you might try the [[Wireless#b43|b43]] driver. List of cards supported by b43 is [http://wireless.kernel.org/en/users/Drivers/b43 here], although other cards (e.g. 4727) may also work with this driver.<br />
<br />
= Driver installation =<br />
== Get the driver == <br />
There's a PKGBUILD in [http://aur.archlinux.org/packages.php?ID=19514 AUR].<br />
Or, you can download the driver from [http://www.broadcom.com/support/802.11/linux_sta.php here],<br />
where you will also find a README file.<br />
<br />
It is better to use the PKGBUILD, that way pacman will track all the files.<br />
<br />
== Load the kernel module ==<br />
Before loading the module, remove b43, or any other module you are using for your wireless card:<br />
# rmmod b43<br />
Load the module:<br />
# modprobe lib80211_crypt_tkip<br />
# modprobe wl<br />
<br />
You might also need to generate modules.dep and map file again by:<br />
# depmod -a<br />
<br />
Now you can make the change permanent by including lib80211_crypt_tkip in your MODULES array in {{Filename|/etc/rc.conf}}.<br />
<br />
MODULES=(lib80211_crypt_tkip ...<br />
<br />
Or if you installed module via AUR package you just need:<br />
# rmmod b43 # (or any other module you are using for your wireless card)<br />
# modprobe wl<br />
<br />
Now in iwconfig you should see a wireless device (for example eth1). You might need to restart your computer to see the device in iwconfig.<br />
<br />
To make the module load at boot just add in {{Filename|[[rc.conf]]}}:<br />
MODULES=(lib80211_crypt_tkip wl !b43 !ssb ...<br />
By blacklisting the 'b43' and 'ssb' modules, you will prevent the kernel from autoloading them instead of the desired modules.<br />
<br />
==Note on using multiple Broadcom kernel modules==<br />
<br />
In my Dell Inspiron Laptop, i have a Broadcom BCM4401 Ethernet card and a Broadcom BCM4328 Wireless card. If I just remove b43, I can load the wl driver, but no wireless card shows up. However, if i first remove the b44 (and ssb) driver for my ethernet card, and then load the wl driver, I get a wireless eth0. Afterwards, I can load b44 again, to have an ethernet eth1.<br />
<br />
Short version:<br />
* Put "lib80211_crypt_tkip" and "wl" at the BEFORE b44 (if you have it) position in MODULES= in /etc/rc.conf<br />
* Don't forget to blacklist b43<br />
* Your wireless card will be eth0<br />
* Your ethernet card will be eth1<br />
* Both will work fine<br />
<br />
<br />
= Troubleshooting =<br />
== Interfaces swapped every time == <br />
This is a common problem with this driver. And the next process works for me with the BCM4312 following the [http://wiki.archlinux.org/index.php/Udev#Mixed_Up_Devices.2C_Sound.2FNetwork_Cards_Changing_Order_Each_Boot udev post]:<br />
<br />
Create a file called <code>/etc/udev/rules.d/10-network.rules</code> and bind the MAC address of each of your cards to a certain interface name:<br />
<br />
<pre>SUBSYSTEM=="net", ATTR{address}=="aa:bb:cc:dd:ee:ff", NAME="eth0"<br />
SUBSYSTEM=="net", ATTR{address}=="ff:ee:dd:cc:bb:aa", NAME="eth1"</pre><br />
<br />
'''Where:'''<br />
* NAME="eth0" is the name of the interface that you want, for example the same name "eth0". You can use other names, for example "lan0" for eth0 or "wlan0" for eth1. <br />
* To get the MAC address of each card, use this command: <code>udevadm info -a -p /sys/class/net/<yourdevice> | grep address</code>. Please, note that this is case sensitive and you must use '''lower-case'''.<br />
But first you need know if eth0 isn't eth1 or vice versa, you can perform a scan: <code>iwlist scan</code> <br />
So if eth0 is really eth1 then the MAC of eth1 is that of eth0.<br />
<br />
Don't forget to update your /etc/rc.conf and other config files using the old ethX notation!<br />
<br />
== Module wl does not work after a kernel upgrade ==<br />
This is because the driver is compiled with the current kernel, you need recompile the driver with the new kernel for the module to function properly. Bear this in mind when doing kernel updates.<br />
<br />
== Device not showing up ==<br />
Be sure of trying "ifconfig -a", "ifconfig" only shows interfaces that are active.<br />
<br />
Here is one short script that helped me out, because I was loading modules incorrectly:<br />
<pre>#!/bin/bash<br />
<br />
rmmod b43 ssb wl lib80211_crypt_tkip lib80211<br />
<br />
modprobe lib80211_crypt_tkip<br />
modprobe wl<br />
<br />
depmod -a</pre><br />
<br />
This helped me when sometimes I couldn't get the interface to show up. Else, I recommend adding the modules in rc.conf:<br />
<pre>MODULES=([...] !b43 !ssb !lib80211 lib80211_crypt_tkip wl)</pre><br />
<br />
Worked for me in a Dell Latitude 2100 with Broadcom BCM5764M (eth) and BCM4312 (wifi). Also works in a HP Compaq 6715s with Broadcom BCM4311 (wifi).<br />
<br />
Also works on the HP Mini 110-1020LA netbook using BCM4312 chipset.<br />
<br />
''The above did not work for me (Broadcom 4312 [14e4:4315]) however if I removed the exclamation mark infront of '''lib80211''' then everything works fine.''<br />
<br />
== Original b43, ssb, and lib80211 won't go away ==<br />
If you've followed the [[Speed_Up_udev]] advice, you'll see that the modules you try to prevent loading with a ! will load anyway. That's because the steps on that page (and I missed this reading it the first time) will effectively bypass the MODULES=() line in {{Filename|/etc/rc.conf}}.<br />
<br />
Yeah, there's a section that explains what you need to do if you're blacklisting modules, but honestly I didn't notice any boot-time savings so I reverted to the original {{Filename|/lib/udev/load-modules.sh}}.</div>Mabachttps://wiki.archlinux.org/index.php?title=Talk:Broadcom_wireless&diff=125389Talk:Broadcom wireless2010-12-15T15:28:06Z<p>Mabac: </p>
<hr />
<div>What about regdom setting? I'm in EU, but iwlist only sees 11 channels...<br />
Tried crda, but it says:<br />
$ /etc/rc.d/wireless-regdom start<br />
:: Setting wireless regulatory domain:HU [BUSY] <br />
command failed: Operation not supported (-95) [FAIL]<br />
<br />
----<br />
The section 'Troubleshooting' is more or less a copy of what is mentioned on the udev-page. IMHO we should not copy, but link to that page. In this prticular case there is more information on the udev-page, so the instructions on this page might be out of date...<br />
<br />
<br />
<br />
<br />
----<br />
I have the same configuration mentioned in the instructions. Dell Inspiron with BCM4401 and BCM4328 cards.<br />
<br />
I still can not get these two cards to work together.<br />
<br />
I have configured my machine just like the method stated but my ethernet card (b44) will not load.<br />
<br />
Is there something else that could cause a conflict between multiple Broadcom modules?<br />
----<br />
any thoughts on where the new [http://linuxwireless.org/en/users/Drivers/brcm80211 brcm80211] driver fits in, and howto use it with arch linux?<br />
:: I have an update here, I have [http://linuxwireless.org/en/users/Drivers/brcm80211 brcm80211] working with my 14e4:4353 "Broadcom Corporation Device 4353 (rev 01)" wireless adapter in my [https://wiki.archlinux.org/index.php?title=Alienware_M11x alienware M11x], using arch + [http://aur.archlinux.org/packages.php?ID=41472 compat-wireless-patched]. --[[User:Fnord0|Fnord0]] 13:32, 29 November 2010 (EST)<br />
cfg80211: Calling CRDA to update world regulatory domain<br />
cfg80211: World regulatory domain updated:<br />
cfg80211: (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp)<br />
cfg80211: (2402000 KHz - 2472000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)<br />
cfg80211: (2457000 KHz - 2482000 KHz @ 20000 KHz), (300 mBi, 2000 mBm)<br />
cfg80211: (2474000 KHz - 2494000 KHz @ 20000 KHz), (300 mBi, 2000 mBm)<br />
cfg80211: (5170000 KHz - 5250000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)<br />
cfg80211: (5735000 KHz - 5835000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)<br />
brcm80211 0000:08:00.0: PCI INT A -> GSI 17 (level, low) -> IRQ 17<br />
brcm80211 0000:08:00.0: setting latency timer to 64<br />
wlc_bmac_attach:: deviceid 0x4353 nbands 2 board 0xe macaddr: c4:17:xx:xx:xx:xx<br />
ieee80211 phy0: Selected rate control algorithm 'minstrel_ht'<br />
wl_set_hint: Sending country code US to MAC80211<br />
wl0: Broadcom BCM43xx 802.11 MAC80211 Driver (1.82.8.0) (Compiled at 15:30:26 on Nov 27 2010)<br />
cfg80211: Calling CRDA for country: US<br />
cfg80211: Regulatory domain changed to country: US<br />
cfg80211: (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp)<br />
cfg80211: (2402000 KHz - 2472000 KHz @ 40000 KHz), (300 mBi, 2700 mBm)<br />
cfg80211: (5170000 KHz - 5250000 KHz @ 40000 KHz), (300 mBi, 1700 mBm)<br />
cfg80211: (5250000 KHz - 5330000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)<br />
cfg80211: (5490000 KHz - 5600000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)<br />
cfg80211: (5650000 KHz - 5710000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)<br />
cfg80211: (5735000 KHz - 5835000 KHz @ 40000 KHz), (300 mBi, 3000 mBm)<br />
----<br />
Hi, I'm new to editing wiki sites. So I don't really know if there's a convention about how people are going to interact when editing others pages. I added a sentence under the section "Device not showing up" that for me it worked only if i removed the exclamation mark before lib80211. I guess I should have posted something here first. I'm sorry if I have violated the process in anyway and you are free to remove it. But I leave it there so that you can decide if it fits in the page or not. Sorry for any trouble this might have caused.</div>Mabachttps://wiki.archlinux.org/index.php?title=Broadcom_wireless&diff=125388Broadcom wireless2010-12-15T15:19:49Z<p>Mabac: </p>
<hr />
<div>[[Category:Communication and network (English)]]<br />
[[Category:HOWTOs (English)]]<br />
= Introduction =<br />
<br />
Finally Broadcom has released a linux driver for most of its wireless chipsets. See the [http://ubuntuforums.org/showthread.php?t=914697 Ubuntu forums] and the [http://forums.debian.net/viewtopic.php?p=174719&sid=801a8f97aa7112c8c1c4f9294ad5d3e9 Debian forums]. It seems to work with all modern 43xx Broadcom cards. Up until recently the only way to get some of these working, such as 4328, was via [[ndiswrapper|ndiswrapper]]. Broadcom chipsets are used in most Dell laptops, among others.<br />
<br />
Unfortunately, the driver does not work with hidden ESSID's.<br />
<br />
= Determine whether you actually have one of these cards =<br />
<br />
Type in console (mind the letter case):<br />
$ lspci -nn | grep 14e4<br />
Look at the numbers at the end, in square brackets.<br />
<br />
Here is a list of cards which work with this driver:<br />
<br />
<pre><br />
[14e4:4311]<br />
[14e4:4312]<br />
[14e4:4313]<br />
[14e4:4315]<br />
[14e4:4727]<br />
[14e4:4328]<br />
[14e4:4328]<br />
[14e4:4329]<br />
[14e4:432a]<br />
[14e4:432b]<br />
[14e4:432c]<br />
[14e4:432d]<br />
[14e4:4353]<br />
[14e4:4357]<br />
</pre><br />
<br />
[http://www.broadcom.com/docs/linux_sta/README.txt This document] should have more up-to-date information.<br />
<br />
If you have some other Broadcom model you might try the [[Wireless#b43|b43]] driver. List of cards supported by b43 is [http://wireless.kernel.org/en/users/Drivers/b43 here], although other cards (e.g. 4727) may also work with this driver.<br />
<br />
= Driver installation =<br />
== Get the driver == <br />
There's a PKGBUILD in [http://aur.archlinux.org/packages.php?ID=19514 AUR].<br />
Or, you can download the driver from [http://www.broadcom.com/support/802.11/linux_sta.php here],<br />
where you will also find a README file.<br />
<br />
It is better to use the PKGBUILD, that way pacman will track all the files.<br />
<br />
== Load the kernel module ==<br />
Before loading the module, remove b43, or any other module you are using for your wireless card:<br />
# rmmod b43<br />
Load the module:<br />
# modprobe lib80211_crypt_tkip<br />
# modprobe wl<br />
<br />
You might also need to generate modules.dep and map file again by:<br />
# depmod -a<br />
<br />
Now you can make the change permanent by including lib80211_crypt_tkip in your MODULES array in {{Filename|/etc/rc.conf}}.<br />
<br />
MODULES=(lib80211_crypt_tkip ...<br />
<br />
Or if you installed module via AUR package you just need:<br />
# rmmod b43 # (or any other module you are using for your wireless card)<br />
# modprobe wl<br />
<br />
Now in iwconfig you should see a wireless device (for example eth1). You might need to restart your computer to see the device in iwconfig.<br />
<br />
To make the module load at boot just add in {{Filename|[[rc.conf]]}}:<br />
MODULES=(lib80211_crypt_tkip wl !b43 !ssb ...<br />
By blacklisting the 'b43' and 'ssb' modules, you will prevent the kernel from autoloading them instead of the desired modules.<br />
<br />
==Note on using multiple Broadcom kernel modules==<br />
<br />
In my Dell Inspiron Laptop, i have a Broadcom BCM4401 Ethernet card and a Broadcom BCM4328 Wireless card. If I just remove b43, I can load the wl driver, but no wireless card shows up. However, if i first remove the b44 (and ssb) driver for my ethernet card, and then load the wl driver, I get a wireless eth0. Afterwards, I can load b44 again, to have an ethernet eth1.<br />
<br />
Short version:<br />
* Put "lib80211_crypt_tkip" and "wl" at the BEFORE b44 (if you have it) position in MODULES= in /etc/rc.conf<br />
* Don't forget to blacklist b43<br />
* Your wireless card will be eth0<br />
* Your ethernet card will be eth1<br />
* Both will work fine<br />
<br />
<br />
= Troubleshooting =<br />
== Interfaces swapped every time == <br />
This is a common problem with this driver. And the next process works for me with the BCM4312 following the [http://wiki.archlinux.org/index.php/Udev#Mixed_Up_Devices.2C_Sound.2FNetwork_Cards_Changing_Order_Each_Boot udev post]:<br />
<br />
Create a file called <code>/etc/udev/rules.d/10-network.rules</code> and bind the MAC address of each of your cards to a certain interface name:<br />
<br />
<pre>SUBSYSTEM=="net", ATTR{address}=="aa:bb:cc:dd:ee:ff", NAME="eth0"<br />
SUBSYSTEM=="net", ATTR{address}=="ff:ee:dd:cc:bb:aa", NAME="eth1"</pre><br />
<br />
'''Where:'''<br />
* NAME="eth0" is the name of the interface that you want, for example the same name "eth0". You can use other names, for example "lan0" for eth0 or "wlan0" for eth1. <br />
* To get the MAC address of each card, use this command: <code>udevadm info -a -p /sys/class/net/<yourdevice> | grep address</code>. Please, note that this is case sensitive and you must use '''lower-case'''.<br />
But first you need know if eth0 isn't eth1 or vice versa, you can perform a scan: <code>iwlist scan</code> <br />
So if eth0 is really eth1 then the MAC of eth1 is that of eth0.<br />
<br />
Don't forget to update your /etc/rc.conf and other config files using the old ethX notation!<br />
<br />
== Module wl does not work after a kernel upgrade ==<br />
This is because the driver is compiled with the current kernel, you need recompile the driver with the new kernel for the module to function properly. Bear this in mind when doing kernel updates.<br />
<br />
== Device not showing up ==<br />
Be sure of trying "ifconfig -a", "ifconfig" only shows interfaces that are active.<br />
<br />
Here is one short script that helped me out, because I was loading modules incorrectly:<br />
<pre>#!/bin/bash<br />
<br />
rmmod b43 ssb wl lib80211_crypt_tkip lib80211<br />
<br />
modprobe lib80211_crypt_tkip<br />
modprobe wl<br />
<br />
depmod -a</pre><br />
<br />
This helped me when sometimes I couldn't get the interface to show up. Else, I recommend adding the modules in rc.conf:<br />
<pre>MODULES=([...] !b43 !ssb !lib80211 lib80211_crypt_tkip wl)</pre><br />
<br />
Worked for me in a Dell Latitude 2100 with Broadcom BCM5764M (eth) and BCM4312 (wifi). Also works in a HP Compaq 6715s with Broadcom BCM4311 (wifi).<br />
<br />
Also works on the HP Mini 110-1020LA netbook using BCM4312 chipsetf8785009cecb3a8e999374405140f46d62c15b1e6829e6a0cb3a261c554be3dbabov<br />
<br />
''The above did not work for me (Broadcom 4312 [14e4:4315]) however if I removed the exclamation mark infront of '''lib80211''' then everything works fine.''<br />
<br />
== Original b43, ssb, and lib80211 won't go away ==<br />
If you've followed the [[Speed_Up_udev]] advice, you'll see that the modules you try to prevent loading with a ! will load anyway. That's because the steps on that page (and I missed this reading it the first time) will effectively bypass the MODULES=() line in {{Filename|/etc/rc.conf}}.<br />
<br />
Yeah, there's a section that explains what you need to do if you're blacklisting modules, but honestly I didn't notice any boot-time savings so I reverted to the original {{Filename|/lib/udev/load-modules.sh}}.</div>Mabac