8. FAQ/Troubleshooting

Here is a set of common problems that you may face, along with their possible solutions.

8.1. Compiling Problems

8.1.1. I get a configure: error: You must have linux kernel >= 2.4.0 installed during ./configure
8.1.2. I get a /usr/src/linux/include/linux/modversions.h : no such file or directory
8.1.3. I get a permission denied error while running bash$ make install
8.1.4. I have gcc 3 and while compiling, I get an error which goes like this <command line>:1:13: multi-line string literals are deprecated make[3]: *** [ptserial.o] Error 1.
8.1.5. I have RedHat 8.0/Mandrake 9.0, and I am having troubles compiling the drivers.

8.1.1. I get a configure: error: You must have linux kernel >= 2.4.0 installed during ./configure

If this occurs, you will have to patch your configure script. Download the file configure.patch from here and give the command

cat configure.patch | patch -p0

Note

I am supposing that you are in the pctel-0.9.6 directory, and the configure.patch is also in that directory

8.1.2. I get a /usr/src/linux/include/linux/modversions.h : no such file or directory

You need to have your kernel source installed under /usr/src/linux/

If you have the kernel source installed somewhere else, just make the appropriate symlink. (see section 7.7 for more information) If you have that installed under /usr/src/linux/ , run

bash$ make config

bash$ make dep

in /usr/src/linux/

8.1.3. I get a permission denied error while running bash$ make install

You need to be logged in as root while doing bash$ make install

8.1.4. I have gcc 3 and while compiling, I get an error which goes like this <command line>:1:13: multi-line string literals are deprecated make[3]: *** [ptserial.o] Error 1.

This should not happen anymore since the pctel-0.9.6 driver was released to address this issue. However, if you still face such a problem, (with an older driver or something like that), you will have to edit the file <your pctel directory>src/ptserial/Makefile. In that file, find out the line which says

CFLAGS = -D__KERNEL__ -Werror -Wno-trigraphs -fno-common -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -fno-strict-aliasing -pipe -fno-strength-reduce -DMODULE -DMODVERSIONS -DEXPORT_SYMTAB -D$(HAL_TARGET) $(AUDIO_ROUTING) -DBUILD_SYSTEM=\""$(BUILD_SYSTEM)\"" -DGCC_VERSION=\""$(GCC_VERSION)\"" -I$(top_srcdir)/include -I$(KERNEL_INCLUDES) -include $(KERNEL_INCLUDES)/linux/modversions.h

and change that to

CFLAGS = -D__KERNEL__  -Wno-trigraphs -fno-common -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -fno-strict-aliasing -pipe -fno-strength-reduce -DMODULE -DMODVERSIONS -DEXPORT_SYMTAB -D$(HAL_TARGET) $(AUDIO_ROUTING) -DBUILD_SYSTEM=\""$(BUILD_SYSTEM)\"" -DGCC_VERSION=\""$(GCC_VERSION)\"" -I$(top_srcdir)/include -I$(KERNEL_INCLUDES) -include $(KERNEL_INCLUDES)/linux/modversions.h

....and then recompile.

Tip

If you cannot find the file src/ptserial/Makefile, then run the configure script, and try again.

Alternatively, you may also try out the pre-compiled (distro specific) drivers at http://www.geocities.com/jcmp3/. Just note that I have not personally tested out these drivers, and I don't know much about them.

8.1.5. I have RedHat 8.0/Mandrake 9.0, and I am having troubles compiling the drivers.

See the answer to the previous question (8.1.4).

8.2. Problems while loading the modules.

8.2.1. I get unresolved symbols.... messages while loading the modules
8.2.2. I get an Operation not permitted error while trying to load the drivers
8.2.3. I get a Warning: loading /lib/modules/2.4.19/misc/ptserial.o will taint the kernel: non-GPL license - GPL linked with proprietary libraries message while loading the modules.
8.2.4. I get a The module you are trying to load (/lib/modules/2.4.18-14/misc/pctel.o) is compiled with a gcc version 2 compiler, while the kernel you are running is compiled with a gcc version 3 compiler. This is known to not work. message while loading the modules.

8.2.1. I get unresolved symbols.... messages while loading the modules

Firstly, check that you are loading ptserial.o only after loading pctel.o.

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

bash$ uname -r

and then verify if you have the right files in /usr/src/linux .

Moreover, if you have a running kernel for a uniprocessor machine and have kernel source in /usr/src/linux/ 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 bash$ make menuconfig in /usr/src/linux/ and seeing whether smp support is selected.

Another way to get rid of the unresolved symbols problem is to use the fixscript package from http://linmodems.technion.ac.il/pctel-linux/fixscript.gz

The procedure is to:

Unpack the downloaded file with

bash$ gzip -d fixscript.gz

Make it executable with

bash$ chmod +x fixscript

Run it with

bash$ ./fixscript old_module.o new_module.o

This will create the new module, which you can try to load with

bash$ insmod new_module.o

If fixscript reports an error like

