This guide shows you, in a step-by-step manner, how to install the ipw3945 module and daemon, used for the Intel Pro Wireless 3945 chipset.
Intel Pro Wireless
The Intel Pro Wireless 3945ABG (ipw3945) chip can be found inside many laptops. This page will help you install, setup and troubleshoot the IPW module (ipw3945), daemon (ipw3945d) and firmware (ipw3945-ucode) for Arch Linux.
First, let us verify that you indeed do have the ipw3945 chip installed in your laptop. We will install the package 'pciutils' which can be found online in the pacman repository, or on the Arch Linux CD. In most cases, you already have this package installed.
To install pciutils from CDROM: create the mount point /mnt/cdrom, mount the cdrom to /mnt/cdrom, browse over to /mnt/cdrom/arch/pkg, and locate the 'pciutils-*.pkg.tar.gz' file, then install it using pacman.
# mkdir /mnt/cdrom # mount /dev/cdrom /mnt/cdrom # cd /mnt/cdrom/arch/pkg # ls pciutils* pciutils-2.2.4-2.pkg.tar.gz # pacman -U pciutils-2.2.4-2.pkg.tar.gz
To install pciutils from internet: use pacman to install it.
# pacman -S pciutils
Using lspci to verify
To verify if you have the ipw3945 chip installed, run this command:
# lspci | grep 3945 03:00.0 Network controller: Intel Corporation PRO/Wireless 3945ABG Network Connection (rev 02) #
As long as you see the network controller, you are good to go. The output will vary depending on your system configuration. If you do not see any output, then there is a hardware issue. Now that we are sure you have the ipw3945 wireless chip in your laptop, let's proceed to installation.
.. using stock kernel (default)
We will start by installing the ipw3945 package, which contains the module, daemon and firmware pre-compiled for Arch Linux Stock Kernel
# pacman -S ipw3945
Make sure that you TURN ON YOUR WIRELESS SWITCH! At this point, you should be able to load the module, and start the daemon, like so:
# modprobe ipw3945 # ipw3945d
And now, the daemon will run and start logging it's activities. We need to view these activities with 'dmesg', like so:
# dmesg | grep ipw ipw3945: Intel(R) PRO/Wireless 3945 Network Connection driver for Linux, 1.2.2d ipw3945: Copyright(c) 2003-2006 Intel Corporation ipw3945: Detected Intel PRO/Wireless 3945ABG Network Connection ipw3945: Detected geography ABG (11 802.11bg channels, 13 802.11a channels)
If you do not see the 'detected geography' line within 30 seconds of running the daemon, you will most likely need to compile a custom kernel (see below). If you do see the 'detected geography' line, skip the next chapter.
.. using custom kernel (troubleshoot)
So far, you've tried everything, but no luck. Well, the good news is that there is very little that can break the ipw3945 daemon. The problem is most likely the kernel not having what you need. Please note for the following part that you will need either the internet or a way to transfer files onto your laptop. When it is said that you need to install a package (e.g. wget), you need to either use pacman -S package, or download the .pkg.tar.gz file, and do pacman -U package.pkg.tar.gz. Let's get started on compiling our own kernel:
# pacman -S wget
Download the latest kernel from http://www.kernel.org/ by browsing over and located the 'latest stable version of the linux kernel'. You will be presented with a few options (F, V, Vi, C, Changelog), copy the 'F' link, download the file, and extract it:
# mkdir /usr/src # cd /usr/src # wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-188.8.131.52.tar.bz2 # tar xjf linux-184.108.40.206.tar.bz2
We will then browse into the extracted directory, and start the configuration process.
# cd linux-220.127.116.11 # make oldconfig # make menuconfig
You will now be presented with a list of settings that you can enable/disable for your kernel compilation. Most importantly, you need to select your IDE/SATA chipset (also located in lspci) and for the ipw3945, you will need the following configurations:
Networking ---> Wireless ---> <*> Improved wireless configuration API < > Generic IEEE 802.11 Networking Stack (mac80211) --- Generic IEEE 802.11 Networking Stack [ ] Enable full debugging output --- IEEE 802.11 WEP encryption (802.1x) <*> IEEE 802.11i CCMP support <*> IEEE 802.11i TKIP encryption <*> Software MAC add-on to the IEEE 802.11 network [ ] Enable full debugging output <*> RF switch subsystem support ---> --- RF switch subsystem support <*> Input layer to the RF switch connector (optional, but recommended): Networking options ---> < > The IPv6 Protocol
Be sure that the following options are NOT enabled (from http://ipw3945.sourceforge.net/INSTALL)
Device Drivers -> Network device support -> Network device support (NETDEVICES [=y]) -> Wireless LAN (non-hamradio) -> Intel PRO/Wireless 3945ABG Network Connection
Once you have completed setting up your configuration, simply keep hitting exit until the program asks you to save your configuration, at which point you should select 'Yes'. You are now returned to the shell. Now, we will start the compiling of the kernel, modules, and installation of the modules.
# make bzImage # cp arch/i386/boot/bzImage /boot/kernel-18.104.22.168 # make modules # make modules_install
After these, you simply need to reconfigure grub to load the new kernel
# nano /boot/grub/menu.lst
and add the following to the end of the file:
# Arch Linux Custom Kernel v22.214.171.124 title Arch Linux [kernel-126.96.36.199] root (hd0,0) kernel /boot/kernel-188.8.131.52 root=/dev/sda1 ro
For the root (hd0,1) line, please copy it from the existing kernel in menu.lst. For 'root=/dev/sda2', please copy it from the existing kernel in menu.lst. Note you do not need the initrd line for custom kernels.
Once you have edited menu.lst, save it with CTRL-X, then Y to save and exit.
BOOT INTO YOUR NEW KERNEL NOW!
Every module in linux needs to be built against the kernel sources of the running kernel in order to function properly (modules include nvidia and ipw3945). So what we will do is compile ipw3945 for our new kernel, but first, we must download it! Browser over to http://ipw3945.sourceforge.net/#downloads and download the latest version of ipw3945 module.
# cd /usr/src # wget http://downloads.sourceforge.net/ipw3945/ipw3945-1.2.2.tgz
Now browse over to http://bughost.org/ipw3945/ and download the latest version of the firmware and daemon.
# cd /usr/src # wget http://bughost.org/ipw3945/ucode/ipw3945-ucode-1.14.2.tgz # wget http://bughost.org/ipw3945/daemon/ipw3945d-1.7.22.tgz
Now we will extract, compile and install the ipw3945 module, firmware and daemon. Please, before proceeding, make sure you have the 'ipw3945' package uninstalled from your system for it will conflict with the latest version:
# pacman -Rsc ipw3945 # cd /usr/src # tar xzf ipw3945-1.2.2.tgz # tar xzf ipw3945-ucode-1.14.2.tgz # tar xzf ipw3945d-1.7.22.tgz # cd ipw3945-ucode-1.14.2 # mkdir /lib/firmware # cp ipw3945.ucode /lib/firmware # cd /usr/src # cd ipw3945d-1.7.22 # cd x86 # cp ipw3945d /sbin/ # cd /usr/src # cd ipw3945-1.2.2 # make # make install
At this point, the module, firmware and daemon have been setup. You can now attempt to load the module, then start the daemon:
# modprobe ipw3945 # ipw3945d # dmesg | grep ipw ipw3945: Intel(R) PRO/Wireless 3945 Network Connection driver for Linux, 1.2.2d ipw3945: Copyright(c) 2003-2006 Intel Corporation ipw3945: Detected Intel PRO/Wireless 3945ABG Network Connection ipw3945: Detected geography ABG (11 802.11bg channels, 13 802.11a channels)
Voila! Everything works fine! Every time you need to use the wireless, simply load the module, and start the daemon. This process can be automated on every bootup (see below).
In this section, we will setup the module and daemon to automatically load on boot up.
# nano /etc/rc.conf
Simple add 'ipw3945' to the modules=() list, an add 'ipw3945d' to the daemons=() list. Note that you MUST add the ipw3945d daemon BEFORE the 'network' daemon.
Congratulations! You should now have a fully functional Intel Wireless Pro card in your laptop! You will find that there is a new interface (eth#, or wlan#) located in ifconfig. You can double check everything worked by doing this:
# iwconfig eth1 IEEE 802.11g ESSID:"" Mode:Managed Frequency:2.462 GHz Access Point: Bit Rate:54 Mb/s Tx-Power:14 dBm Retry limit:15 RTS thr:off Fragment thr:off Encryption key:A834-3CF5-EC85-EB2A-17E4-17A4-AD Security mode:open Power Management:off Link Quality=84/100 Signal level=-49 dBm Noise level=-50 dBm Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0 Tx excessive retries:0 Invalid misc:1844 Missed beacon:0
For more information on setting it up, please see ipw at sourceforge. Enjoy!