Here is a set of common problems that you may face, along with their possible solutions.
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
I am supposing that you are in the pctel-0.9.6 directory, and the configure.patch is also in that 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/
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.
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.
See the answer to the previous question (8.1.4).
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.
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.
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.
Just remember that this is not a very nice hack. |
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
This is a bug with the drivers for the kernel 2.4x series
Refer to section 7.6 for more information.
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.
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.
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 <discuss@linmodems.org> list( more on this in section 9.2.2), and wait for a reply.