Conexant/Rockwell modem HOWTO


Imran Ghory

<ImranG@btinternet.com>
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.