Main Page | Recent changes | Edit this page | Page history

Printable version | Disclaimers | Privacy policy

Not logged in
Log in | Help

ClarkConnect 3.2 rt2500 Howto

From Rt2x00Wiki



Copyright © 2006 Jeremy Rogers

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License".

Introduction This is a HOWTO document for getting an 802.11g wireless NIC card based on the RT2500 chipset to work under the CENTOS-based Clarkconnect releases 3.2 thru 4.3 (, in a configuration where the RT2500 NIC is installed as a second NIC in addition to a fixed wire NIC behind the firewall. As a Linux newbie, Aaron Howard’s excellent CENTOS HOWTO pointed me in the right direction and this HOWTO borrows from some of his.

Disclaimer: as a linux newbie I don’t guarantee that all the steps set out here are actually necessary or sufficient. They do, however, appear to work: I originally worked out how to get the card working on an experimental clean CC3.2 installation on a spare box before then repeating the process on the live working server.

Installing the cc developer tools and kernel sources/developer kit

(from clarkconnect newbie portal:

Installing the developer tools: You may need to install the developer tools – if you’ve got loads of disc space then it can’t do any harm. If for some reason disk space is short (e.g. like me you installed the basic CC system on a 2Gb disk) then you might be able to proceed without this step.

apt-get update
apt-get install cc-devel
apt-get install make

Installing the kernel sources
(NB requires ~250Mb free disk space for kernel source install)

Compiling the RT2500 module from its sources requires some of the sources for your linux kernel to also be available. You can either install the full kernel sources, or only the (much smaller) kernel developer package from Clarkconnect. Whichever option you choose, you first need to know which version of the kernel you’re running:

uname –r

You also need to know which CPU type your kernel is compiled for.

modinfo libcrc32c.ko

…returns information about the existing kernel module libcrc32c.ko ( concerning some aspects of the software and hardware environment it expects to run under, including an output line something like:

 vermagic: 686 REGPARM 4KSTACKS gcc-3.4

(I chose libcrc32c.ko randomly; modinfo on other kernel modules would return similar info)

This tells you which kernel version and processor type the module was compiled for, and which compiler was used (gcc-3.4 in this case). Take particular note of the bit highlighted, reading either 686 or 586 depending on which processor you’ve got (or presumably something else for dual core systems). You can't compile the rt2500 module using kernel sources for the wrong processor, and a version of the rt2500 module compiled on a 586 machine with the 586 kernel sources won't work if you copy the compiled ko file across to a 686 machine, even if the kernel version on that machine is the same.

To actually compile the RT2500 module you can either install (and compile) the entire kernel sources, or only install the kernel developer package (which is smaller and doesn’t need compiling). I originally went down the entire kernel source route, and didn’t find out about the kernel developer package until second time around. I’d suggest the kernel developer route - option 1 below – though this may also require you to upgrade your kernel. I’ve documented the kernel sources route (option 2) as well just in case it proves useful.

Option 1: Installing the kernel developer package

(much quicker but slightly more fiddly)

In theory, you can just type:

apt-get install –V kernel-devel

…and this will install the correct kernel developer package under /usr/src/kernels. In my experience, however, it may install a kernel-devel package for the wrong kernel version. The –V switch will tell you which version is being installed, or you simply look at what’s under /usr/src/kernels. If what gets installed matches your current running kernel, you can skip to section 2. If you don’t get the one matching your actual kernel, the more fiddly solution is as follows:

Using a web browser, examine the contents of Clarkconnect’s developer site at to see whether there is a package listed with a name something like:

…where should match the kernel version you’re running (as determined above using uname –r) and yyy should match your processor type, as determined by the modinfo command earlier. If such a package exists, you can type:

cd /usr/src
rpm –Uvh

If there’s no kernel-devel package that matches your running kernel, then its time to upgrade your kernel:

apt-get update
apt-get install kernel

(returns a list of available kernel versions)

apt-get install

(where matches a version with a matching kernel-devel package)

Option 2: Installing and compiling the entire kernel sources (takes ages, and needs tons of disk space)

apt-get clean
apt-get update
apt-get install kernel-source

(returns a list of available sources)

apt-get install

( should match the kernel version you are running)

cd /usr/src/
make oldconfig

(will take a LONG time – an hour or more)


…where make oldconfig (I think) copies the default cc build config file into the right place, so that the make then builds a replica of the kernel you’ve already got. The compilation will take a LONG time, probably an hour or more. It may produce a few error messages; ignore them.

NB the final depmod step seems to be necessary if using the beta3 release of the rt2500 driver. The beta4 release compile (make) script includes a line to call depmod before the main rt2500 module build starts.

If that doesn’t work, you could always try what I originally did:

cd /usr/src/
make menuconfig

…where make menuconfig brings up a GUI for selecting which kernel options you want to install, so you can roll your own config. For me, this GUI came up with many options preselected or predeselected. I left the options unchanged, saved the file and did the make and depmod before then

Obtaining and unpacking the RT2500 driver sources

(from Aaron Howard’s excellent HOWTO install on a CENTOS distro

Navigate to the /usr/src subdirectory.

cd /usr/src

1. Download the RT2500 driver module sources for example via sourceforge:


This will download the beta-4 version of the rt2500 driver (released in June 2006) directly into the directory you’re currently in, ie /usr/src

You can get the driver from whatever mirror you like – you can find out where its available from the rt2500 project downloads page at : 

NB Make sure you're getting the rt2500 driver, not the rt2400 driver. Also, don’t try the rt2x00 driver as this only works with linux kernel versions more advanced than that used by Clarkconnect 3.2 out of the box.

2. Untar the driver source tarball

tar zxvf rt2500-1.1.0-b4.tar.gz 

This creates a new directory below the current one called rt2500-1.1.0-b4 under which are all the driver source files.

Compiling the RT2500 driver module

In the rt2500-1.1.0-b4 directory is another subdirectory called Module:

cd rt2500-1.1.0-b4/Module 

In order for the rt2500 sources to compile, you have to have a symbolic link called build within your currently running kernel under /lib/modules/x.x.x-xx that points to the sources under /usr/src/, where x.x.x-xx identifies your currently running kernel.

If you installed the kernel-devel package rather than the entire kernel sources, this link should have been made for you…but I recommend checking that it exists and is pointing to the right place:

ls –l /lib/modules/

..will produce a directory listing that should include a line:

 lrwxrwxrwx  1 root root 26 Jul 10 21:28 build -> /usr/src/

If this symbolic link exists, but is for some reason not pointing to the right place, you can remove it as follows:

rm –f /lib/modules/

To create the symbolic link (e.g. if you went for the entire kernel sources option), type the following:

ln -s /usr/src/ /lib/modules/ 

In theory, after all that preparation, you can now actually compile the actual rt2500 module, and then install it. From the /usr/src/rt2500-1.1.0-b4/Module directory, issue these commands:

make clean
make install

This will build the rt2500.ko module, place a copy of it somewhere under /lib/modules, and make some other (possibly) not completely correct other changes that we’ll check and/or fix in the next section. First, however, you can check that the compiled module is going to be compatible with your kernel:

modinfo rt2500

..should return output with a line like:

 vermagic: 686 REGPARM 4KSTACKS gcc-3.4

…where the kernel version, processor type and compiler ID should match the one you got earlier.

Installing the rt2500 driver

Especially if you went for the ‘entire kernel sources’ option, the rt2500 make install may not install the module into the right place: instead of putting it under /lib/modules/x.x.x-xx, you may find it instead under something like /lib/modules/x.x.x-xx.cccustom .

Copy the rt2500.ko module into the directory where clarkconnect stores the driver modules for those wireless cards that it supports out of the box:

cp /usr/src/rt2500-1.1.0-b4/Module/rt2500.ko /lib/modules/

NB if you get a prompt asking whether you want to overwrite the file, this means the make install got it right first time. You can type ‘y’ or ‘n’ as you choose.

5. Loading the module Now we need to join up the dots between lower level hardware configuration of your CCbox and the driver module you just built.

First lets find out whether your wireless card, which you should have fitted onto your motherboard, is recognised as a PCI device:


Examine the output of lspci. Assuming the rt2500 card is currently fitted in a PCI slot on the motherboard of your machine, you should see a line that looks something like this:

 00:08.0 Network controller: RaLink Ralink RT2500 802.11 Cardbus Reference Card (rev 01)

Now examine the hardware configuration file hwconf. This tells us what interface ID kudzu (the plug-and-pray –hardware-detector-manager thang that runs every time you reboot) has assigned to your card. Type:

less /etc/sysconfig/hwconf 

…and scroll down until you see a section something like this:

 class: NETWORK
 bus: PCI
 detached: 0
 device: ra0
 driver: unknown
 desc: "RaLink Ralink RT2500 802.11 Cardbus Reference Card"
 network.hwaddr: xx:xx:xx:xx:xx:xx
 vendorId: 1814
 deviceId: 0201
 subVendorId: 1799
 subDeviceId: 700a
 pciType: 1
 pcidom:    0
 pcibus:  0
 pcidev:  8
 pcifn:  0

In the example above the rt2500 card has been assigned ra0 as its device identifier. If it doesn’t show ra0, but instead shows e.g. eth2, and also if it doesn’t show the card’s MAC address, and despite following the rest of this guide the card still doesn’t work, then you should probably reboot the system a few times until kudzu kicks in during bootup and asks you to enter the card configuration information. In my experience the card first appears in hwconf assigned to eth2 but with no MAC address showing but eventually settles down to showing up with its MAC address but assigned to ra0. (I *think* this only happens successfully if you reboot after having built and installed the driver, installed it into the kernel with modprobe, and edited modprobe.conf before rebooting.)

The end result of being assigned ra0 is possibly a problem, because bits of Clarkconnect reputedly won’t necessarily work very well with active interfaces called anything other than something like ethx. If your hwconf file already says the card has been assigned an ident like ethx then you may or may not be OK. If things don't work, you’ll need to do the interface renaming steps described later.

(If you try editing hwconf by hand, for example to change ra0 to eth2, then the next time you reboot your machine kudzu will very likely pop up with an interactive interface in the middle of the reboot, and change it back. I’ve not yet worked out how kudzu works, or what determines which particular interface ident it assigns. )

Before we finally power up the rt2500.ko module, we need to tell the kernel module loader (modprobe) what to call the new interface. Type:

nano /etc/modprobe.conf

…and find the line (probably the last line) that was inserted by the rt2500 module make install routine you ran earlier, and which probably reads:

 alias ra0 rt2500

If hwconf showed that the card has been assigned ra0, then you don’t need to change this: exit nano without making any changes. On the other hand, if hwconf showed a different device name (e.g. eth2) then edit this last line of modprobe.conf to read (for example):

 alias eth2 rt2500

…and then save the new modprobe.conf before exiting nano.

Now you can try to actually load the module. Type:

modprobe rt2500

There should be a short pause, after which the command prompt should return. If you get any other response (including for example that modprobe can’t find the rt2500 module) re-read the instructions above. If that fails to fix the problem, you’re on your own. Sorry.

To confirm that the driver has loaded, type:

ifconfig ra0/eth2/whatever

..and you should see something like this:

        eth2     Link encap:Ethernet  HWaddr xx:xx:xx:xx:xx:xx
        BROADCAST MULTICAST  MTU:1500  Metric:1
        RX packets:1755 errors:0 dropped:0 overruns:0 frame:0
        TX packets:3102 errors:14 dropped:14 overruns:0 carrier:0
        collisions:60 txqueuelen:1000
        RX bytes:342526 (334.4 KiB)  TX bytes:1853988 (1.7 MiB)
        Interrupt:12 Base address:0x8000

Note that this report also shows the MAC address of the card (after the HWaddr tag on the first line). Make a note of the MAC address – you’ll need it in the next step.

Renaming the interface As said earlier, if your interface is currently called ra0 there may be a problem later with some parts of the Clarkconnect suite. Rumour has it some CC components expect all interfaces to be called ethx. You’re welcome to experiment with keeping your wireless interface as ra0 or whatever; the interface renaming method described below was part of what worked for me. It may not in fact be critical or necessary.

Obviously, we want any renaming of the interface to happen every time the machine reboots, ideally during the script that brings up all the interfaces. To achieve this, type:

nano /etc/init.d/network

Immediately after the fourth pair of lines in the section towards the top of the file (reproduced below) that reads:

  1. Check that networking is up.

[ "${NETWORKING}" = "no" ] && exit 0

  1. if the ip configuration utility isn't around we can't function.

[ -x /sbin/ip ] || exit 1

  1. Even if IPX is configured, without the utilities we can't do much

[ ! -x /sbin/ipx_internal_net -o ! -x /sbin/ipx_configure ] && IPX=

  1. Even if VLAN is configured, without the utility we can't do much

[ ! -x /sbin/vconfig ] && VLAN=

..insert the following:

  1. Optionally remap interfaces based on MAC address.
  2. '/sbin/ifrename' is part of wireless-tools package.
  3. /etc/iftab is currently not created by default.

if [ -x /sbin/ifrename ] && [ -r /etc/iftab ]; then

 echo -n "Remapping network interface name: "
 ifrename -p
 echo "done."


This script remaps interfaces based on their MAC addresses, using information in a file called /etc/iftab, which probably doesn’t exist on your system.

To create and edit this file, type:

touch /etc/iftab
nano /etc/iftab

…and in the nano editor enter:

 ethx mac xx:xx:xx:xx:xx:xx

…except with ethx replaced with whatever you really want to call the interface (e.g. eth2), and with the MAC address of your actual card (which you noted earlier) entered in place of the string of xx’s.

Save this new file as /etc/iftab and exit nano.

At this point it may be wise to reboot the system and, after rebooting, repeat the ifconfig step above in order to confirm (a) that the rt2500.ko module is loading automatically on boot and (b) that it is being remapped to your chosen device name.

Assuming everything is still going according to plan, if you have any problem after this, you’ll know its to do with your interface or IP routing configurations and not with the driver module itself.

Configuring the interface

OK. Now you’ve told the machine what driver to use with your rt2500 card. But you haven’t told it exactly what you want to do with it.

The final two steps in bringing up the card are (1) to tell the machine a little more about what kind of wireless network and node you want to run (e.g. channel number, encryption modes, access control etc) and (2) specify how you want ra0/ethx to behave (e.g. static or dynamic IP address?).

The first of these can be done in one of two places:

The rt2500 README file says that the rt2500 module, on loading, will attempt to configure itself by reading a file called


…and which looks something like this:


Further options and valid settings are documented in the rt2500 README file.

Alternatively, you can specify some of these settings in a new file that you need to make anyway, called /etc/sysconfig/network-scripts/ifcfg-ethx (or ifcfg-ra0, or whatever suits you…). Its not clear what happens if some of the setting appear in both places.

Handily, ifcfg-ethx is also the place where you specify most of the information concerning how the interface should behave. This file probably doesn’t exist yet. Type:

touch /etc/sysconfig/network-scripts/ifcfg-ethx
nano /etc/sysconfig/network-scripts/ifcfg-ethx 

..and then edit the file so that it looks something like this:

 KEY="s:ABCDE"    <- five or thirteen character shared secret string

…where you should replace the entry against the HWADDR tag with the MAC address of your card.

Note that the example ifcfg above is for a network architecture for a CC box in which it has three network cards:

 eth0 = internet gateway interface with a dynamically assigned IP address
 eth1 = ethernet card with static IP address and serving a a Cat5 wired intranet on subnet 
 eth2 = RT2500 with static IP address and serving as the wifi access point on subnet 

With this architecture, mobile wifi devices (e.g. laptops) can connect to the rest of the fixed wire or wifi intranet or internet. Note in particular that eth2 has a static IP address (in this case on a new subnet different from the subnet of either of the other two cards in the box.

If instead you want your new wifi interface to get its IP address assigned dynamically from an external wireless router that supports DHCP, replace the last three lines of the example above with the single line:


OK – nearly there. Only three more steps…. (1) telling the firewall and DNS servers about the card (2) telling the DHCP server whether to provide DHCP over the interface (3) telling samba about the interface Firewall and DNS Before you finally bring up the interface, it would be a good idea to tell cc-firewall that it exists.


nano /etc/firewall

..and edit the interface roles section as appropriate. The example below is again for the case where three NICs are installed. If the rt2500 card is the external link to the internet, I assume that there would be no entry in the WIFIF slot and the EXTIF entry would point to ethx or ra0 or whatever.

 # Interface roles

DNS Tell the DNS server to provide name resolution to your new subnet. Type:

nano /etc/dnsmasq.conf

and, in addition to any lines already reading ‘interface=xxxx’, add the new line:


Save the edited file and exit nano.
DHCP If you’re setting up the rt2500 as a wifi access point, you’ll probably want your CC box to dole out dynamic IP addresses to devices when they connect to it. Type:

nano /etc/dnsmasq/dhcp.conf

..and append the following lines:


These lines mostly specify the information that the DHCP server will pass to clients when they connect (netmask, gateway, wins server etc). The final line in this case instructs the DHCP server to hand out dynamic IP addresses from its subnet only in the range (ie no more than four connections) and that each lease lasts 12 hours. SAMBA If your CC box is running samba in order to make some of its disk storage space accessible under windows networking, then you need to also tell samba about your new interface and its subnet. Type:

nano /etc/samba/smb.conf

Edit the interfaces and allow hosts lines so that they read something like:

 interfaces = eth1 eth2
 allow hosts =,

Save the edited file and exit nano. Now type:


…to restart samba.

Bringing up the interface

That’s it. If you’ve done all the above it should, in theory, work. To power up your card type:

ifup eth2

or you can reboot your machine.

Either way, it should now be broadcasting its ESSID name on your chosen channel and either obtaining a dynamic IP address from your access point (provided you set the card to broadcast and receive on the same channel as your access point), or handing them out to your laptops. In theory, if all has gone well, you can also browse both the internet and the other parts of the intranet through your new connection.

If things don't work, or work only partially (e.g. you can see the card broadcasting its ESSID but can't get a DHCP assignement) try rebooting the machine several times. Kudzu may kick in along the way, which seems to be usually part of what's necessary to get things eventually working.

Routing Issues

I’m no IP routing expert. If you seem to have partial connectivity, it could be an IP routing problem. If you type:

route -n

…you’ll get the main routing table, which I never had to try and alter. When all three interfaces are up, mine looks like this, and it works:

 Kernel IP routing table
 Destination	Gateway	Genmask	    Flags Metric Ref    Use Iface   U     0      0        0 eth2
 w.x.y.0   U     0      0        0 eth0   U     0      0        0 eth1	w.x.y.z         UG    0      0        0 eth0

…where w.x.y.z is an IP address assigned dynamically by my cable router, and the gateway to the internet.

Security Issues

The above information sets your card up to operate using WEP encryption of transmitted packets, and a (short) shared secret for authentication. These aren’t necessarily maximally secure. Greater security of authentication can be achieved using the CC built in support for MAC address filtering, whereby only devices whose MAC address is on a white list can connect. Install the cc-wireless module for this, and check out the web configuration interface on https://yourbox:81.

The rt2500 itself supports stronger authentication and encryption technologies than either shared secret or WEP; I’ve not experimented with these. If you get this far, feel free to play with the relevant settings in ifcfg-ethx and the RT2500STA.dat files.

Removing the developer tools and kernel sources

(from clarkconnect newbie portal: Removing the developer tools

If your ClarkConnect box is accessible via the internet (HTTP, FTP, etc), it's highly advised that you uninstall the developer tools once you're done compiling. Since the command apt-get remove cc-devel doesn't actually remove anything, use the following procedure to remove the developer tools from your system.

1) Using the editor nano, create a script file on your ClarkConnect machine and then open it for editing in the nano editor:


touch ~/
nano ~/

2) Copy the code below into the nano editor, save the altered file to disk (CTRL-O), and then exit nano (CTRL-X)


echo -n "Removing the ClarkConnect developer tools "
apt-get remove -y cc-devel > /dev/null 2>&1 ; echo -n "."
rpm -e --nodeps autoconf > /dev/null 2>&1 ; echo -n "."
rpm -e --nodeps automake > /dev/null 2>&1 ; echo -n "."
rpm -e --nodeps binutils > /dev/null 2>&1 ; echo -n "."
rpm -e --nodeps bison > /dev/null 2>&1 ; echo -n "."
rpm -e --nodeps byacc > /dev/null 2>&1 echo -n "."
rpm -e --nodeps bzip2-devel > /dev/null 2>&1 ; echo -n "."
rpm -e --nodeps cpp > /dev/null 2>&1 ; echo -n "."
rpm -e --nodeps gcc > /dev/null 2>&1 ; echo -n "."
rpm -e --nodeps gcc-c++ > /dev/null 2>&1 ; echo -n "."
rpm -e --nodeps gcc-java > /dev/null 2>&1 ; echo -n "."
rpm -e --nodeps gettext > /dev/null 2>&1 ; echo -n "."
rpm -e --nodeps glibc-devel > /dev/null 2>&1 ; echo -n "."
rpm -e --nodeps glibc-kernheaders > /dev/null 2>&1 ; echo -n "."
rpm -e --nodeps gmp > /dev/null 2>&1 ; echo -n "."
rpm -e --nodeps krb5-devel > /dev/null 2>&1 ; echo -n "."
rpm -e --nodeps libgcj > /dev/null 2>&1 ; echo -n "."
rpm -e --nodeps libgcj-devel > /dev/null 2>&1 ; echo -n "."
rpm -e --nodeps libstdc++-devel > /dev/null 2>&1 ; echo -n ""
rpm -e --nodeps libtool > /dev/null 2>&1 ; echo -n "."
rpm -e --nodeps m4 > /dev/null 2>&1 ; echo -n "."
rpm -e --nodeps make > /dev/null 2>&1 ; echo -n "."
rpm -e --nodeps ncurses-devel > /dev/null 2>&1 ; echo -n "."
rpm -e --nodeps openssl-devel > /dev/null 2>&1 ; echo -n "."
rpm -e --nodeps pam-devel > /dev/null 2>&1 ; echo -n "."
rpm -e --nodeps patch > /dev/null 2>&1 ; echo -n "."
rpm -e --nodeps python > /dev/null 2>&1 ; echo -n "."
rpm -e --nodeps rpm-build > /dev/null 2>&1 ; echo -n "."
rpm -e --nodeps zlib-devel > /dev/null 2>&1 ; echo -n "."
rpm -e --nodeps kernel-source > /dev/null 2>&1 ; echo -n "."
rpm -e --nodeps perl-CPAN > /dev/null 2>&1 ; echo -n "."
apt-get autoclean > /dev/null 2>&1 ; echo -n "."
apt-get clean > /dev/null 2>&1 ; echo -n "."
echo -e '\E[32;40m' Complete ; tput sgr0 ; echo ""

3) Make the script owned and executable by root, run it, and then remove it from your machine.


cd ~
chmod 0700
rm -f

Removing the kernel sources Code:

apt-get clean
apt-get remove kernel-source

GNU Free Documentation License

GNU Free Documentation License Version 1.2, November 2002 Copyright (C) 2000,2001,2002 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.

0. PREAMBLE The purpose of this License is to make a manual, textbook, or other functional and useful document "free" in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modifications made by others.

This License is a kind of "copyleft", which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software.

We have designed this License in order to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference. 1. APPLICABILITY AND DEFINITIONS This License applies to any manual or other work, in any medium, that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. Such a notice grants a world-wide, royalty-free license, unlimited in duration, to use that work under the conditions stated herein. The "Document", below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as "you". You accept the license if you copy, modify or distribute the work in a way requiring permission under copyright law.

A "Modified Version" of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modifications and/or translated into another language.

A "Secondary Section" is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document's overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (Thus, if the Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them. The "Invariant Sections" are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License. If a section does not fit the above definition of Secondary then it is not allowed to be designated as Invariant. The Document may contain zero Invariant Sections. If the Document does not identify any Invariant Sections then there are none.

The "Cover Texts" are certain short passages of text that are listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says that the Document is released under this License. A Front-Cover Text may be at most 5 words, and a Back-Cover Text may be at most 25 words.

A "Transparent" copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public, that is suitable for revising the document straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters. A copy made in an otherwise Transparent file format whose markup, or absence of markup, has been arranged to thwart or discourage subsequent modification by readers is not Transparent. An image format is not Transparent if used for any substantial amount of text. A copy that is not "Transparent" is called "Opaque". Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input format, LaTeX input format, SGML or XML using a publicly available DTD, and standard-conforming simple HTML, PostScript or PDF designed for human modification. Examples of transparent image formats include PNG, XCF and JPG. Opaque formats include proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally available, and the machine-generated HTML, PostScript or PDF produced by some word processors for output purposes only.

The "Title Page" means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in formats which do not have any title page as such, "Title Page" means the text near the most prominent appearance of the work's title, preceding the beginning of the body of the text.

A section "Entitled XYZ" means a named subunit of the Document whose title either is precisely XYZ or contains XYZ in parentheses following text that translates XYZ in another language. (Here XYZ stands for a specific section name mentioned below, such as "Acknowledgements", "Dedications", "Endorsements", or "History".) To "Preserve the Title" of such a section when you modify the Document means that it remains a section "Entitled XYZ" according to this definition.

The Document may include Warranty Disclaimers next to the notice which states that this License applies to the Document. These Warranty Disclaimers are considered to be included by reference in this License, but only as regards disclaiming warranties: any other implication that these Warranty Disclaimers may have is void and has no effect on the meaning of this License.

2. VERBATIM COPYING You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this License. You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section 3.

You may also lend copies, under the same conditions stated above, and you may publicly display copies.

3. COPYING IN QUANTITY If you publish printed copies (or copies in media that commonly have printed covers) of the Document, numbering more than 100, and the Document's license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover must present the full title with all words of the title equally prominent and visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in other respects.

If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages. If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a computer-network location from which the general network-using public has access to download using public-standard network protocols a complete Transparent copy of the Document, free of added material. If you use the latter option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public.

It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document.

4. MODIFICATIONS You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modified Version under precisely this License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version:

A. Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission.

B. List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has fewer than five), unless they release you from this requirement.

C. State on the Title page the name of the publisher of the Modified Version, as the publisher.

D. Preserve all the copyright notices of the Document.

E. Add an appropriate copyright notice for your modifications adjacent to the other copyright notices.

F. Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified Version under the terms of this License, in the form shown in the Addendum below.

G. Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document's license notice.

H. Include an unaltered copy of this License.

I. Preserve the section Entitled "History", Preserve its Title, and add to it an item stating at least the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If there is no section Entitled "History" in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence.

J. Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions it was based on. These may be placed in the "History" section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission.

K. For any section Entitled "Acknowledgements" or "Dedications", Preserve the Title of the section, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein.

L. Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles.

M. Delete any section Entitled "Endorsements". Such a section may not be included in the Modified Version.

N. Do not retitle any existing section to be Entitled "Endorsements" or to conflict in title with any Invariant Section.

O. Preserve any Warranty Disclaimers. If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the Modified Version's license notice. These titles must be distinct from any other section titles.

You may add a section Entitled "Endorsements", provided it contains nothing but endorsements of your Modified Version by various parties--for example, statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard.

You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any one entity. If the Document already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher that added the old one. The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version.

5. COMBINING DOCUMENTS You may combine the Document with other documents released under this License, under the terms defined in section 4 above for modified versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant Sections of your combined work in its license notice, and that you preserve all their Warranty Disclaimers. The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of the original author or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work.

In the combination, you must combine any sections Entitled "History" in the various original documents, forming one section Entitled "History"; likewise combine any sections Entitled "Acknowledgements", and any sections Entitled "Dedications". You must delete all sections Entitled "Endorsements".

6. COLLECTIONS OF DOCUMENTS You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects.

You may extract a single document from such a collection, and distribute it individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document.

7. AGGREGATION WITH INDEPENDENT WORKS A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage or distribution medium, is called an "aggregate" if the copyright resulting from the compilation is not used to limit the legal rights of the compilation's users beyond what the individual works permit. When the Document is included in an aggregate, this License does not apply to the other works in the aggregate which are not themselves derivative works of the Document. If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one half of the entire aggregate, the Document's Cover Texts may be placed on covers that bracket the Document within the aggregate, or the electronic equivalent of covers if the Document is in electronic form. Otherwise they must appear on printed covers that bracket the whole aggregate.

8. TRANSLATION Translation is considered a kind of modification, so you may distribute translations of the Document under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections. You may include a translation of this License, and all the license notices in the Document, and any Warranty Disclaimers, provided that you also include the original English version of this License and the original versions of those notices and disclaimers. In case of a disagreement between the translation and the original version of this License or a notice or disclaimer, the original version will prevail.

If a section in the Document is Entitled "Acknowledgements", "Dedications", or "History", the requirement (section 4) to Preserve its Title (section 1) will typically require changing the actual title.

9. TERMINATION You may not copy, modify, sublicense, or distribute the Document except as expressly provided for under this License. Any other attempt to copy, modify, sublicense or distribute the Document is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.

10. FUTURE REVISIONS OF THIS LICENSE The Free Software Foundation may publish new, revised versions of the GNU Free Documentation License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. See

Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of this License "or any later version" applies to it, you have the option of following the terms and conditions either of that specified version or of any later version that has been published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation.

ADDENDUM: How to use this License for your documents To use this License in a document you have written, include a copy of the License in the document and put the following copyright and license notices just after the title page:

Copyright (c) YEAR YOUR NAME. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License".

If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, replace the "with...Texts." line with this: with the Invariant Sections being LIST THEIR TITLES, with the Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.

If you have Invariant Sections without Cover Texts, or some other combination of the three, merge those two alternatives to suit the situation.

If your document contains nontrivial examples of program code, we recommend releasing these examples in parallel under your choice of free software license, such as the GNU General Public License, to permit their use in free software.

Retrieved from ""

This page has been accessed 27,603 times. This page was last modified 18:20, 12 September 2008 by Jeremy Rogers. Content is available under GNU Free Documentation License 1.2.

[Main Page]
Main Page
Community portal
Current events
Recent changes
Random page

Edit this page
Discuss this page
Page history
What links here
Related changes

Special pages
Bug reports