Ndiswrapper and wpa supplicant
From ArchWiki
[edit] Installing ndiswrapper and wpa_supplicant:
This document assumes using a static IP address for your wireless connection. To install ndiswrapper and wpa_supplicant:
pacman -Sy ndiswrapper wpa_supplicant
this will then install both apps. Press "y" if prompted to install, unless you already have them and they are up-to-date.
[edit] ndiswrapper configuration
Once the installation has completed, just update /etc/rc.conf to load the module at boot (below is a sample of my config, yours might look slightly different):
MODULES=(ndiswrapper snd-intel8x0 !usbserial)
the important part is making sure that ndiswrapper exists on this line. It would be best to test that ndiswrapper will load now, so:
modprobe ndiswrapper iwconfig
and wlan0 should exist, check this page if you're having problems:
Ndiswrapper installation wiki [1]
[edit] wpa_supplicant configuration
OK, next up is configuring wpa_supplicant so that you can use WPA-PSK. I have included this in this document because it's much more secure than using WEP. First, edit /etc/wpa_supplicant.conf or if it doesn't exist, then create one with this content:
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=0
eapol_version=1
ap_scan=1
fast_reauth=1
network={
ssid="your_wireless_access_point_name_here"
psk="your_password_here"
key_mgmt=WPA-PSK
proto=WPA
}
Note: where it asks for your psk, do not enter the passkey. You must first run the following command (from the terminal):
wpa_passphrase "your_ssid" "your_secret_phrase"
This will then output something like this:
network={
ssid="your_ssid"
#psk="your_secret_phrase"
psk=325lasdflk234523lkasdflkl654325234lkasdf123jkkj34kl
}
What you need is the long alphanumeric string to paste into the wpa_supplicant.conf shown above.
The ctrl_interface directory needs to be created (as it's not usually there by default):
mkdir /var/run/wpa_supplicant
If you had configured normal networking, you will now configure it differently using network profiles. Therefore, in /etc/rc.conf comment out the lines and make sure interfaces only shows the lo (loopback), my examples below:
lo="lo 127.0.0.1" #eth0="eth0 10.1.1.3 netmask 255.255.255.0 broadcast 10.1.1.255" #wlan0="wlan0 10.1.1.4 netmask 255.255.255.0 broadcast 10.1.1.255" INTERFACES=(lo)
Also, uncomment the network profiles line, as shown below:
NET_PROFILES=(wlan0)
if you want to use more than one profile, eg, one for eth0 and wlan0, set this to "menu" instead of "wlan0" and you will be prompted during bootup to choose which card to activate for your session. For me, I only use wireless, so I only enabled wireless by default.
Now, you need to create the network profile, this is stored in /etc/network-profiles, and needs to be called the same name as what you mentioned above. So, in my example, the filename should be "wlan0". Here is my file, configure yours filling in your details:
DESCRIPTION="Wireless Profile" INTERFACE=wlan0 HOSTNAME=myhostname DOMAINNAME=mydomainname IFOPTS="10.1.1.4 netmask 255.255.255.0 broadcast 10.1.1.255" GATEWAY=10.1.1.1 DOMAIN=mydomainname DNS1=10.1.1.1 ESSID=WLAN IWOPTS="mode managed essid $ESSID" WIFI_INTERFACE=wlan0 WIFI_WAIT=5 USEWPA="yes" WPAOPTS="-D wext" # legacy: wpa-supplicant older than v1.12 need "-D ndiswrapper" instead
the two domain options aren't necessary so can be deleted if you like. Here is the network profile for eth0 in case you want it, and modify accordingly for eth1, eth2, etc, etc.
DESCRIPTION="Ethernet Profile" INTERFACE=eth0 HOSTNAME=myhostname DOMAINNAME=mydomainname IFOPTS="10.1.1.3 netmask 255.255.255.0 broadcast 10.1.1.255" GATEWAY=10.1.1.1 DOMAIN=mydomainname DNS1=10.1.1.1
if you want to use both profiles at the same time, modify the following line in /etc/rc.conf so it's shown as below:
NET_PROFILES=(eth0 wlan0)
or, if you want to choose during bootup, then edit /etc/rc.conf:
NET_PROFILES=(menu)
as mentioned earlier. Then, reboot your system, and you'll now find that wireless is working under Arch Linux!
Please note an error does appear at bootup as well as on shutdown, but it doesn't affect the operation of the wireless. The error on startup seems to be because /var/run/wpa_supplicant/wlan0 exists and wasn't cleared down properly on shutdown. And I think this was because the error on shutdown didn't get rid of the file!
If your wireless card is mounted on wireless interface ethX then the solution maybe to get a patch here [2]. You can compile this from source or you can use the package manager
pacman -S bcm43xx-fwcutter
Check the driver
bcm43xx-fwcutter -i driver's sys file
If all is good:
bcm43xx-fwcutter driver's sys file
Move all the files.
mkdir /lib/firmware;mv *.fw /lib/firmware/
Test it
ifconfig ethX up
Tadaa if it worked, else just look for another solution and be sure to post it here :)