
   FAQ - Frequently Asked Questions
   --------------------------------


Table of Contents:
------------------
1. Will my modem XXX work with this driver?
2. What is needed to compile this driver?
3. How do I install this driver?
4. How do I load the driver in the boot-up?
5. Do you work for PCTEL?
6. Module options
7. Country Code selection
8. Compile error: no modversions.h
9. Unresolved Symbols
10. Modem not responding

1. Will my modem XXX work with your driver?
-------------------------------------------
Go to "Linux/Modem Compatibility Knowledge Base" at
http://www.idir.net/~gromitkc/winmodem.html
and follow the instructions to find your modem.
If you don't know, just try it!


2. What is needed to compile this driver?
-----------------------------------------
* kernel-sources
* a working compiler (preferably gcc)
* development tools (make, awk, ...)


3. How do I install this driver?
--------------------------------
Please read the INSTALL file.


4. How do I load the driver in the boot-up?
--------------------------------------------
If you have sucessfully done "make install", the driver is located 
in /lib/modules/"your-kernel-number"/misc/

The driver consists of two parts:
pctel.o
ptserial.o

You insert these drivers with the command
insmod pctel
insmod ptserial

You have to make sure, that these two commands are run every time you
reboot your machine, by adding these two commands to an init script,
according to your distribution.

If you want to enable autoloading of the modules,
the following lines in /etc/modules.conf would suffice:

# for pctel modem
alias char-major-62 ptserial
below ptserial pctel
# country code for pctel modem
options ptserial country_code=13

Make sure, you run "depmod -a" after you changed your /etc/modules.conf.

Then starting ppp would autoload the modules,
or "modprobe ptserial" will insert them.


5. Do you work for PCTEL?
-------------------------
I don't work for PCTEL, i am maintainig this driver in my free time.


6. Module options
-----------------
You can add some module parameters in you /etc/modules.conf or at
insmod/modprobe time:

For all HALs:
   - country_code: Country code (see below).
   - irq: Force to using irq #.
   - iobase: Force to use iobase for modem detection.

Only for I81X/VAI686A HALs:
   - iobase1: Force the iobase 1
     NOTE: if you want to set iobase or iobase1, you should use 
           irq/iobase/iobase1 at same time.

Only for CM8738/PCT789 HALs:
   - vendor_id: vendor ID of the modem
   - device_id: device ID of the modem.
     NOTE: vendor_id and device_id should be used at the same time,
      but you cannot combinate this two options with
           iobase, iobase prevail to (vendor/device)_id detection.
           

7. Country Code selection
-------------------------
The PCTEL modem has the possibility to select a country code.
If the country code is not selected, the default country code,
which is USA, will be used and it should work for most countries.
However, there is a way that you can select the country code for
better performance.

To select the country code, instead of "insmod ptserial.o" do:
insmod ptserial.o country_code=X

Table of country codes:

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


8. Compile error: no modversions.h
----------------------------------
If you see something like:
configure: error: modversions.h is missing - you should configure 
your kernel first!

then, you either have:
a) not installed your kernel sources --> install them

b) your kernel sources at a different path --> specify the path with:
   ./configure --with-kernel-includes=DIR

c) no "modversions.h" in your kernel sources -->
   create the modversions.h by running
   $ cd [...] (where you have your kernel sources, default is
               /usr/src/linux)
   $ make dep

   this should make you a modversions.h in [...]/linux/include/

   If this did not work, an ugly hack is to create an empty file there:
   $ mkdir -p [...]/linux/include/linux
   $ touch [...]/linux/include/linux/modversions.h


9. Unresolved Symbols
---------------------
The unresolved symbols arise when there is a mismatch between the
versions of the running kernel & the kernel-headers used to compile the
driver.

These symbol differences can often be masked across flavor differences
and even some larger differences through use of Mark Speith's fixscript,
available at: www.medres.ch/~jstifter/linux/pctel.html (links section).

Of course, the robust cure (and much better)
is too use the same kernel-headers as were used
in the compile of the running kernel.  Unfortunately the kernel-header
packages provided by some Linux distros are not exactly version matched
with the stock kernels.

If you do a 
  depmod -e pctel.o
or
  depmod -e ptserial.o
you can generate an "unresolved symbols" report.

If you have unresolved symbols:

1) download fixscript.gz
2) unpack it with "gzip -d fixscript.gz"
3) make it executable with "chmod +x fixscript"
4) install all modules, needed for your system
5) run fixscript with 

./fixscript old_module.o new_module.o

this will create you the new module, which you can try to insert
with "insmod new_module.o"

If fixscript reports an error like
objcopy: --redefine-sym: Symbol "" is target of more than one redefinition
then, fixscript can not help you.

In this case, you have to compile yourself a kernel. Ask the linmodems
mailing list if you have problems - it is not that hard!


10. Modem not responding
------------------------
If wvdial reports that the modem is not responding, pppd locks up, or
minicom blocks keyboard input, this could be due to a conflict with
the sound driver (this problem has been observed in an on-board sound
system involving the SiS7018 audio controller, but may affect other
systems too). Unfortunately in this situation sound and modem support
are mutually exclusive. To use the modem it is necessary to disable
the kernel sound driver. Either use a kernel without built in sound
support, or in the case of a modularised kernel, disable loading of
the sound driver module. This can be done by editing the file
/etc/modules.conf and commenting out the line associating a sound 
slot with the sound driver module, ie.

#alias sound-slot-0 trident


---
Jan Stifter, 2001-10-29
j.stifter@[no-spam]medres.ch
http://www.medres.ch/~jstifter/pctel