objcopy: --redefine-sym: Symbol x is target of more than one redefinition

then, fixscript can not help you.

The best method is of course, to fix your kernel source and recompile the drivers.

Make sure that you do a

bash$ make clean

before recompiling.

8.2.2. I get an Operation not permitted error while trying to load the drivers

You will have to be logged in as root to load the drivers, otherwise, you can also type in the

bash$ su

command and then load the drivers.

8.2.3. I get a Warning: loading /lib/modules/2.4.19/misc/ptserial.o will taint the kernel: non-GPL license - GPL linked with proprietary libraries message while loading the modules.

This message is just to inform you that you are loading a proprietary module which is not supported by the Linux kernel developers. It also serves as a warning that the drivers have not been officially tested with the kernel, and may cause problems, and tells you that you should not send bug reports to the kernel developers if you face system instability or any other problems after loading these proprietary drivers.

Note

Just remember that this is not a error message - it just informs you that you are using an unsupported module.

8.2.4. I get a The module you are trying to load (/lib/modules/2.4.18-14/misc/pctel.o) is compiled with a gcc version 2 compiler, while the kernel you are running is compiled with a gcc version 3 compiler. This is known to not work. message while loading the modules.

Try to load the modules with the commands with insmod -f pctel and insmod -f ptserial instead of the plain insmod pctel and insmod ptserial.

Warning

Just remember that this is not a very nice hack.

8.3. General modem based problems.

8.3.1. I get a /dev/modem no such device error.
8.3.2. My dialer gives a No Carrier error
8.3.3. I get a No Dialtone message.
8.3.4. I get a Modem Busy error.

8.3.1. I get a /dev/modem no such device error.

First of all, check if you really have the drivers loaded. You can do this by the command

bash$ lsmod

This command lists all the modules that you have loaded, and if you see something like

Module                  Size  Used by
ptserial               47472   0 (unused)
pctel                1211808   0 [ptserial]

then, the modules are correctly loaded.

If not, just load them and retry.

Also check whether the file /dev/modem is symlinked to /dev/ttyS15

Remember, even if msdos or Microsoft Windows tells you that the modem is in com 3 or com 4, in GNU/Linux the driver makes it appear in /dev/ttyS15 (the Microsoft equivalent of which will be com 16!!)

If you are in doubt, I suggest that you re-create the device files by the commands

bash$ rmmod ptserial

bash$ rmmod pctel

bash$ rm /dev/ttyS15  /dev/modem

bash$ mknod /dev/ttyS15 c 62 79

NOTE: the numbers after /devttyS15 are distribution specific, and the c 62 79 works for Red Hat Linux and derivatives. If you have any other distribution, please check your documentations.

bash$ chgrp uucp /dev/ttyS15

bash$ chmod 666  /dev/ttyS15

bash$ ln -s /dev/ttyS15 /dev/modem

8.3.2. My dialer gives a No Carrier error

This is a bug with the drivers for the kernel 2.4x series

Refer to section 7.6 for more information.

8.3.3. I get a No Dialtone message.

This is usually solved by adding ATX3 to your modem init strings. The process of adding the ATX3 init string varies depending on the dialer you are using. For example, if you are using wvdial, you need to add X3 at the end of the Init2 line in the file /etc/wvdial.conf. On the other hand, if you are using KPPP, you will have to add ATX3 in the Initialization String 1 field, which can be found in the Modem Commands section of the Modem of the Setup dialogue box of KPPP.

8.3.4. I get a Modem Busy error.

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

bash$ lspci -v

If the irq listed is obviously incorrect (like 0) (or does not tally with your M$-Windows configuration) then either use the setserial command

bash$ setserial /dev/ttyS15 irq * (where * is the irq of your modem)

or fiddle with the BIOS settings (see section 7.8)

Another possibilty may be that your sound modules are conflicting with the PCTel modules. Refer to section 7.10 for this.

8.4. I have a problem that is not listed in this section. What do I do?

The output of the command

bash$ tail /var/log/messages

will give you a lot of information if anything goes wrong The normal output should be something like this

Nov 11 10:50:24 localhost kernel: PCTel device[00:09.0](0x48) found "PCTel Inc HSP MicroModem 56 (rev 01)", iobase=0xe400, irq=12.
Nov 11 10:50:24 localhost kernel: PCTel driver version 0.9.5 [5.05c-4.27.215 (09-14-2001)] (PCT789) (2002-01-31) with MANY_PORTS SHARE_IRQ SERIAL_PCI enabled.
Nov 11 10:50:24 localhost kernel: PCTel driver built on [Linux 2.4.18-14 i686 i686 "2.4.18-14 <132114>"] with gcc-gcc (GCC) 3.2
20020903 (Red Hat Linux 8.0 3.2-7).
Nov 11 10:50:24 localhost kernel: ttyS15 at 0xe400 (irq = 12) is a PCTel

Mail the output you get to the list( more on this in section 9.2.2), and wait for a reply.