Conexant/Rockwell modem HOWTO Imran Ghory 2001-08-01 Revision History Revision 1.3 2002-03-12 Revised by: ig Updated to deal with new HCF driver. Revision 1.2 2002-02-21 Revised by: ig Updated to deal with new HSF driver and release date for HCF driver. Revision 1.0 2001-09-09 Revised by: ig Added entries to the FAQ, corrected grammatical errors, and update a URL. Revision 0.9 2001-08-01 Revised by: ig Initial release. A guide to using Conexant and Rockwell chipset based Software modems under Linux. This document can be freely distributed. It's released under the GNU FDL License. ------------------------------------------------------------------------------- Table of Contents 1. Introduction 1.1. Purpose_of_the_howto 1.2. About_the_howto 1.3. Feedback 1.4. License 1.5. Acknowledgments 1.6. Getting_Help 2. Quick_Start_guide 2.1. Quick_Starting_with_an_HSF_modem 2.2. Quick_Starting_with_an_HCF_modem 3. Identifying_your_modem_type 4. HCF_chipset_based_modems 4.1. History 4.2. Miscellaneous_information 5. HSF 5.1. History 5.2. Kernel_2.2.14_-_18 5.3. Kernel_2.4.* 5.4. Troubleshooting_FAQ A. License A.1. GNU_Free_Documentation_License 1. Introduction 1.1. Purpose of the howto If you've got a Rockwell or Conexant chipset based modem and you can't seem to get the modem to work with Linux, then you've come to the right place. Chances are that you've got a Software modem (also known as a "winmodem") and you'll need a driver to get the modem working under Linux. If you've got a Software modem whose chipset is not made by Conexant or Rockwell then you should see the linmodem_howto. Note that this guide has no information about using Conexant/Rockwell modems for operating systems other then Linux except for the following: There are no known drivers for FreeBSD or BeOS, Windows drivers can be obtained from Conexant. ------------------------------------------------------------------------------- 1.2. About the howto This HOWTO originally started out as a website about installing Conexant HSF modems under linux, but after several months of being online the number of hits on the website was rapidly growing (100 hits/day at time of writing this HOWTO) and so were the number of requests for information about Rockwell/Conexant modems that were being posted to the linmodem mailing list, usenet and various web based forums. This lead me to decide that the information needed another distribution medium which would be more accessible to users. The result of this was this HOWTO which has expanded to include a far larger range of information then the original website had, in order to cover all the questions being asked on the internet. At the same time as the increase in demand for information about Rockwell/ Conexant modems under linux a number of non-english webpages appeared explaining how to setup the drivers in languages as diverse as Portuguese and Japanese, these webpages often lacked all the current information which was available making it harder for users to get their modems to work. I decided to release this HOWTO under the GNU Free Documentation License, so that native speakers of other language can translate this document into their own language and redistribute it freely, thus ensuring that all users get all the information regardless of what language they speak. If you're interested in making a translation of this HOWTO please contact me. The HOWTO assumes a basic knowledge of Linux, you should be familiar with the basics of how to use a console/terminal, how to use common commands like less and be familiar with a text editor.When the howto needs you to type something in at the console, the console prompt will look like this: '[user@localhost]$' Some parts of the howto rely upon a greater knowledge of Linux, but those section will mainly apply if you have a non-standard Linux distribution. ------------------------------------------------------------------------------- 1.3. Feedback If you have any feedback on how I can improve this HOWTO or are interested in translating this HOWTO into another language please contact me via email at ImranG@btinternet.com(if you don't get a reply within a week resend the message to imran@bits.bris.ac.uk). If you need some help in getting your modem to work, rather then contacting me for help directly see the Getting_Help_section as you are more likely to be able to get a faster answer from the places indicated then if you email me direct. ------------------------------------------------------------------------------- 1.4. License Copyright (c) 2001,2002 Imran Ghory Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with the Invariant Sections being the Introduction chapter, with no Front-Cover Texts, and with no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License". ------------------------------------------------------------------------------- 1.5. Acknowledgments Thanks to: * Olitec for distributing and Conexant for producing the original HSF driver * Marc Boucher for writing a wrapper for 2.4.* kernels * Denis Havlik for bringing the Olitec driver to the attention of the rest of the Linmodem community * Thomas Iversen for mirroring the drivers ------------------------------------------------------------------------------- 1.6. Getting Help If after following this HOWTO you still can't get your modem to work and you haven't already done so, check the troubleshooting section at the end of this HOWTO as it covers the most common problems. If you are still stuck then there are three main places where you can get help, Linmodem mailing list The Linmodem mailing list is the main place on the internet for discussion of the use of Software modems under Linux. If someone else has had the same problem as you chances are that someone on the Linmodem mailing list knows about it. To join the mailing list send a blank email to discuss-subscribe@linmodems.org, the mailing lists homepage is at www.linmodems.org. SoftModems IRC channel If you want to talk to someone real time your best bet is the #SoftModems channel on the OpenProject's IRC network. See www.openprojects.org for details or connect to eu.opirc.nu on port 6667. Newsgroups The newsgroups comp.os.linux.hardware and comp.os.linux.setup often have people familiar with software modems. If you speak Italian the newsgroup it.comp.os.linux.iniziare has people familiar with Conexant/Rockwell neewsgroups. Remember when asking for help to include your modems Device ID, Vendor ID and any error message you got. ------------------------------------------------------------------------------- 2. Quick Start guide This section tries to get you up and running as soon as possible, if you can follow the steps given in this section and they work for you, you can ignore the rest of this howto. This section is updated more often then the rest of the HOWTO so will contain the most up to date information. First you need to find out if your modem is an HSF or HCF modem. You can find out from your modem by looking at it's Windows drivers or looking at the label on it's chipset, or alternatively you can download the ListModem utility and run it to get the information. Drivers are available for both types, but the HSF driver is further into development then the HCF driver so is likely to be more advanced for now. Expect the HCF driver to come out of beta sometime mid- year(2002). See the following appropriate sections for quick starting with HSF and HCF modems. ------------------------------------------------------------------------------- 2.1. Quick Starting with an HSF modem 1. Download the driver from http://www.mbsi.ca/hsflinux/, the following instruction are for the Binary RPM version which I recommend you use. 2. Load up a terminal (or go to a console), change to the root user and enter the directory you downloaded the driver to and use the command "rpm -i" followed by the name of the driver. For instance if it is called hsflinmodem-4.06.06.02mbsibeta02012000-1.i586.rpm you would enter, [user@localhost]$rpm -i hsflinmodem-4.06.06.02mbsibeta02012000-1.i586.rpm 3. Run the program hsfconfig and just follow the on-screen instructions and it should automatically detect your modem and install the driver. If you have any problems consult the documentation that comes with the driver. You will now be able to setup your internet connection software, you may need to tell it that your modem can be found at /dev/modem. If your internet connection software can't access it you may need to change the permissions on it. [Technical note: If you have a modem with device ID 2005, then you will need to choose the option to manually configure it before it will work] If the above steps don't work for you or the above mentioned driver doesn't work with your system (for instance if you have an SMP machine) then read the rest of the howto which explains how to use the older driver in greater detail. ------------------------------------------------------------------------------- 2.2. Quick Starting with an HCF modem 1. Download the driver from http://www.mbsi.ca/hcflinux/, the following instruction are for the Binary RPM driver which is the easiest to install, if you want to install it using another method consult the README file. 2. Load up a terminal (or go to a console), change to the root user and enter the directory you downloaded the driver to and use the command "rpm -i" followed by the name of the driver. For instance if it is called hcflinmodem-0.9mbsibeta02030801-1.i586.rpm you would enter, [user@localhost]$rpm -i hcflinmodem-0.9mbsibeta02030801-1.i586.rpm 3. Run the program hcfconfig and just follow the on-screen instructions and it should automatically detect your modem and install the driver. If you have any problems consult the documentation that comes with the driver. You will now be able to setup your internet connection software, you may need to tell it that your modem can be found at /dev/modem. If your internet connection software can't access it you may need to change the permissions on it. [Technical note: If you have an older modem, i.e one with the Rockwell brand name rather then Conexant then you will not be able to use this driver at present. You will also not be able to use modems which use SmartDAA. See http:/ /www.mbsi.ca/hcflinux/latest/BUGS.txt for updates.] ------------------------------------------------------------------------------- 3. Identifying your modem type The first task you will need to do is to identify whether your modem's chipset is HCF or HSF. Unfortunately the traditional way of doing this (by using /proc/ pci, lspci or KDE's control center) won't work for us here due to errors in the pci.ids file which can cause a misidentification of the modem. There are three main ways which you can use to identify your modem's chipset: 1. If you've got your modem working under Windows then you can identify your chipset by downloading and running Conexant's_ListModem_Application. When you run it, the program will give the information we want under "MODEM TYPE". 2. If you've opened your computer up chances are that the modem's chipset will have either the letters "HSF" or "HCF" printed on it. 3. You can identify your type of modem from it's device ID and vendor ID, the easiest way get this information is from the command lspci -n (or less / proc/pci on older Linux distributions) this command tells you all of the Vendor IDs and Devices IDs for all of the PCI cards in your machine. You will be able to identify your modems' IDs as it will have a vendor ID of either 14F1 (Conexant) or 127A (Rockwell). Ignore any information that the lspci command tells you about your modem being a HSF or HCF as it could be wrong. The information is often presented in the form VVVV:DDDD where VVVV is the vendor ID and DDDD is the device ID, for instance if it listed 127a:2005 it would mean the that the Vendor ID is 127a and device ID is 2005. If your modem is a HCF modem it will have one of the following Device IDs: 1033 / 1034 / 1035 / 1036 / 10b3 / 10b4 / 10b5 / 10b6 / 1003 / 1004 / 1005 / 1023 / 1024 / 1025 / 1f10 / 1f11 / 1f14 / 1f15 If your modem is a SmartHCF modem it will have one of the following Device IDs: 1052 / 1053 / 1054 / 1055 / 1056 / 1057 / 1058 / 1059 / 1063 / 1064 / 1065 / 1066 If your modem is a HSF modem it will have one of the following Device IDs: 2013 / 2014 / 2015 / 2016 / 2003 / 2004 / 2005 / 2006 / 2f10 / 2f12 / 2f00 If your modem is a SmartHSF modem it will have one of the following Device IDs: 2043 / 2044 / 2045 / 2046 / 2053 / 2054 / 2055 / 2056 If you have a HCF or SmartHCF modem goto to the HCF_section, if you have a HSF or SmartHSF modem go the to the HSF_section. ------------------------------------------------------------------------------- 4. HCF chipset based modems 4.1. History Unfortunately at the present time there is no HCF modem driver for linux. Conexant have indicated in section 11 of their FAQ (http://www.conexant.com:80/ cnxt/customer/md_faqs.htm) that they are currently developing one. Several people have reported that they have got a HCF modem (in particular chipsets with the device ID of 1025) to work under Linux by using the HSF driver, however little firm information is known about this. If you successfully manage to use an HCF modem under linux please contact me to tell me about it. One person has reported that if you get the "No Dialtone" error when trying to use a HSF driver with a HCF modem you can correct it by using the AT command "AT S7=45 S0=0 L1 V1 X4 &c1 E1 Q0". ------------------------------------------------------------------------------- 4.2. Miscellaneous information If you wish to embark on writing your own driver you might find the following files useful, Information on how to edit the INF file http://users.freenet.am/~hcfconf/advdocs/country.zip Modem command guide http://users.freenet.am/~hcfconf/advdocs/100498C.zip Designers notes and specifications http://www.unitronic.de/Hersteller/conexant/Modem.htm ------------------------------------------------------------------------------- 5. HSF 5.1. History A HSF driver first appeared out of the blue in mid-2000 when Olitec released unto the world a binary only driver for their Olitec PCI modem for 2.2.14 kernel, it wasn't long before someone realized that the Olitec modem was based on the Rockwell/Conexant HSF Chipset. Inquiries to Olitec revealed that the driver should work with any HSF chipset as there was nothing in the driver that was specific to the Olitec modems. Many people tried to get the driver to work with non-Olitec modem unfortunately without success, however a few months later and after many hours of work by many people trying a variety of tricks to get the driver to work, several people managed to stumble across the solution. It was a simple one line change to file which solved the problem and the world was left with a working HSF driver, at the time it only worked on 2.2.14 Kernels and Olitec had refused to release the source code to let others try to get it to work with other kernels. A few months later Olitec released the driver for 2.2.16 and 2.2.17 kernels, this kept the HSF winmodem community satisfied until we came to the day when the 2.4 kernel was released. None of the previous drivers appeared to work with the 2.4 kernel and this caused problems for all those who wanted to upgrade and also for the large number of new users who were using 2.4.* kernel based distributions such as Mandrake 8 and RedHat 7.1. Not a word had been heard out of Olitec since the 2.4 kernel was released, but Conexant had announced that they intended to develop a Linux driver. After many months of waiting for a 2.4.* driver Marc Boucher decided to something about it and wrote a wrapper which allowed an old version of the driver to be used with 2.4.* kernels. That's where we are now, Marc's wrapper is still in experimental development stage but it works and many people are using it to connect to the internet under Linux. From the history you'll understand why the next section has to be split into two sections one for 2.2.14 - 2.2.18 kernels and one for 2.4.* kernels. If you don't know what kernel version you have you can find out by using the 'uname - r' command at the console window before proceeding to the appropriate section of this HOWTO. ------------------------------------------------------------------------------- 5.2. Kernel 2.2.14 - 18 5.2.1. Requirements Having either a 2.2.14, 2.2.16 or 2.2.17 kernel. It has been reported that the driver for 2.2.17 kernels also works with 2.2.18 kernels. ------------------------------------------------------------------------------- 5.2.2. Getting IDs To get the modem to work you'll need to get the Vendor ID and Device ID. The easiest way to do this is to use the command "less /proc/pci" and scroll until you find the PCI card which has a vendor ID of either 14F1 (Conexant) or 127A (Rockwell) and note the Device ID. You'll need to make an %HSFModem% line. Copy down the following line somewhere, %HSFModem% = ModemX, PCI\VEN_XXXX&DEV_YYYY&SUBSYS_YYYYXXXX Replacing the XXXX's with your Vendor ID and the YYYY's with your Device ID, so if your Vendor ID is 127A and Device ID is 2015 your line would be, %HSFModem% = ModemX, PCI\VEN_127A&DEV_2015&SUBSYS_2015127A You'll need to use this line later on to allow the driver to detect your modem, the next steps you need to take vary slightly depending on what kernel you have so you'll need to refer to the appropriate section depending on whether your kernel version is 2.2.14, 2.2.16 or 2.2.17 ------------------------------------------------------------------------------- 5.2.3. If you have a 2.2.14 kernel Installing a HSF driver on a 2.2.14 kernel 1. Download the file HSF_V1.01.02_K2.2.14-5.0.tar, it can be obtained from Olitec's_site or the mirror. 2. Copy it to your home directory 3. In a console window change to your home directory [user@localhost]$cd ~ 4. Decompress the file [user@localhost]$tar xzvf HSF_V1.01.02_K2.2.14-5.0.tar 5. Enter into the drivers directory [user@localhost]$cd pci_56k_v2 6. Load up the lin_hsf.inf file in your favorite text editor, under the section [generic] you'll see a few of lines like "%HSFModem% = ModemX, PCI\VEN_127A&DEV_1025&SUBSYS_1025127A" under theses lines add your own %HSFModem% line which you made earlier. 7. Switch to root [user@localhost]$su 8. Run the ins_all script to install the driver [user@localhost]$./ins_all You will now be able to access the internet by telling your dial-up software that your modem is located at /dev/modem. The ins_all will only temporarily load the modem driver and the modem driver will be removed when you reboot. So if you re boot you will need to run the ./ ins_all program to reload the driver, if you reboot on a regular basis you may want to set the . /ins_all command to automatically run every time your computer loads up. ------------------------------------------------------------------------------- 5.2.4. If you have a 2.2.16 kernel Installing a HSF driver on a 2.2.16 kernel 1. Download the file PCI_56K_V2_K2.2.16.tar.gz, it can be obtained from Olitec's_site or the Mirror. 2. Copy it to your home directory 3. In a console window change to your home directory [user@localhost]$cd ~ 4. Decompress the file [user@localhost]$tar xzvf PCI_56K_V2_K2.2.16.tar.gz 5. Enter into the drivers directory [user@localhost]$cd pci_56k_v2_k2.2.16 6. Load up the lin_hsf.inf file in your favorite text editor, under the section [generic] you'll see a few of lines like "%HSFModem% = ModemX, PCI\VEN_127A&DEV_1025&SUBSYS_1025127A" under theses lines add your own %HSFModem% line which you made earlier. 7. Switch to root [user@localhost]$su 8. Run the ins_all script to install the driver [user@localhost]$./ins_all You will now be able to access the internet by telling your dial-up software that your modem is located at /dev/modem. The ins_all will only temporarily load the modem driver and the modem driver will be removed when you reboot. So if you reboot you will need to run the ./ ins_all program to reload the driver, if you reboot on a regular basis you may want to set the ./ins_all command to automatically run every time your computer loads up. ------------------------------------------------------------------------------- 5.2.5. If you have a 2.2.17 or 2.2.18 kernel Installing a HSF driver on a 2.2.17 or 2.2.18 kernel 1. Download the file PCI_56K_V2_K2.2.17.tar.gz , it can be obtained from Olitec's_site or the Mirror. 2. Copy it to your home directory 3. In a console window change to your home directory [user@localhost]$cd ~ 4. Decompress the file [user@localhost]$tar xzvf PCI_56K_V2_K2.2.17.tar.gz 5. Enter into the drivers directory [user@localhost]$cd pci_56k_v2_k2.2.17 6. Load up the lin_hsf.inf file in your favorite text editor, under the section [generic] you'll see a few of lines like "%HSFModem% = ModemX, PCI\VEN_127A&DEV_1025&SUBSYS_1025127A" under theses lines add your own %HSFModem% line which you made earlier. 7. Switch to root [user@localhost]$su 8. Run the ins_all script to install the driver [user@localhost]$./ins_all You will now be able to access the internet by telling your dial-up software that your modem is located at /dev/modem. The ins_all will only temporarily load the modem driver and the modem driver will be removed when you reboot. So if you reboot you will need to run the ./ ins_all program to reload the driver, if you reboot on a regular basis you may want to set the ./ins_all command to automatically run every time your computer loads up. ------------------------------------------------------------------------------- 5.3. Kernel 2.4.* 5.3.1. Requirements * You need a 2.4.* kernel which does not have SMP support. * You will also need to have your kernel source available, if you don't have them installed already you can probably find them on your distributions CD. * At least version 2.4.0 of ppp (you can find what version of ppp you have installed by using the command pppd --version) To get the modem working under a 2.4.* kernel you'll need to use the driver intended for 2.2.17 kernels alongside Marc Boucher's hsfcompat wrapper program which lets the driver work with 2.4.* kernels. At the time of writing the hsfcompat driver is on version 1.0d and is still experimental and may cause problem with your system. However I haven't seen anyone have any problem from using the wrapper. For the latest details see hsfcompat's_homepage. Files you'll need to download: hsfcompat_24-1.0d.tar.gz Main download site: http://www.mbsi.ca/hsfcompat/hsfcompat_24-1.0d.tar.gz PCI_56K_V2_K2.2.17.tar.gz Main download site: http://www.olitec.com/pub/PCI_56K_V2_K2.2.17.tar.gz Mirrored at: ftp://ftp.dina.kvl.dk/pub/Staff/Thomas.S.Iversen/linmodems_drivers/ olitec/PCI_56K_V2_K2.2.17.tar.gz ------------------------------------------------------------------------------- 5.3.2. Installing 1. Copy the hsfcompat_24-1.0d.tar.gz file to your home directory 2. In a console window change to your home directory [user@localhost]$cd ~ 3. Extract the hcfcompat program by using: [user@localhost]$tar xzvf hsfcompat_24-1.0d.tar.gz 4. Copy the PCI_56K_V2_K2.2.17.tar.gz file into the hsfcompat_24-1.0d directory. 5. Extract the driver by using: [user@localhost]$tar xzvf PCI_56K_V2_K2.2.17.tar.gz 6. Load up the file Makefile (Found in the hsfcompat_24-1.0d directory) in a text editor and scroll down to the line which reads SBINDIR=/usr/sbin and replace /usr/sbin with the location of your system bin directory, then scroll down to the line which reads KERNELSRC=/usr/src/linux and replace / usr/src/linux with the location of your kernel source files. 7. Switch to superuser (root) by using: [user@localhost]$su 8. In the hsfcompat_24-1.0d directory compile hsfcompat by using: [user@localhost]$ make 9. Install the driver by running: [user@localhost]$make install 10. Follow the on-screen instruction which explain how to load the driver into memory and how to have this done automatically. ------------------------------------------------------------------------------- 5.4. Troubleshooting FAQ 5.4.1. When_running_./ins_all_I_get_a_kernel_mismatch_error_? 5.4.2. When_I_try_to_run_./ins_all_I_get_the_error_"bash:_./ins_all_No_such file_or_directory." 5.4.3. When_installing_the_driver_when_it_tries_to_load_myserial.o_I_get_a segmentation_fault_? 5.4.4. When_trying_to_dial_my_ISP_I_get_"No_Carrier"_error_? 5.4.5. When_running_./ins_alI_get_the_error_"No_matching_INF_file_is_found for_SoftK56_PCI_device"_? 5.4.6. On_my_Laptop_the_driver_seemed_to_install_fine_but_I_can't_access_my modem_on_/dev/modem_? 5.4.1. When running ./ins_all I get a kernel mismatch error ? This means that the driver thinks that you don't have the appropriate kernel version, if you have a variant of the kernel (such as the one that has non- standard name) then you can still get the driver to work by loading up the file ins_all in a text editor and replacing all of the 'insmod -m' commands with 'insmod -f -m'. 5.4.2. When I try to run ./ins_all I get the error "bash: ./ins_all No such file or directory." This error tends to be caused by the script being unable to find C Shell at the location /bin/csh. If you have C Shell installed in a different location then you should create a symbolic link which points to the correct location. If you don't have you'll need to install it. 5.4.3. When installing the driver when it tries to load myserial.o I get a segmentation fault ? This is caused by your computer trying to get Plug-and-Play to work with your modem. You can stop it doing this by going to your BIOS and setting an option which tells it not to do that. The settings name varies from BIOS to BIOS but is normally something like PnP OS. 5.4.4. When trying to dial my ISP I get "No Carrier" error ? It has been reported that making the following changes to your configuration will work: 1. Replace the command ATZ with ATZX3 2. Replace the command ATDT with ATX3DT 5.4.5. When running ./ins_alI get the error "No matching INF file is found for SoftK56 PCI device" ? This occurs when the driver can't find the correct %HSFModem% line in the lin_hsf.inf line, go back through the instructions and make sure that you didn't make a mistake when making or entering the %HSFModem% line. 5.4.6. On my Laptop the driver seemed to install fine but I can't access my modem on /dev/modem ? This is often caused by the modem's device number clashing with that of PCMCIA, you can check if this is the case by entering the command, [user@localhost]$ ls -l /dev/ | grep 254 You'll see the hsf0 device listed with the major number of 254, if any other device also has the major number of 254 it means there is a clash. You can fix this problem by loading up the ins_all file and change the line which reads "mknod /dev/cnxt c 254 64" to "mknod /dev/cnxt c 253 64". ------------------------------------------------------------------------------- A. License A.1. GNU Free Documentation License A.1.1. GNU Free Documentation License Copyright 2000 Free Software Foundation, Inc. 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. ------------------------------------------------------------------------------- A.1.1.1. 0. PREAMBLE The purpose of this License is to make a manual, textbook, or other written 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. ------------------------------------------------------------------------------- A.1.1.2. 1. APPLICABILITY AND DEFINITIONS This License applies to any manual or other work that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. The "Document", below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as "you". 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. (For example, 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. 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 "Transparent" copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public, whose contents can be viewed and edited directly and 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 has been designed to thwart or discourage subsequent modification by readers is not Transparent. 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 designed for human modification. Opaque formats include PostScript, PDF, 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 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.1.1.3. 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. ------------------------------------------------------------------------------- A.1.1.4. 3. COPYING IN QUANTITY If you publish printed copies 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 publicly-accessible computer-network location containing a complete Transparent copy of the Document, free of added material, which the general network-using public has access to download anonymously at no charge using public-standard network protocols. 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. ------------------------------------------------------------------------------- A.1.1.5. 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 less than five). * 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", and its title, and add to it an item stating at least the title, year, new authors, and publisher of the Modified_Versionas 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. In any section entitled "Acknowledgements" or "Dedications", preserve the section's title, 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 as "Endorsements" or to conflict in title with any Invariant_Section. 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. ------------------------------------------------------------------------------- A.1.1.6. 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. 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." ------------------------------------------------------------------------------- A.1.1.7. 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. ------------------------------------------------------------------------------- A.1.1.8. 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, does not as a whole count as a Modified_Version of the Document, provided no compilation copyright is claimed for the compilation. Such a compilation is called an "aggregate", and this License does not apply to the other self-contained works thus compiled with the Document , on account of their being thus compiled, if they 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 quarter of the entire aggregate, the Document's Cover Texts may be placed on covers that surround only the Document within the aggregate. Otherwise they must appear on covers around the whole aggregate. ------------------------------------------------------------------------------- A.1.1.9. 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 provided that you also include the original English version of this License. In case of a disagreement between the translation and the original English version of this License, the original English version will prevail. ------------------------------------------------------------------------------- A.1.1.10. 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. ------------------------------------------------------------------------------- A.1.1.11. 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 http://www.gnu.org/copyleft/. 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. ------------------------------------------------------------------------------- A.1.1.12. Addendum 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 © 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.1 or any later version published by the Free Software Foundation; with the Invariant_Sections being LIST THEIR TITLES, with the Front-Cover Texts being LIST, and with the Back-Cover_Texts being LIST. A copy of the license is included in the section entitled "GNU Free Documentation License". If you have no Invariant_Sections, write "with no Invariant Sections" instead of saying which ones are invariant. If you have no Front-Cover_Texts, write "no Front-Cover Texts" instead of "Front-Cover Texts being LIST"; likewise for Back-Cover_Texts. 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.