:'''''Note:''' Some people have trouble installing ipw3945. If you are experiencing a lot of difficulty using it, you can always try the new [[Wireless_Setup#ipw3945_and_ipw4965|iwlwifi]] instead. By the way this driver is in the linux 2.6.24 kernel.

+

#REDIRECT [[Wireless Setup#iwl3945, iwl4965 and iwl5000-series]]

−

+

{{Warning|This method is deprecated and the driver installed in this guide is no longer maintained by Arch Linux. Please use [[Wireless_Setup#iwl3945.2C_iwl4965_and_iwl5000-series|iwlwifi]] instead.}}

−

+

−

----

+

−

+

−

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 ArchLinux.

+

−

+

−

==Verification==

+

−

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 ArchLinux CD. In most cases, you already have this package installed.

+

−

+

−

===Installing pciutils===

+

−

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.

As long as you see the network controller, you are good to go. The output will vary depending on your system configuration. If you don't 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.

+

−

+

−

==Installation==

+

−

===.. using stock kernel (default)===

+

−

We will start by installing the ipw3945 package, which contains the module, daemon and firmware pre-compiled for ArchLinux Stock Kernel

+

−

<pre>

+

−

# pacman -S ipw3945

+

−

</pre>

+

−

+

−

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:

+

−

<pre>

+

−

# modprobe ipw3945

+

−

# ipw3945d

+

−

</pre>

+

−

+

−

And now, the daemon will run and start logging it's activities. We need to view these activities with 'dmesg', like so:

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:

+

−

+

−

Install wget

+

−

<pre>

+

−

# pacman -S wget

+

−

</pre>

+

−

+

−

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:

We will then browse into the extracted directory, and start the configuration process.

+

−

<pre>

+

−

# cd linux-2.6.22.2

+

−

# make oldconfig

+

−

# make menuconfig

+

−

</pre>

+

−

+

−

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:

+

−

+

−

{{Box Kernel||

+

−

<pre>

+

−

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

+

−

</pre>

+

−

}}

+

−

+

−

+

−

Be sure that the following options are NOT enabled (from http://ipw3945.sourceforge.net/INSTALL)

+

−

{{Box Kernel||

+

−

<pre>

+

−

Device Drivers ->

+

−

Network device support ->

+

−

Network device support (NETDEVICES [=y]) ->

+

−

Wireless LAN (non-hamradio) ->

+

−

Intel PRO/Wireless 3945ABG Network Connection

+

−

</pre>

+

−

}}

+

−

+

−

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.

+

−

+

−

<pre>

+

−

# make bzImage

+

−

# cp arch/i386/boot/bzImage /boot/kernel-2.6.22.2

+

−

# make modules

+

−

# make modules_install

+

−

</pre>

+

−

+

−

After these, you simply need to reconfigure grub to load the new kernel

+

−

+

−

<pre>

+

−

# nano /boot/grub/menu.lst

+

−

</pre>

+

−

+

−

and add the following to the end of the file:

+

−

+

−

<pre>

+

−

# Arch Linux Custom Kernel v2.6.22.2

+

−

title Arch Linux [kernel-2.6.22.2]

+

−

root (hd0,0)

+

−

kernel /boot/kernel-2.6.22.2 root=/dev/sda1 ro

+

−

</pre>

+

−

+

−

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.

+

−

+

−

<pre>

+

−

# cd /usr/src

+

−

# wget http://downloads.sourceforge.net/ipw3945/ipw3945-1.2.2.tgz

+

−

</pre>

+

−

+

−

Now browse over to http://bughost.org/ipw3945/ and download the latest version of the firmware and daemon.

+

−

+

−

<pre>

+

−

# 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

+

−

</pre>

+

−

+

−

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:

+

−

+

−

<pre>

+

−

# 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

+

−

</pre>

+

−

+

−

At this point, the module, firmware and daemon have been setup. You can now attempt to load the module, then start the daemon:

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).

+

−

+

−

==Setup==

+

−

In this section, we will setup the module and daemon to automatically load on boot up.

+

−

<pre>

+

−

# nano /etc/rc.conf

+

−

</pre>

+

−

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:

+

−

+

−

<pre>

+

−

# 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

+

−

</pre>

+

−

+

−

For more information on setting it up, please see [http://ipw3945.sourceforge.net/ ipw at sourceforge]. Enjoy!