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 /usr/src/linux/include/linux/modversions.h : no such file or directory
8.1.2. I get a permission denied error while running bash$ make install

8.1.1. 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.6 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.2. 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.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.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://www.medres.ch/~jstifter/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.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 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. 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.5 for more information.

8.3.3. I get a No Dialtone message.

This is usually solved by adding ATX3 to your modem init strings.

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.7)

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 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

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