Installing a Wireless Card via linux

Published by

Posted on December 05, 2007

This doc is out of date as most of the linux distros now have support for wireless cards My configuration was a laptop running Centos w/netgear ws511 wireless card
You will need ndiswrapper in order to get your wireless card to work under linux..
[http://ndiswrapper.sourceforge.net/|Get Ndiswrapper]

PrerequisitesYou need a recent kernel at least 2.6.6 or 2.4.26 with source. Under Red Hat or Mandrake, the sources can be installed using the package kernel-source.rpm. Make sure there is a link to the kernel source from the modules directory. /lib/modules/VERSION/build should be a link to the kernel source, where VERSION is the version of the kernel you are running. If there is no link, you’ll get an error at the make install step. To create a link, assuming the kernel sources are present, use the commandln -s /usr/src/linux- /lib/modules/VERSION/build

Make sure you have started compiling the kernel sources, so needed header files are present. Some vendors ship ndiswrapper in their distributions. Either use it or make sure you remove it before installing ndiswrapper by yourself. Make sure you have the Wireless Tools installed. Again, there is a package that comes along with Red Hat and Mandrake distributions. If you are using Debian you can install the wireless-tools package from the mirror, here
[edit]
Upgrading

It is always a good idea to Uninstall the current version and reinstall the new version. This way, if there are changes in formats of configuration files etc., the new version will work without problems.
[edit]
Downloading

Download the latest version of the ndiswrapper sources from here and extract it with

tar zxvf ndiswrapper-version.tar.gz

This will create ndiswrapper-version directory. Change to that directory with

cd ndiswrapper-version.

If you are having problems with release version or you want to try bleeding-edge version, you can either get the latest snapshot tar ball from here, or latest CVS version with

cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/ndiswrapper co ndiswrapper

Note that the snapshot tar balls and CVS versions may or may not work they may not even compile. If you have problems with these, please don’t complain, except to provide feedback/debug trace to help fix bugs. However, sometimes, these may work better than release versions, as bugs are fixed, features are added etc.
[edit]
Installation
[edit]
Compile and install
Go to source-directory and do

make distclean

As root run

make

and then

make install

This should compile and install both the kernel module and the userspace utilities.
[edit]
Install Windows driver

Important: Do NOT use drivers on your CD. They may work, but you may experience kernel crashes etc., if the driver on your CD has not been tested.
Instead, you need to download appropriate Windows XP driver for your card from the Wiki entry List. To identify the driver that you need, first identify the card you have with ‘lspci’ and note the first column such as 0000:00:0c.0 and then find out the PCI ID of the card that with ‘lspci -n’ corresponding to the first column of ‘lspci’ output.
The PCI ID is third column or fourth in some distributions and of the form ‘104c:8400’. Now you need to get the Windows driver for this chipset. In the List, find out an entry for the same PCI ID and download the driver corresponding to it. Unpack the Windows driver with unzip/cabextract/unshield tools and find the INF file (.INF or .inf extension) and the SYS file (.SYS or .sys extension).
If there are multiple INF/SYS files, you may look in the List if there are any hints about which of them should be used. Make sure the INF file, SYS file and any BIN files for example, TI drivers use BIN firmware files are all in one directory. Now use ‘ndiswrapper’ tool to install the driver with

ndiswrapper -i filename.inf

This copies all necessary files to /etc/ndiswrapper and creates the config files for your card. After installing you can run

ndiswrapper -l

to see the status of your installed drivers. If you have installed the correct driver you should see something like this

Installed ndis drivers:
bcmwl5 driver present, hardware present

Where ‘present’ means that you have a card that can be used with the driver installed. In this case, broadcom driver bcmwl5 is used. If you see ‘cannot locate lspci. Unable to see if hardware is present’, you need to install the pciutils package.
[edit]
Load module:
Before you load the module DO NOT FORGET to type

depmod -a

If there is no error, continue. To load the module type

modprobe ndiswrapper

If you get no error the driver should now be loaded. You can verify this by checking system log produced by dmesg. If the driver is loaded successfully, you should see a message in the system log

ndiswrapper version loaded

Make sure the version here matches the version of ndiswrapper package that you downloaded and installed. If you get a different version, you have old version of package, which you should Uninstall and go back to step 1.

If after modprob’ing, system is locked up no response to keyboard etc., it indicates that kernel has crashed. See Distributions and FAQ for hints on what may cause problems for your distribution/kernel.
If you have successfully installed windows drivers earlier with ndiswrapper -i INFfile, the ndiswrapper module will load them all. You should then see the following messages in system log

ndiswrapper: driver ”driver1” added

for each of the drivers. If you don’t see these messages, it usually means that there are no usable drivers installed in /etc/ndiswrapper directory. Check if the /etc/ndiswrapper directory has one sub-directory for each driver and if in each driver’s directory there are inf, sys and conf files. Otherwise, you may need to repeat step 2.

If this does not bring up the lights on the card, try ejecting it and re-inserting it.

If the system has a card that works with one of the loaded drivers, you should see the following message in the system log

wlan0: ndiswrapper ethernet device xx:xx:xx:xx:xx:xx

[edit]
Configure interface:
Use iwconfig to configure wireless network interface. First, see if the interface is available, with

iwconfig

This tool is not likely to be present on your system : it is part of the package Wireless Tools for Linux, which you should install. This will print the wireless interface e.g., wlan0. In the examples below wlan0 is used replace wlan0 with the interface reported by iwconfig above. The wireless configuration to be used should match what your Access Point AP uses. First, find out if you can see your access point (AP) with

iwlist wlan0 scan

Note: You may have to set the network name before the scan can find your Access Point. If the scan does not find your AP, try issuing the command

iwconfig wlan0 essid ‘ESSID’

before the using the command

iwlist wlan0 scan

If this lists your AP, you can continue. Otherwise, you may have one of two problems: Your AP doesn’t broadcast SSID see the FAQ for more information or the radio of the card is off again, see the FAQ for details. If you see the AP in scan above, set the operating mode of the interface according to your setup. In most cases, it is Managed

iwconfig wlan0 mode Managed

If you use encryption WEP, set the key:

iwconfig wlan0 key restricted XXXXXXXX

You can use 10 hex digits for 40-bit encryption or 26 hex digits for 128-bit encryption. You may need to use open security mode instead of restricted depending on the setup of your AP. If you want to write the key in ASCII use s: e.g. iwconfig wlan0 key restricted s:password. Set the network name

iwconfig wlan0 essid ‘ESSID’

Replace ESSID with the network name used by your AP.

At this point, check to make sure that ESSID is set in output of iwconfig wlan0. If you see the ESSID as you set, you can proceed to next step. If you see ESSID: off/any, then your card is not associated to AP. Check if WEP encryption is set exactly as used by AP and the AP broadcasts ESSID. See FAQ for more details. Until ESSID is set in output of iwconfig wlan0, you may not use wlan0 as network interface.
Now, setup the network parameters for the interface wlan0. This varies from distribution to distribution. Refer to your distribution’s documents on how to do this. Once this is done, you can use network tools to bring up the network e.g.,

ifconfig wlan0 up

or

dhclient wlan0

or

dhcpcd wlan0

etc.

Remember, if you have a firewall, to let it know that wlan0 is an external interface and allow it to pass traffic otherwise you won’t even be able to ping your AP.

If you receive the following error message

ifup wlan0
ignoring unknown interface wlan0=wlan0

then you will need to add your own IP manually by simply entering

ifconfig wlan0
/sbin/route add default gw

This should allow you onto the internet for this session only.

[edit]
Running at Startup:
Create module alias: Once everything works fine you can write the correct modprobe settings to load ndiswrapper automatically when wlan0 interface is used, by running

ndiswrapper -m

Note that this doesn’t automatically load ndiswrapper module at boot time. If you want the module to be loaded automatically at boot time, you should configure your module setup, which depends on the distrbution. Most distributions will load all modules listed in /etc/modules at boot time. Mandrake 10.x uses /etc/modprobe.preload. For them, you can add a line

ndiswrapper

in /etc/modules.

If you had the ignoring unknown interface wlan0=wlan0 error earlier you will need to edit your /etc/network/interfaces file and change all occurences of eth0 to wlan0