Here is a set of common problems that you may face, along with their possible solutions.
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/
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.
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
This is a bug with the drivers for the kernel 2.4x series
Refer to section 7.5 for more information.
This is usually solved by adding ATX3 to your modem init strings.
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)
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.