LDP/LDP/howto/docbook/PCTel-MicroModem-Config.sgml

1193 lines
39 KiB
Plaintext
Raw Normal View History

2001-11-27 14:13:57 +00:00
<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook V4.1//EN">
<article id="index">
<!-- Header -->
<articleinfo>
<title>PCTel HSP MicroModem Configuration mini-HOWTO</title><author>
<firstname>
Sayamindu</firstname> <surname>Dasgupta</surname> <affiliation>
<address> <email>unmadindu@Softhome.net</email> </address>
</affiliation> </author> <author> <firstname>Jan</firstname> <surname>Stifter</surname>
<affiliation>
<address> <email>j.stifter@medres.ch</email> </address>
</affiliation> </author>
<revhistory>
<revision>
<revnumber>1.00</revnumber>
<date>Nov 26th 2001</date>
<revremark>First Release</revremark>
</revision>
</revhistory>
<abstract>
<para>The purpose of this document is to guide you to make
your PCTel HSP MicroModem work in linux.</para>
</abstract>
</articleinfo>
<!-- Section1: intro -->
<sect1 id="intro">
<title>Introduction</title>
<!-- Section2: copyright -->
<sect2 id="copyright">
<title>Copyright Information</title>
<para>
This document is copyrighted (c) 2001 Jan Stifter and (c) 2001 Sayamindu Dasgupta and is
distributed under the terms of the Linux Documentation Project
(LDP) license, stated below.
</para>
<para>
Unless otherwise stated, Linux HOWTO documents are
copyrighted by their respective authors. Linux HOWTO documents may
be reproduced and distributed in whole or in part, in any medium
physical or electronic, as long as this copyright notice is
retained on all copies. Commercial redistribution is allowed and
encouraged; however, the author would like to be notified of any
such distributions.
</para>
<para>
All translations, derivative works, or aggregate works
incorporating any Linux HOWTO documents must be covered under this
copyright notice. That is, you may not produce a derivative work
from a HOWTO and impose additional restrictions on its
distribution. Exceptions to these rules may be granted under
certain conditions; please contact the Linux HOWTO coordinator at
the address given below.
</para>
<para>
In short, we wish to promote dissemination of this
information through as many channels as possible. However, we do
wish to retain copyright on the HOWTO documents, and would like to
be notified of any plans to redistribute the HOWTOs.
</para>
<para>
If you have any questions, please contact
<email>linux-howto@metalab.unc.edu</email>
</para>
</sect2>
<!-- Section2: disclaimer -->
<sect2 id="disclaimer">
<title>Disclaimer</title>
<para>The methods described in this document might damage your data or your PC or both.
The authors will not be responsible for any damage that might arise out of the use of this document.
Use this document <emphasis>ENTIRELY at your own risk. </emphasis></para>
<para>
All copyrights are held by their respective owners, unless
specifically noted otherwise. Use of a term in this document
should not be regarded as affecting the validity of any trademark
or service mark.
</para>
<para>
Naming of particular products or brands should not be seen
as endorsements.
</para>
<para>
You are strongly recommended to take a backup of your system
before major installation and backups at regular intervals.
</para>
</sect2>
<!-- Section2: newversions-->
<sect2 id="newversions">
<title>New Versions</title>
<para>
The latest version of this HOWTO will always be made available on
my home page, in a variety of formats:
</para>
<para>
<itemizedlist>
<listitem>
<para>
<ulink url="http://sayamindu.topcities.com/pctel.html">HTML</ulink>.
</para>
</listitem>
<listitem>
<para>
<ulink url="http://sayamindu.topcities.com/pctel.txt">plain text</ulink>.
</para>
</listitem>
<listitem>
<para>
<ulink url="http://sayamindu.topcities.com/pctel.pdf">PDF</ulink>.
</para>
</listitem>
<listitem>
<para>
<ulink url="http://sayamindu.topcities.com/pctel.rtf">RTF</ulink>.
</para>
</listitem>
<listitem>
<para>
<ulink url="http://sayamindu.topcities.com/pctel.tar.gz">compressed
html (multiple pages format)</ulink>.
</para>
</listitem>
<listitem>
<para>
<ulink url="http://sayamindu.topcities.com/pctel.sgml">SGML source</ulink>.
</para>
</listitem>
</itemizedlist>
</para>
</sect2>
<!-- Section2: credits -->
<sect2 id="credits">
<title>Credits</title>
<para> I am extremely grateful to the howtos@kcircle.com list members for their support, especially to <ulink url="http://geocities.com/usmbish/">USM Bish</ulink>.
</para><para>
The members of the discuss@linmodems.org list have been very helpful too, specially in the initial phase of the howto-writing.</para>
<para>
I am also extremely grateful to Phil Richard Burchill, Rajesh Fowkar, KV Pham and Andrew (akar)
for their valuable suggestions.
</para>
<para>
The sgml-stuff has been done with the help of the template written by Stein Gjoen, Gregory Leblanc and Greg Ferguson.
</para>
</sect2>
<!-- Section2: feedback -->
<sect2 id="feedback">
<title>Feedback</title>
<para>
If you have any comments, criticisms, ideas, additions, corrections, then please do mail them to <email>unmadindu@Softhome.net</email>. But for technical queries, we suggest that you ask at the discuss@linmodems.org mailing list.</para>
</sect2>
<sect2 id="translations">
<title>Translations</title>
<para>
<itemizedlist>
<listitem>
<para>
<ulink url="www.domsilverio.com.br/phptest/pctel/">Portuguese Translation</ulink>
by Rafael Cardoso
<email>rafamvc@yahoo.com.br</email>
</para>
</listitem>
</itemizedlist>
</para>
</sect2>
<sect2 id="conventions">
<title>Conventions used in this document</title>
<para>We have used a number of special formatting to indicate warning messages, commands, filenames, computer outputs etc.</para>
<para>
<variablelist>
<varlistentry>
<term>Bash commands</term>
<listitem>
<para><command> bash$ ls </command></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Warnings</term>
<listitem>
<para><emphasis>WARNING</emphasis></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Filename/Directory </term>
<listitem>
<para><filename>/usr/src/linux/</filename></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Applications</term>
<listitem>
<para><application>application</application></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Computer Output</term>
<listitem>
<para><computeroutput>no such file or directory</computeroutput></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Codes/scripts</term>
<listitem>
<para><programlisting>#! /bin/bash</programlisting></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Large Computer Outputs</term>
<listitem>
<para><screen>logfile begins</screen></para>
</listitem>
</varlistentry>
</variablelist>
</para>
</sect2>
</sect1>
<sect1 id="purpose">
<title>Purpose of the HOWTO</title>
<para>The purpose of this document is to guide you to make your PCTel HSP MicroModem work in linux.</para>
<para>First let me explain what is so "special" about these PCTel modems that made me write this guide.These modems fall in a special class of hardware, specifically made for M$-Windows systems, and have device
drivers which are specific for &nbsp;M$-Windows ...These modems are also called &nbsp;"Winmodems" and are
one of the most troublesome pieces of hardwares for Linux. Most of the winmodems do not work
with linux (the manufacturers use patented technologies and so drivers for these modems cannot be
developed as Open Source). For a few of these winmodems, drivers have been developed </para><para>The PCTel
modems belong to this category and fall under linmodems. </para>
<para>
NOTE: Though I am referring PCTel modems here, actually PCTel only manufactures the chips for these modems, so if have say, XXX modem and you get a </para><para><computeroutput>00:09.0 Communication controller: PCTel Inc HSP MicroModem 56 (rev 01)</computeroutput></para><para> when you issue the <command>bash$ lspci</command> command, then do not worry, you have what we call a PCTel linmodem.</para>
</sect1>
<!-- Section1: Where to get the drivers -->
<sect1 id="downloaddrivers">
<title>Where to get the drivers</title>
<para>Now let me come to the next obvious question, that is; Where are the drivers??</para>
<para>Well, if you are impatient, then go to </para>
<para><ulink url="http://www.medres.ch/~jstifter/linux/pctel.html">http://www.medres.ch/~jstifter/linux/pctel.html</ulink></para>
<para>But there are a number of drivers there, and you will definitely feel confused..so read on.</para>
</sect1>
<!-- Section1: right drivers -->
<sect1 id="rightdrivers">
<title>Choosing a suitable driver</title>
<para>
There are a number of drivers in <ulink url="http://www.medres.ch/~jstifter/linux/pctel.html">http://www.medres.ch/~jstifter/linux/pctel.html</ulink> for modems with PCTel chip sets. To know what driver to download, you will have to know what kernel version you are running. To do that you will have to issue the command </para>
<para><command>bash$
uname -r
</command></para>
<para>
and that will give the version of your kernel.</para><para>
If you have a 2.2.x kernel, you will have to use the pctel-2.2 drivers . For kernels between 2.4.0 and 2.4.6, you can use the pctel-2.4 driver and for kernel 2.4.7 and above, you can use the pctel-2.4.7 drivers.</para><para>
But I personally recommend that you use the pctel-0.8.6 driver (the latest version) which is a continuation of the drivers from PCTel with added configure support and some bug fixes.</para><para>
You may find some other drivers for PCTel based modems on the internet. See <link linkend="other-drivers">section 9.3 </link>for more information regarding these drivers </para>
<para>NOTE: You will find that Jan's site also contain a number of other old drivers. I recommend that you do not use them as they are very much outdated.
</para>
</sect1>
<!-- Section1: installation -->
<sect1 id="installation">
<title>Compiling and installing the drivers</title>
<para>The first requisite for installation is that you have a kernel source in <filename>/usr/src/linux/</filename> (see section <link linkend='kernelsrc'>7.6</link>) and it must be
configured, that is, you should have done a <command>bash$ make configure</command> and <command>bash$ make dep</command> on it.</para>
<para>While doing these make sure that you have the source for your running kernel...for example, if
you are running kernel 2.4.8 and if you have the source for kernel 2.4.9 in <filename>/usr/src/linux/</filename>,
then the drivers would not work.</para>
<para>Moreover, you must configure the kernel with isapnp and pnp support and see to the fact that you
don't have a smp/uniprocessor mismatch ( that is, running uniprocessor kernel but having a kernel
source with smp support in /usr/src/linux). Also, you will need a kernel
which supports loadable modules.</para>
<para>
And of course, you need to have gcc installed, check it by issuing the command <command>bash$ gcc -v </command>. If you do not get any errors, the everything is all right </para>
<sect2><title>Installing the 2.2x drivers.</title>
<para>Login as root.</para>
<para>Make sure that you have a 2.2.x kernel with the command <command>bash$ uname -r</command></para>
<para>Check whether the downloaded files are in your current directory with the </para>
<para><command>bash$ ls</command></para>
<para>command.
Then unpack the downloaded files with the command </para>
<para><command>bash$ tar -xzvf pctel-2.2.tar.gz</command></para>
<para>Once you have unpacked, you will be left with a <filename>~/pctel</filename> directory.</para>
<para>Move into that directory with the command</para>
<para><command>bash$ cd pctel/</command></para>
<para>There is an (<filename>install.sh</filename>) installation script that makes the job easier from now on.</para>
<para>Make this script executable with the command </para>
<para><command>bash$ chmod +x install.sh</command></para>
<para>Then, just run the script</para>
<para><command>bash$ ./install.sh</command></para>
<para>You will see a number of messages fly by as the appropriate device files/nodes are made in the /dev/
directory, the driver files are unpacked and then compiled and loaded into the memory.</para>
<para>Once the process is complete without any error messages (if you get any errors, proceed to the
<link linkend='trouble'>Troubleshooting</link> section), you will find that a new directory called <filename>lib/</filename> has been created under directory <filename>~/pctel/</filename>.
This <filename>~/pctel/lib/</filename> directory contains the drivers/modules that can be loaded into the kernel.</para>
<para>If you move into the <filename>~/pctel/lib/</filename> directory with </para>
<para><command>bash$ cd ~/pctel/lib/</command></para>
<para>and do a <command>bash$ ls</command>, you will find two files there, one called <application>pctel.o</application> and the other <application>ptserial.o</application></para>
<para>These are the two modules that are to be loaded to make the modem work.</para>
<para>To load the modules, you will have to issue the commands </para>
<para><command>bash$ insmod pctel.o</command></para>
<para><command>bash$ insmod ptserial.o</command></para>
<para>from the <filename>~/pctel/lib/</filename> directory.</para>
<para>(The install.sh script automatically does this, so you don't need to do the insmod part after running
the script, but once you reboot, you will have to load the modules by</para><para>
<command>bash$ cd</command> `your pctel directory`/lib/</para>
<para><command>bash$ insmod pctel.o</command></para>
<para><command>bash$ insmod ptserial.o </command>)</para>
</sect2>
<sect2><title>
Installing the pctel-2.4 and the pctel-2.4.7 drivers
</title>
<para>The 2.4 driver works for kernel 2.4.0 to kernel 2.4.6 and the 2.4.7 driver works for kernel 2.4.7
upwards. But the methods of installation for both are the same, and so I put the instructions under one
section.
Make sure that you have the appropriate kernel with the command <command>bash$ uname -r</command></para>
<para>.</para>
<para>Unpack the downloaded files with the commands</para>
<para><command>bash$ tar -xzvf `the filename`.tar.gz</command></para>
<para>You will be now left with a <filename>pctel-2.4</filename> or a <filename>pctel-2.4.7 </filename> directory..move into that with the command</para>
<para><command>bash$ cd pctel-2.4/</command><emphasis>(pctel-2.4.7/ if needed)</emphasis>;</para>
<para>Compile the drivers with the command </para>
<para><command>bash$ make</command></para>
<para>The next steps require you to be logged in as root.To do so use the command</para>
<para><command>bash$ su</command></para>
<para>If you do not get any error messages from the <command>bash$ make</command>, then install the drivers by the command</para>
<para><command>bash$ make install</command></para>
<para>Now you just have to load the drivers (which are in <filename>/lib/modules/`your kernel version`/misc/</filename>) with the commands</para>
<para><command>bash$ insmod pctel</command></para>
<para><command>bash$ insmod ptserial</command></para>
<para>(these can be issued from any directory as the <application>insmod</application> program will automatically find the drivers <application>pctel.o</application> and <application>ptserial.o</application> in
<filename>/lib/modules/`your kernel version`/misc/ </filename>) </para>
</sect2>
<sect2>
<title>Installing the pctel-0.8.6 driver</title>
<para>Make sure that you have kernel 2.4.0 or greater by the command</para>
<para><command>bash$ uname -r</command></para>
<para>Unpack the downloaded files with the commands</para>
<para><command>bash$ tar -xzvf 0.8.6.tar</command></para>
<para>Now you will have a pctel-0.8.6 directory</para>
<para>cd into that with the command</para>
<para><command>bash$ cd pctel-0.8.6/</command></para>
<para>Now comes the complicated part.</para>
<para>To proceed further you will have to know what chip set your modem has.See section <link linkend="identify"> 9.4 </link>for more information on this.</para>
<para>Once you have got the name of the chip set, just type one of the following commands (depending on the chip set)
</para>
<para>
If you have a PCT 789 chip set,
</para>
<para>
<command>bash$
./configure --with-hal=pct789</command>
</para>
<para>
If you have a CM8738 chip set,
</para>
<para><command>bash$
./configure -with-hal=cm8738</command>
</para>
<para>
If you have a chip set integrated with an Intel 810 chip set based motherboard from Intel,
</para>
<para> <command>bash$
./configure --with-hal=i810intel </command>
</para>
<para>
If you have a chip set integrated with an Intel 810 chip set based motherboard from SIS,
</para>
<para> <command>bash$
./configure --with-hal=i810sis </command>
</para>
<para>
If you have a chip set integrated with an VIA 686a chip set based motherboard ,
</para>
<para><command>bash$
./configure --with-hal=via686a </command>
</para>
<para>
The configure script will run and a number of messages will fly past.
Check for any error messages that may fly past.
When you have the prompt again, (and if you have not got any errors),
compile the drivers with the command
</para>
<para>
<command>bash$ make
</command>
</para>
<para>
Then if you do not get any error messages, install the drivers with the command
</para>
<para>
<command>bash$ make install</command>
</para><para>
(You will have to be logged in as root for performing the last step)
</para><para>
Then just load the drivers with the commands
</para>
<para>
<command>bash$ insmod pctel</command>
</para>
<para>
<command>bash$ insmod ptserial</command>
</para>
<para>
(these too, like in the case of the pctel-2.4x drivers, can be issued from any directory as the <application>insmod</application> program will automatically find
the drivers <application>pctel.o</application> and <application>ptserial.o</application> in <filename>/lib/modules/`your kernel version`/misc/ </filename>)
</para>
</sect2>
</sect1>
<!-- Section1: testing -->
<sect1 id="testing">
<title>Testing the drivers</title>
<para>
There is only one way to check whether the drivers are working or not. You will have to see if your
modem is recognized or not. The driver makes a node for your modem at <filename>/dev/ttyS15 </filename>, no matter
what com port it may be in in M$DOS/M$ Windows. <filename>/dev/ttyS15 </filename> is symlinked to <filename>/dev/modem </filename> and as
most programs search for a modem at <filename>/dev/modem </filename> first, you will not have to fiddle with the settings/configs of those programs. The
program that I use to test my modem in linux is minicom. If you have minicom installed, what you have to do is type
</para>
<para>
<command>bash$
minicom
</command>
</para>
<para>
in a shell prompt or in a terminal emulator window.
If everything is all right, you will see a <emphasis>Initializing modem</emphasis> message for a few seconds and then a
screen with a blinking cursor.
Just type in <command>bash$ ATZ</command> in that screen and hit the enter key.
If you see a <emphasis>OK</emphasis> message, then, congratulations, your modem is working in linux.
Type in <command>bash$ ATI 3</command> and hit enter and you will see a <emphasis>PCtel HSP56 MicroModem</emphasis> output.
If you get a error message, proceed to the troubleshooting section.
If everything is all right up to now, you can go ahead to configure your dialer software and connect to
the internet.
</para>
</sect1>
<!-- Section1: OT -->
<sect1 id="OT">
<title>A few other points that must be noted.</title>
<para>Here are a few more points you might find to be of interest/useful.</para>
<sect2>
<title>
Loading the modules at automatically
</title>
<para>
Well, if you have the pctel.o and ptserial.o files in <filename>/lib/modules/`your kernel version`/misc/ </filename> , you can just add these lines to your
<filename>/etc/modules.conf </filename> file
</para>
<programlisting>
# for pctel modem
alias char-major-62 ptserial
below ptserial pctel
# country code for pctel modem
options ptserial country_code=1
</programlisting>
<para>
Run
</para>
<para>
<command>bash$
depmod -a
</command>
</para>
<para>
after modifying your <filename>/etc/modules.conf </filename>.
</para>
<para>
In this case, running ppp would automatically load these modules.
You can also write up some shell-script and put them in your <filename>/usr/bin/ </filename> directory (I have a sample of such a script in the appendix
section)
</para>
</sect2>
<sect2>
<title>
Country codes
</title>
<para>
The <application>ptserial.o</application> driver also lets you specify the country code, though for most situations, the default of USA is all right.
If you still want to specify the country code, load the ptserial.o module with the command
</para>
<para>
<command>bash$
insmod ptserial country_code=x
</command>
</para>
<para>
(where x is the country code you want)
The list of country codes with the corresponding country names is listed below.
</para>
<para>
<programlisting>
country_code country name
1 USA
2 FRANCE
3 GERMANY
4 ITALY
5 SWEDEN
6 UK
7 JAPAN
8 AUSTRALIA
9 SPAIN
10 TAIWAN
11 SINGAPORE
12 KOREA
13 SWITZERLAND
14 NORWAY
15 NETHERLANDS
16 BELGIUM
17 CANADA
18 IRELAND
19 PORTUGAL
20 POLAND
21 HUNGARY
22 FINLAND
23 DENMARK
24 AUSTRIA
25 S.AFRICA
26 CTR21 COUNTRIES
27 CHINA
28 MALAYSIA
29 LUXUMBURG
30 GREECE
31 ICELAND
32 NEW ZEALAND
33 BRAZIL
</programlisting>
</para>
</sect2>
<sect2>
<title>
Other options while loading the modules.
</title>
<para>The other options that you may want to use while loading ptserial.o are:</para>
<para>For all HALs :</para>
<para> - irq: Force to using irq #.</para>
<para> - iobase: Force to use iobase for modem detection.</para>
<para></para>
<para>Only for I810/VAI686A HALs:</para>
<para> - iobase1: Force the iobase 1</para>
<para> &nbsp;&nbsp;NOTE: if you want to set iobase or iobase1, you should use </para>
<para>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;irq/iobase/iobase1 at same time.</para>
<para></para>
<para>Only for CM8738/PCT789 HALs:</para>
<para> - vendor_id: vendor ID of the modem</para>
<para> - device_id: device ID of the modem.</para>
<para> &nbsp;&nbsp;NOTE: vendor_id and device_id should be used at the same time,</para>
<para> &nbsp;but you cannot combinate this two options with</para>
<para> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;iobase, iobase prevail to (vendor/device)_id detection.</para>
<para> &nbsp;&nbsp;</para>
</sect2>
<sect2>
<title>
The sequence of loading/unloading the modules.
</title>
<para>
When you load the modules, you must load the <application>pctel.o</application> module at first
</para>
<para>
<command>bash$
insmod pctel
</command>
</para>
<para>
and then the <application>ptserial.o</application>
</para>
<para>
<command>bash$
insmod ptserial
</command>
</para>
<para>
While unloading, the sequence is reversed,
</para>
<para>
<command>bash$
rmmod ptserial
</command>
</para>
<para>
<command>bash$
rmmod pctel
</command>
</para>
</sect2>
<sect2>
<title>
Bugs in the 2.4x versions.
</title>
<para>
<anchor id="bug"/>
There is a serious bug in the drivers for the kernel 2.4x
The modem often seems to stop working/hang while dialing out, and you get nothing but a
beeeeeeeeee... sound from the modem speaker and later, the dialer gives a message <computeroutput>No Carrier</computeroutput>
and disconnects.
</para>
<para>
This problem has no real workaround , but sometimes unloading and reloading of the modules work.For that the commands will be (assuming that you have the modules in <filename>/lib/modules/'your kernel version`/misc/ </filename>)</para>
<para>
<command>bash$
rmmod ptserial
</command>
</para><para>
<command>bash$
rmmod pctel
</command>
</para><para>
<command>bash$
insmod pctel
</command>
</para><para>
<command>bash$
insmod ptserial
</command>
</para>
<para>
NOTE:You must exit from your dialer before trying to unload the drivers, otherwise you will get a <computeroutput>device or resource busy </computeroutput> error.
</para><para>
When the problems become too acute, the only solution seems to be rebooting.
</para>
</sect2>
<sect2>
<title>
Directory of the kernel source files
</title>
<para>
<anchor id="kernelsrc"/>
If you get an error saying <computeroutput>/usr/src/linux/include/linux/modversions.h : no such file or directory</computeroutput>,
look in your /usr/src directory for the kernel source. The default location is <filename>/usr/src/linux/ </filename> but some distributions may install the files somewhere else.</para><para>If you find that the files are somewhere else, say in the directory, <filename>/usr/src/myspecialsource/ </filename>, do not try to move the files, just create a symbolic link with the command </para><para><command>bash$
ln -s /usr/src/myspecialdirectory/ /usr/src/linux/
</command>
</para>
<para>
NOTE: In case of the PCTel-0.8.6 drivers you can also specify the location of your kernel source by using the option
</para>
<para>
<command>bash$
--with-kernel-includes=your kernel source directory
</command>
</para>
<para>
during running the <application> configure </application> script.
</para>
</sect2>
<sect2 id="bios">
<title> PnP BIOS issues</title>
<para>
As most computers are designed for M$-Windows operating systems, the BIOS of the computer assumes that you have a what it calls a "PnP OS installed".
This may cause trouble with these types of modems in linux (specially if you have resource conflicts) and so the best bet is to change the option "PnP OS installed" to "No". To do these, you have to perform the following steps:
</para>
<para>
During startup, when you see "Memory Test" messages, CPU information, BIOS information, just press the <keycap>DEL</keycap> key (if that does not work, usually one of the Function (Fx) keys work..check your manual).</para>
<para>
You will be presented with the BIOS configuration menu. Enter the "PNP/PCI Configuration" section and set the option for "PNP OS Installed" to "NO". Save the changes you have made, and then reboot.
</para>
<para>NOTE: This is <emphasis>not</emphasis> applicable to all BIOSs, and you are advised to consult your PC documentation if you have a different kind of BIOS configuration menu.
</para>
</sect2>
<sect2 id="amr">
<title>
AMR modems
</title>
<para>
There are certain PCTel chip set based internal modems that go into AMR slots instead of the normal PCI slots. Linux support for these types of modems is not very well developed, though the upcoming drivers may support them
</para>
</sect2>
</sect1>
<!-- Section1: trouble -->
<sect1 id="trouble">
<title>FAQ/Troubleshooting</title>
<para>
Here is a set of common problems that you may face, along with their possible solutions.
</para>
<sect2>
<title>
Compiling Problems
</title>
<qandaset>
<qandaentry>
<question>
<para>
I get a <computeroutput>/usr/src/linux/include/linux/modversions.h : no such file or directory</computeroutput>
</para>
</question>
<answer>
<para>
You need to have your kernel source installed under <filename>/usr/src/linux/ </filename> </para><para>
If you have the kernel source installed somewhere else, just make the appropriate symlink. (see section <link linkend="kernelsrc">7.6 </link>for more information)
If you have that installed under <filename>/usr/src/linux/ </filename>, run
</para>
<para><command>bash$
make config
</command>
</para>
<para><command>bash$
make dep
</command>
</para>
<para>
in <filename>/usr/src/linux/ </filename>
</para></answer></qandaentry>
<qandaentry>
<question>
<para>
I get a <computeroutput>permission denied</computeroutput> error while running <command>bash$ make install</command>
</para>
</question>
<answer>
<para>
You need to be logged in as root while doing <command>bash$ make install</command>
</para>
</answer>
</qandaentry>
</qandaset>
</sect2>
<sect2>
<title>
Problems while loading the modules.
</title>
<qandaset>
<qandaentry>
<question>
<para>
I get <computeroutput>unresolved symbols....</computeroutput> messages while loading the modules
</para>
</question>
<answer>
<para>
Firstly, check that you are loading <application>ptserial.o</application> only after loading pctel.o.
</para>
<para>
If that does not solve the problem, then probably you have compiled your modules for the wrong kernel version. Check your kernel version
with the command
</para>
<para>
<command>bash$
uname -r
</command>
</para>
<para>
and then verify if you have the right files in <filename>/usr/src/linux </filename>.
</para>
<para>
Moreover, if you have a running kernel for a uniprocessor machine and have kernel source in <filename>/usr/src/linux/ </filename>
that is configured for smp support, then you will get unresolved symbols. A method to check whether you have a smp supporting source is by
running <command>bash$
make menuconfig </command>
in <filename>/usr/src/linux/ </filename>
and seeing whether smp support is selected.
</para>
<para>
Another way to get rid of the unresolved symbols problem is to use the fixscript package from
<ulink url="http://www.medres.ch/~jstifter/linux/fixscript.gz">http://www.medres.ch/~jstifter/linux/fixscript.gz</ulink>
</para>
<para>
The procedure is to:
</para>
<para>
Unpack the downloaded file with
</para>
<para>
<command>bash$
gzip -d fixscript.gz
</command>
</para>
<para>
Make it executable with
</para>
<para>
<command>bash$
chmod +x fixscript
</command>
</para>
<para>
Run it with
</para>
<para>
<command>bash$
./fixscript old_module.o new_module.o
</command>
</para>
<para>
This will create the new module, which you can try to load
with
</para>
<para>
<command>bash$
insmod new_module.o
</command>
</para>
<para>
If fixscript reports an error like
</para>
<para>
<computeroutput>
objcopy: --redefine-sym: Symbol x is target of more than one redefinition
</computeroutput>
</para>
<para>
then, fixscript can not help you.
</para>
<para>
The best method is of course, to fix your kernel source and recompile the drivers.
</para>
<para>
Make sure that you do a
</para>
<para><command>bash$
make clean
</command>
</para>
<para>
before recompiling.
</para>
</answer>
</qandaentry>
<qandaentry>
<question>
<para>
I get an <computeroutput>Operation not permitted</computeroutput> error while trying to load the drivers
</para>
</question>
<answer>
<para>
You will have to be logged in as root to load the drivers, otherwise, you can also type in the
</para>
<para><command>bash$
su
</command>
</para>
<para>
command and then load the drivers.
</para>
</answer>
</qandaentry>
</qandaset>
</sect2>
<sect2>
<title>
General modem based problems.
</title>
<qandaset>
<qandaentry>
<question>
<para>I get a <computeroutput>/dev/modem no such device</computeroutput> error.</para></question><answer>
<para>First of all, check if you really have the drivers loaded. You can do this by the command</para><para>
<command>bash$ lsmod</command></para>
<para>This command lists all the modules that you have loaded, and if you see something like</para>
<para><screen>
Module Size Used by
ptserial 47472 0 (unused)
pctel 1211808 0 [ptserial]
</screen>
</para>
<para>then, the modules are correctly loaded.</para>
<para>If not, just load them and retry.</para>
<para>Also check whether the file /dev/modem is symlinked to /dev/ttyS15</para>
<para>Remember, even if msdos or Microsoft Windows tells you that the modem is in com 3 or com 4, in linux the driver makes it appear in
/dev/ttyS15 (the Microsoft equivalent of which will be com 16!!)</para>
<para>If you are in doubt, I suggest that you re-create the device files by the commands</para>
<para>
<command>bash$
rmmod ptserial
</command>
</para>
<para>
<command>bash$
rmmod pctel
</command>
</para>
<para>
<command>bash$ rm /dev/ttyS15 &nbsp;/dev/modem
</command>
</para>
<para>
<command>bash$
mknod /dev/ttyS15 c 62 79
</command>
</para>
<para>NOTE: the numbers after /devttyS15 are distribution specific, and the c 62 79 works for Red Hat
Linux. If you have any other distribution, please check your documentations.</para>
<para>
<command>bash$
chgrp uucp /dev/ttyS15
</command>
</para>
<para>
<command>bash$
chmod 666 &nbsp;/dev/ttyS15
</command>
</para>
<para>
<command>bash$
ln -s /dev/ttyS15 /dev/modem
</command>
</para>
</answer>
</qandaentry>
<qandaentry>
<question>
<para>
My dialer gives a <computeroutput>No Carrier </computeroutput> error
</para>
</question><answer>
<para>
This is a bug with the drivers for the kernel 2.4x series
</para><para>
Refer to section <link linkend="bug">7.5 </link>for more information.
</para>
</answer>
</qandaentry>
<qandaentry>
<question>
<para>
I get a <computeroutput> No Dialtone </computeroutput> message.</para></question><answer>
<para> This is usually solved by adding <command>bash$ ATX3 </command> to your modem init strings.
</para>
</answer>
</qandaentry>
<qandaentry>
<question>
<para>
I get a <computeroutput>Modem Busy</computeroutput> error.
</para>
</question>
<answer>
<para>
First of all, check if the drivers are loaded or not and then see, if any program is using the modem.
If everything seems to be all right, try to find out the irq of your modem with the command</para>
<para>
<command>bash$
lspci -v
</command>
</para>
<para>
If the irq listed is obviously incorrect (like 0) (or does not tally with your M$-Windows configuration) then either use the <application>setserial</application> command</para>
<para>
<command>bash$
setserial /dev/ttyS15 irq * </command>(where * is the irq of your modem)</para>
<para>or fiddle with the BIOS settings (see section <link linkend="bios"> 7.7</link>)
</para>
</answer>
</qandaentry>
</qandaset>
</sect2>
<sect2>
<title>
I have a problem that is not listed in this section. What do I do?
</title>
<para>
The output of the command
</para>
<para>
<command>bash$
tail /var/log/messages
</command>
</para>
<para>
will give you a lot of information if anything goes wrong
The normal output should be something like this</para><para><screen>
Nov 26 13:19:31 madcow kernel: PCTel device[00:09.0](0x48) found "PCTel Inc HSP MicroModem 56 (rev 01)", iobase=0xe400, irq=12.
Nov 26 13:19:31 madcow kernel: PCTel driver version 0.8.9 [5.05c-4.27.215 (09-14-2001)] (PCT789) (2001-09-07) with MANY_PORTS SHARE_IRQ SERIAL_PCI ISAPNP enabled.
Nov 26 13:19:31 madcow kernel: PCTel driver built on [Linux 2.4.14 i686 unknown "2.4.14 <132110>"] with gcc-2.96.
Nov 26 13:19:31 madcow kernel: ttyS15 at 0xe400 (irq = 12) is a PCTel
</screen>
</para>
<para>Mail the output you get to the <email>discuss@linmodems.org</email> list( more on this in section <link linkend="mailinglist">9.2.2</link>), and wait for a reply.</para>
</sect2>
</sect1>
<!-- Section1: help -->
<sect1 id="appendix">
<title>Appendix</title>
<sect2><title> A sample script file to load the modules.</title>
<programlisting>
#! /bin/bash
/sbin/insmod /lib/modules/`uname -r`/misc/pctel.o
/sbin/insmod /lib/modules/`uname -r`/misc/ptserial.o
# end file
</programlisting>
<para></para>
<para>You can save this file as modemon and then isuue the commands</para><para>
<command>bash$
chmod 700 modemon
</command>
</para>
<para>
<command>bash$
cp modemon /usr/bin/modemon
</command></para>
<para>Now, whenever you type in the command <command>bash$ modemon </command>, the modules will get loaded automatically</para>
</sect2>
<sect2>
<title> Web Resources</title>
<para>There are a number of websites, mailing lists that may help you while you try to configure your modem.</para>
<sect3>
<title>Web sites</title>
<para>The unofficial pctel linux driver site at <ulink url="http://www.medres.ch/~jstifter/linux/pctel.html">
http://www.medres.ch/~jstifter/linux/pctel.html</ulink></para>
<para>The linmodem site (the mother page of all linmodem projets) at <ulink url="http://www.linmodems.org">http://www.linmodems.org</ulink></para>
<para>A huge lists of lin/winmodems at <ulink url=" http://www.idir.net/~gromitkc/winmodem.html
">http://www.idir.net/~gromitkc/winmodem.html</ulink></para>
<para>A list of AT commands from PCTel at <ulink url="http://www.pctel.com/atcommands_dev.htm">http://www.pctel.com/atcommands_dev.htm</ulink></para>
<para>
The linmodem-howto is available at <ulink url="http://www.linuxdoc.org/HOWTO/Linmodem-HOWTO.html">http://www.linuxdoc.org/HOWTO/Linmodem-HOWTO.html</ulink>.
</para>
</sect3>
<sect3>
<title>Mailing lists</title>
<para>
<anchor id="mailinglist"/>
The most important mailing list for linmodems is </para>
<para><email>discuss@linmodems.org</email></para>
<para>You can subscribe to that list by going to &nbsp;</para><para>
<ulink url="http://www.linmodems.org">http://www.linmodems.org </ulink> or by sending a blank e-mail to <email>discuss-subscribe@linmodems.org</email> .
</para>
</sect3>
</sect2>
<sect2 id="other-drivers">
<title> Other drivers that are available </title>
<para>
I have seen a number of modem manufacturers (Dax, Zoltrix, Lectron, etc) providing linux drivers for their modems that have PCTel chip sets.</para><para>
Actually most (if not all) of these drivers are slightly modified form of the drivers at Jan's site, and so, in most cases, there is no point in downloading them.</para>
<para>
Moreover, in the early days of 2.4x kernels, Thomas Wright had made a PCTel driver and you can find it in his website at <ulink url="http://www.geocities.com/tom_in_rc/">http://www.geocities.com/tom_in_rc/</ulink>.</para>
</sect2>
<sect2 id="identify">
<title> Identifying the chip set of the modem</title>
<para>
Well, the best way to identify the chip set of your modem is to open up the cabinet of the machine.,
gently pull out the modem from it's slot (only if it is <emphasis> not </emphasis> integrated into your motherboard), and see the name printed on the black chip on the modem. (be <emphasis>very very careful </emphasis>while doing these, and make sure that all power supplies to the system is disconnected, and touch the ground/a metallic surface before handling any of the circuitry/wires in the machine). But sometimes, this is not possible and so you will have to adopt other methods.</para>
<para>The next best method is to run the command </para><para>
<command>bash$
lspci -n
</command>
</para>
<para>
This command will give you the numeric PCI id of your modem (you may have to run <command>bash$ lspci</command> to crosscheck the device id) and you will have to submit the number at <ulink url="http://www.yourvote.com/pci/
">http://www.yourvote.com/pci/</ulink>
Here you may or may not get the exact name of the chip set you have.
</para>
<para>
If you do not get the name, you can go through the database at <ulink url="
http://www.idir.net/~gromitkc/winmodem.html#drivers">
http://www.idir.net/~gromitkc/winmodem.html#drivers </ulink>
and search for an entry on your modem.</para>
<para>
You can also ask at the local LUGs or ask your friends or even (a bad way, no doubt), ask the support personnel of your modem manufacturer.
</para>
</sect2>
</sect1>
</article>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-namecase-general:t
sgml-general-insert-case:lower
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:nil
sgml-parent-document:nil
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
-->