README for kernel-wlan-ng v 0.2.0 (S)RPMS: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Legal stuff: The spec file used to create these RPMS and contained within the SRPMS is provided under the terms of the GPL v2 license. I am not a lawyer, so I do not know if a "spec" file qualifies for GPL2 coverage (is it software?). If it does not, to use the spec file you must agree to the spirit of GPL2. I don't think anyone will have problems with this. One small request...if you make changes/improvements to the .spec file, please send them directly to me (millerte@wfu.edu) or, if that email ceases to exist, then post them to the wlan-ng mailing list so I can re-incorporate the changes, give credit, and help everyone else out. Thanks! Additionally, these packages (SRPMS and RPMS) are provided without warranty or even the slightest guarantee that they will work for you. By installing them, you agree to take responsibilty for any damage caused by them. That being said, they obviously work for me...but I am not you and you are not me...therefore you agree to use these at your own risk. I wish I did not have to state explicitly what should be assumed by any normal person using open source software. However, the legal system seems to encourage people to stop thinking, assume nothing is their own fault, and penalize people who try to help others. -- Tim Miller, 12 April 2003 WHAT I HAVE PROVIDED ~~~~~~~~~~~~~~~~~~~~ I am providing the following packages: kernel-wlan-ng-VERSION-RELEASE.src.rpm kernel-wlan-ng-VERSION-RELEASE.ARCH.rpm (the base package) kernel-wlan-ng-usb-VERSION-RELEASE.ARCH.rpm (the USB package) kernel-wlan-ng-pcmcia-VERSION-RELEASE.ARCH.rpm (the PCMCIA RPM) kernel-wlan-ng-pci-VERSION-RELEASE.ARCH.rpm (the PCI package) kernel-wlan-ng-modules-RHKERNEL-VERSION-RELEASE.ARCH.rpm (the modules RPM) Currently, VERSION (linux-wlan-ng) = 0.2.0 RELEASE (my RPM spec version) = 6, RHKERNEL (RH release kernels) = too many to list... ARCH = i386, i586, i686, athlon NOTE: All of these packages were built against kernel-pcmcia-cs-3.1.27 provided with RedHat 7.3, or 3.1.31 from RedHat 8 and 9 The RedHat system used to build these packages were updated with all the latest Errata from RH as of the build date on the packages. TESTING: These packages have only been tested with the Linksys WPC11 v2.5 Wireless PCMCIA card connecting to a Linksys WAP/Router. The USB package is the brain child of Erick Calder. His modifications were included for release 4 and was tested against the Linksys USB version with linux-wlan-ng VERSION 0.1.13. However, since then, the driver source code has made several internal improvements and the additions he made have been removed as of 0.1.15...although I've done some restructuring and kept the USB rpm (see below) ****MAJOR CHANGES IN THE PACKAGES FOR 0.2.0**** Between 0.1.15 and 0.2.0, the configuration file layout has changed substantially. This change is not imposed by the RPMS but by the driver authors AND it's a good thing since all the information is now centralized! Regardless of the Prism2 interface you use (usb, pci, plx, or pcmcia), you now configure /etc/wlan/wlan.conf to define whether you want to scan channels and what your primary (and/or secondary and/or tertiary) SSID is. Then, you copy the wlancfg-DEFAULT to wlancfg-SSID (replace SSID with the actual SSID for your WAP). Configure each SSID config file as needed (refer to the linux-wlan-ng documentation on how to do this). *NOTE* I still provide a default networking configuration file for wlan0 that defaults to DHCP automatic configuration. You'll need to edit that (most likely by hand) for your own personal network settings. WHAT YOU HAVE TO DO ~~~~~~~~~~~~~~~~~~~ -> install the packages. You must install a minimum of 3 packages. The base package, the modules package, and the "interface" package (i.e. PCI *or* PCMCIA *or* USB). You must install the correct interface package *and* correct kernel modules package to have any hope of success! The information to determine which packages you need can be found with the following commands: rpm -q redhat-release -> you should know this, but it will tell you which RH you run. grep "#define __MODULE_KERNEL_i" /boot/kernel.h -> this will tell you whether you are running a i386, i586, i686, or athlon kernel. This is crucial information! uname -r -> this will tell you which kernel you are actually running, both the Linux version and the Redhat release. -> Modify the /etc/wlan/wlan.conf and /etc/wlan/wlancfg-"SSID" (replace "SSID" with the actual SSID of your WAP) files to configure your wireless card for YOUR specific WAP. The default blank ones from 0.2.0 are provided. You should copy wlancfg-DEFAULT to wlancfg-SSID and change it appropriately to match your WAP. The documentation that comes with the source code is provided in the kernel-wlan-ng base RPM. Don't forget to check out the mailing list for additional help. And for crying out loud, secure your Wireless setup...don't be an easy target for crackers! -> Verify that the correct configuration line was placed in the /etc/modules.conf file. This should have been done automatically when the RPM was installed, but check it to make sure! For example, for PCMCIA cards, the line should be 'alias wlan0 prism2_cs'. -> Send me a nice gift certificate to Ruth's Chris Steakhouse... Or, if you are a vegan/vegetarian, send me a good recipe that doesn't include too many black beans. JUST KIDDING! You don't have to send me anything... IF YOU WANT/NEED TO BUILD YOUR OWN MODULES ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ If you have a radically different kernel and want to build your own modules, it is quite simple to do. There are two prep steps you must do prior to touching the SRPMS though. -> Setup your linux kernel source Whatever source you want to build a set of modules to has to be pointed to by the /usr/src/linux symbolic link. So, for instance, if your kernel source was in /home/tim/attempt4, you need to run the following command (assuming /usr/src/linux does not exist): ln -s /home/tim/attempt4 /usr/src/linux If possible, you should be currently using the linux kernel that the sources you are pointing to actually built. NOTE: If you use (and you can use it) the Redhat kernel-source RPM for your kernel source, YOU MUST EDIT the Makefile(/usr/src/linux/Makefile) and remove the 'custom' tag from the EXTRAVERSION definition! Otherwise, the build process won't think you are using the same kernel. WARNING: If you use Redhat's kernel-source RPM, it's quite possible that the default configuration information might not be representative of the kernel that you are running. If this is the case, you will still get "Unresolved symbol" errors when loading your freshly rebuilt kernel modules DESPITE having followed my perfect directions laid out here :) To correct the situation (after you are certain the packages didn't build correctly...don't want to "fix" things unless broken), copy the config file from /usr/src/linux-x.y.z/configs that represents the kernel you are currently running to /usr/src/linux-x.y.z/.config and then run the following two commands (the copy is shown as an **example** for single CPU Pentium Pro, or better, system): cd /usr/src/linux-2.4.18-10 cp configs/kernel-2.4.18-i686.config .config make oldconfig make dep -> Setup your pcmcia-cs source Here's what I did. You can do whatever you wish to grab a copy of pcmcia-cs source code, but your mileage may vary WILDLY: rpm -ivh kernel-pcmcia-cs-3.1.27-10.src.rpm cd /usr/src/redhat/SPECS rpm -bp kernel-pcmcia-cs.spec mv /usr/src/redhat/BUILD/pcmcia-cs-3.1.27 /usr/src You must create another symbolic link (or rename your source directory) to the PCMCIA source: ln -s /usr/src/pcmcia-cs-3.1.27 /usr/src/pcmcia-cs -> Now, you are ready to rebuild. You must provide two "defines" to the RPM command: linvers : linux kernel version...directly affects the name of the modules package you are building! pcmvers : PCMCIA source code version, needed only to document in the RPM info which code version was used. -> Finally, you must indicate whether you are building modules from a Redhat standard kernel or a kernel that you have configured yourself (it doesn't matter if it came from Redhat or kernel.org)...i.e. you have run "make [x|menu]config" and changed some options. If you don't know what that means, you are most likely using a Redhat standard kernel. For Redhat standard kernels and configurations, determine which kernel CPU type you are running as above (i386, i586, i686, athlon). For non-standard kernels (regardless of what CPU type you choose), your version is x86. The value you have decided on here is shown in the example below. -> Now, let's rebuild...this is the fun part (beware the line wrap, it all has to be on one line!!!) AND don't forget to change i386 to whatever kernel CPU type you need to build: rpm --rebuild --define='pcmvers 3.1.27' --define='linvers rh73.5' --target i386 kernel-wlan-ng-0.1.15-5.src.rpm NOTE: Beginning with RedHat 8.0, you must replace the 'rpm' command with 'rpmbuild'. Ahhh, RedHat... -> This generates several RPM packages in /usr/src/redhat/RPMS/i386: kernel-wlan-ng-0.1.15-5.i386.rpm kernel-wlan-ng-usb-0.1.15-5.i386.rpm kernel-wlan-ng-pci-0.1.15-5.i386.rpm kernel-wlan-ng-pcmcia-0.1.15-5.i386.rpm kernel-wlan-ng-modules-rh73.5-0.1.15-5.i386.rpm assuming, of course, there wasn't a compilation error.... Side note: if you built an i686 set of RPMS, they will be in /usr/src/redhat/RPMS/i686. i586 in /usr/src/redhat/RPMS/i586, etc. etc. -> Install the packages in the normal way...