TROUBLESHOOTING file for tpctl
==============================

Error message:
	tpctl: module required for request is not enabled
Explanation:
	Perhaps the thinkpad module was loaded with one of the services
	disabled (e.g., "insmod thinkpad enable_superio=0").
Solution:
	Re-enable it.
Explanation:
	Since thinkpad.o requests that other modules be loaded as they
	are required, this message means either that the module cannot
	be found by modprobe, or that the module failed initialization.
	Try insmod'ing the service module manually, e.g., 
		cd /lib/modules/thinkpad
		insmod superio
	and if you get an error message then the problem is probably that
	your model of thinkpad is incompatible with that module.
Solution:
	Don't use that tpctl option.

Error message:
	Segmentation fault
Explanation:
	Segmentation faults can occur for a variety of reasons, but here
	is one scenario.  Sometimes, for obscure reasons, the loadable kernel
	module "thinkpad.o" is not automatically loaded by the kernel when it
	is needed.
Solution:
	modprobe thinkpad
	Then retry the tpctl command that caused the segfault.

Error message:
	tpctl: error in loading shared libraries: libsmapidev.so:
	cannot open shared object file: No such file or directory.
Explanation:
	Perhaps the path /usr/local/lib is missing from your ld path
Solution:
	Add this path to /etc/ld.so.conf and run "ldconfig"
	After version 0.5.3-2, the installation script does this
	automatically.

Error message:
   /lib/modules/thinkpad/thinkpad.o: kernel-module version mismatch:
   /lib/modules/thinkpad/thinkpad.o was compiled for kernel version 2.2.10
   while this kernel is version 2.2.5.
Explanation:
	Even when compiled with MODVERSIONS, binaries compiled for one
	kernel version are rarely compatible with other kernel versions.
Solution:
	Recompile.

Error message:
	/lib/modules/thinkpad/thinkpad.o: unresolved symbol(s)
Explanation:
	This may be nothing to worry about.  Try running tpctl anyway.
	If you get an error message, try the previous solution suggestion.

Error message:
	tpctl: Can't open device file: /dev/thinkpad with flags 0x2
Explanation:
	You need write permission on /dev/thinkpad in order to change
	the system configuration.
	
Error message:
	insufficient permission for request
Explanation:
	You need to open /dev/thinkpad with write flags in order to perform
	the action you are contemplating.  If you get this message in tpctl
	it means that there is a bug in the program, because tpctl should
	always try to open /dev/thinkpad for writing when it needs to.
	
Error message:
	can't open device file: /dev/thinkpad
Explanation 1:
	Maybe you need to "modprobe thinkpad".  See the README file.
Explanation 2:
	Maybe you need to "mknod /dev/thinkpad c 10 170".
Explanation 3:
	Maybe you need to add access permissions to /dev/thinkpad.
	(The user of tpctl needs at least read access.)
	
Problem:
	The setting does not change when set, even though tpctl reports that
	it has been set
Explanation 1:
	tpctl reports error messages that are returned by the SMAPI
	BIOS.  For some requests the BIOS returns no error code, yet does
	not change the setting.  In most cases this is because the setting
	cannot be changed on one's particular model of ThinkPad.
Note:
	If a timer-initiated sedation event cannot be changed using --ps*,
	it may be en|disablabe using --pt*.
Explanation 2:
	However, we cannot rule out the possibility that there is a bug in
	the program.  If you find one, please report it to the author at
	the address given at the end of this file.

Error message:
	Warning: value being converted from BCD format is not a valid BCD number
Explanation:
	This means that some ThinkPad memory address that is supposed to contain
	a binary-coded-decimal number happens to contain a value that is not BCD.
	If this warning appears when printing the resume appointment then simply
	set the appointment to some date.  Choose a date in the past if you don't
	want to set an appointment.

Problem:
	"tpctl --suspend" doesn't work when running X
Solution 1: Try "apm --suspend" instead.
Solution 2: Try killing esd or kaudioserver if it is running.
Solution 3: Try disconnecting AC power.
Solution 4: Try "cardctl eject"ing the PCMCIA card

Problem:
	sedation (i.e., standbyifying, suspending or hibernating) doesn't work
	at all
Solution:
	Try recompiling your kernel with CONFIG_APM_ALLOW_INTS=y

Error message:
	"tpctl --hibernate" results in "system is invalid" message
Solution 1: Try killing esd or kaudioserver if it is running.
Solution 2: Try disconnecting AC power.
Solution 3: Try "cardctl eject"ing the PCMCIA card

Problem:
	I enable the serial port but "setserial" doesn't detect the UART.
Explanation:
	I don't know why, but the serial ports just aren't recognized at
	every possible io address.  If it is not recognized at *any* address
	then it may be that the port is powered down.  If it is powered down
	then "enabling" it isn't enough.  You will have to switch it on.
	Presently there is no tpctl option that does this: you will have to
	use ThinkPad Configuration or PS2.EXE ("PS2 SER ON").

Error message:
	depmod: *** Unresolved symbols in /lib/modules/2.3.x/thinkpad/smapi.o
	depmod:         proc_unregister_Ree439034
	depmod:         proc_register_R5c93cc75
Explanation:
	The driver sources contain code to support the 2.3.x kernel interface
	to the /proc filesystem.  This code is activated when the kernel
	version number as set in /usr/src/linux/include/linux/version.h is
	greater than or equal to 2.3.0 .  If this file is absent or contains
	a lower version number, or if there is another version.h file
	preceding this one on the include file search path with a lower
	version number, and you are in fact running a 2.3.x kernel, then
	you can either fix the file or force compilation for the 2.3.x /proc
	interface by defining macro NEW_PROC.  Add "-DNEW_PROC" to CFLAGS in
	the Makefile.
	
--
Thomas Hood
31 December 1999
