Very important note :
-------------------
- This release of the Wireless Tools is not compatible with Wireless
- Extensions earlier than 9.
- Kernels that support this version of the Wireless Tools are listed
- below. For all kernels before that, please use the version v19 of
- the Wireless Tools.
- You might have headers troubles and it doesn't compile, see below...
+ This release of the Wireless Tools is not compatible with
+Wireless Extensions earlier than 9. Version 9 and 10 should work fine
+but are not recommended. Version 8 and earlier will not work.
+ Kernels that support this version of the Wireless Tools are
+listed below. For all kernels before that, see at the end.
You need :
--------
o Compiler and development environment
- o A kernel supporting wireless extensions version 9 or higher
- -> from 2.2.14 onward
- -> from 2.3.24 onward
+ o A kernel supporting wireless extensions version 11 or higher
+ -> from 2.4.4 onward (including 2.6.X)
Note : CONFIG_NET_RADIO must be enabled
o (Optional) A Pcmcia package supporting Wireless Extension
o A driver supporting wireless extensions
- -> Check my web pages for latest list of drivers,
- otherwise patch your favourite driver...
+ -> Check my web pages for status of various drivers.
Note : more recent kernels and drivers are likely to support
more wireless extension features...
Compile wireless tools :
----------------------
In theory, a "make" should suffice to create the tools.
- In practice, there is big troubles with the kernel
-headers. See below for how to fix that.
- Note : as some internal data structures change from kernel to
-kernel, you are advised to not use the precompiled version of the
-tools but to recompile your own.
Installation :
------------
- If I were you, I would not trust a "make install". If you feel
-courageous, just do "make install". It may even do the right
-thing. Actually, with the various bugfixes that happened over the
-time, it nowadays tend to do the right thing.
- I advise to copy the executable (iwconfig, iwspy and iwpriv)
-in /usr/local/sbin or /usr/sbin. The man pages (iwconfig.8, iwspy.8
-and iwpriv.8) should be copied in /usr/local/man/man8 or
-/usr/man/man8.
- In fact, if you want to use Pcmcia wireless.opts, this step is
-mandatory...
-
-Kernel headers (why it doesn't compile) :
----------------------------------------
- Some changes in the kernel headers and glibc headers are
-making my life difficult. We now have a mechanism to automatically
-select the proper header based on various bits of information (libc
-version & kernel version), but it may fail to do the right thing.
- You may also see the message :
- "Your kernel/libc combination is not supported"
- If this happens to you, you will need to hack the rules at the
-top of iwlib.h and send me the patch.
-
- The second issue is that some distributions install some
-independant kernel headers in /usr/include. If you upgrade your
-kernel, those headers become out of sync and you don't benefit from
-the latest Wireless Extensions. Even worse, it can sometimes prevent
-the tools from compiling.
- The trick is to copy the file .../include/linux/wireless.h
-from the kernel to the /usr/include headers.
+ "make install" should do the right thing for you, and install
+the tools, their library and the man pages. You can also uninstall the
+tools via "make uninstall".
+ Note that the default installation is in the directory
+'/usr/local/sbin'. This may not be in your path. Also, other version
+of the tools may exist on the system, so double check which version is
+the default and adjust your path as necessary.
+
+Create a local copy of the tools :
+--------------------------------
+ By default, the package is built with iwlib as a dynamic
+library, and the tool will expect to use the default version of libiw
+on the system. This means you can't use the tools until they are
+properly installed.
+ If you just want to experiment with a "local" version of the
+tools, you may want to pass the BUILD_STATIC flag to Makefile. It will
+create a self contained version of the tools.
+ -------------
+ make clean
+ make BUILD_STATIC='y'
+ -------------
+ The resulting binary can be used in the compilation directory
+or installed in any place you like.
+
+Other useful Makefile options :
+-----------------------------
+ PREFIX : where the tools will be installed (default : /usr/local)
+ CC : Compiler to use (defaul : gcc)
+ BUILD_STATIC : build tools with a static version of the wireless lib
+ BUILD_NOLIBM : build tools without mathematical lib (slower)
+ BUILD_STRIPPING : strip symbols from tools/lib.
+ BUILD_WE_ESSENTIAL : remove less used and obsolete features.
+
+ You can pass those options on the command line of make, or
+modify the top of the Makefile. You can also set them as environment
+variable, but this is not recommended.
+ If you pass those options on the command line, you should pass
+the same command line options for all invocations of make ("make" and
+"make install").
+
+Memory footprint reduction :
+--------------------------
+ The Wireless Tools are used in various embedded systems where
+memory footprint is a great concern. The Wireless Tools package offer
+multiple options to customise the compilation depending on the level
+of features you want.
+ The list below details the must useful combinations of these
+options, from the largest footprint to the smallest. Footprint depend
+on lot's of factor and is purely indicative (version 29-pre7+, i386,
+glibc, gcc 3.3.5).
+
+ 1) Static build
+ Command line : make BUILD_STATIC='y'
+ - : Largest footprint
+ - : libiw not included (other third party tools may depend on it)
+ Size : ~280 kB
+
+ 2) Default build
+ Command line : make
+ + : Fully featured version of the tools
+ - : Largest footprint (except for static version of tools)
+ Size : ~190 kB (libiw : ~29 kB ; ifrename : ~29 kB)
+
+ 3) Stripping (remove function symbols)
+ Command line : make BUILD_STRIPPING='y'
+ + : Fully featured version of the tools
+ - : Still quite large
+ Size : ~110 kB (libiw : ~23 kB ; ifrename : ~17 kB)
+
+ 4) Multicall version (include stripping)
+ Command line : make iwmulticall ; make install-iwmulticall
+ + : Fully featured version of the tools
+ + : Small
+ - : libiw not included (other third party tools may depend on it)
+ - : ifrename is not included
+ Size : ~55 kB
+
+ 5) Multicall + Essential
+ Command line : make BUILD_WE_ESSENTIAL='y' iwmulticall
+ + : Smaller
+ - : Some less used features are left out
+ - : libiw not included (other third party tools may depend on it)
+ - : ifrename is not included
+ Size : ~44 kB
+
+ 6) iwconfig only + essential + static
+ Command line : make BUILD_WE_ESSENTIAL='y' BUILD_STATIC='y' BUILD_STRIPPING='y' iwconfig
+ + : Very small
+ - : Very limited functionality : no scanning, no event, no iwpriv
+ - : libiw not included (other third party tools may depend on it)
+ - : ifrename is not included
+ Size : ~28 kB
+
+Wireless headers (past history) :
+-------------------------------
+ Previous version of the Wireless Tools had to be compiled with
+the same version of Wireless Extension that the kernel was using, and
+that was a major source of troubles.
+ Starting with version 27, Wireless Tools include all the ugly
+code to deal with any version of Wireless Extensions, so now you can
+compile a single "generic" version of the tools for any kernel.
+ Well, there are some limits, Wireless Extensions earlier than
+v11 are not supported (v9 and v10 should work fine), and versions
+later than the latest definition in the package are not
+supported. Once compile, the command "iwconfig --version" should tell
+you that.
+ Note that the previous option to make versioned installed of
+the tools no longer make sense and therefore is gone.
+
+Old kernel with older Wireless Extensions :
+-----------------------------------------
+ Kernel prior to 2.2.14 : Those kernels include Wireless
+Extensions v8 or earlier. Those versions don't have proper support for
+802.11b, so are not very useful. You may want to consider upgrading.
+ Kernel 2.2.19 to 2.2.25 : Those kernels include Wireless
+Extensions v10. The tools should mostly work with it, but many drivers
+won't. You can upgrade those kernel to WE v15 with a patch on my web
+page.
+ Kernel 2.2.14 to 2.2.18 : Those kernels include Wireless
+Extensions v9. Same as above, you may want to upgrade to a later 2.2.X
+kernel and then apply the patch.
+ Kernel 2.0.X : Those kernels include very old version of
+Wireless Extensions. Same deal as old 2.2.X kernels.
Jean <jt@hpl.hp.com>