README.TXT Driver File Contents (ov378parw2k.zip)

FILE: readme.txt                Copyright (c), Symmetric Research, 2003-2005

This file discusses the PARxCH device driver.  This software does the
actual work of communicating with the A/D board, with the higher
level PARxCH function library being a thin wrapper around it.  

Under WinNT, Win2K and Linux, the driver is provided as a separate
kernel mode driver which you must install before the PARxCH library
functions will work.  Under Dos and Win95, the driver is provided as
an object file which is linked in at compile time.  


*** INSTALLING THE DRIVER ***

The easiest way to install the PARxCH kernel mode driver is to log in
as Administrator or root, change to the driver directory, and run the
provided indriver utility program or script.  First, run indriver with
no arguments to see a help screen listing valid driver names.  Then
run it again with one of those driver names.

If you see messages indicating that the PARxCH driver has been
installed and started, all is well and you are ready to begin running
applications.  Otherwise, check the trouble shooting hints listed
below.  Before running the indriver utility, we recommend that
Win2K/XP users check that interrupts are enabled on the underlying
parallel port driver as described in the trouble shooting area below.


*** REMOVING THE DRIVER ***

To remove the PARxCH driver, just log on as Administrator or root and
run the rmdriver utility program or script.  If the driver is
currently running, it will be stopped first and then removed.  Under
Linux, the driver is automatically removed when the machine is
rebooted.


*** RESTARTING THE DRIVER AFTER REBOOT ***

Once installed under WinNT or Win2K, the PARxCH driver will be
automatically re-started every time the machine is rebooted.  

Under Linux, if you want the PARxCH driver to be automatically
re-started every time the machine is rebooted, you must modify your
startup script so it reloads the driver.  For RedHat distributions,
the startup script file to change is /etc/rc.d/rc.local.  We recommend
using your favorite text editor to append the rclocal file provided in
the parxch/driver directory to the end of your startup script file.
You may also want to use the "chkconfig --level 2345 lpd off" command
from the command prompt one time to turn off the printer daemon so it
is not automatically restarted on each reboot.


*** RECOMPILING THE DRIVER ***

Source code is included for both the driver installation and removal
utilities, indriver and rmdriver, and the kernel mode device driver.

However, WinNT and Win2K users *MUST* have the Driver Development Kit
(DDK) installed to recompile the device driver.  

Also, Linux users *MUST* have the kernel source tree available to
recompile the device driver.  See the troubleshooting section below
for more information about installing the kernel source.

Note: The PARxCH device driver can be compiled with or without GPS
support.  To recompile with GPS support, you must have the PARGPS
software installed.  Then add USE_GPS="Yes" to the driver make or
nmake command line.  Or, from the top level, change the makeall file
GPS_YES_OR_NO value from "No" to "Yes" and run makeall.  With either
method, be sure to reinstall the driver once it has been recompiled.


*** SETTING THE DEFAULT XCH MODEL ***

The PARxCH family of 24 bit A/D boards includes several different
models such as the PAR1CH, PAR4CH, and PAR8CH.  Both the device driver
and the supplied application programs are designed to work with any
PARxCH model.  But they do need to know which model is being used.

The XchModel parameter is typically specified to the application
program from either the command line or an .ini file.  The application
program then passes the selected XchModel along when opening the
device driver.  If the XchModel parameter is NOT specified, then a
default value will be used.  

Under WinNT and Win2K/XP, the default XchModel is stored in the
registry and is set when driver\indriver.exe is run to install the
device driver.  The default XchModel can be reset later on with the
driver\setmodel.exe utility.

Under Linux, Win98, and MSDOS, the default XchModel is stored as an
environment variable of the form SrParXch378_ModelName=PAR4CH.  The
file driver/setmodel or driver\setmodel.bat can be used to set this
variable for the current window or shell.  But, it is better to set
this variable in a startup file so it can be accessed from all windows
and shells.  This step must be done manually.  For Linux, the best
file is ~/.bashrc or /etc/bashrc.  For Win98 and MSDOS, the best file
is autoexec.bat.





*** SAMPLE INSTALLATION COMMANDS ***

For WinNT and Win2K/XP, assuming the parxchkd.sys driver file is located
in \sr\parxch\driver and the A/D board connected to LPT1 at 0x378 is a
4 channel PAR4CH, your installation procedure would look like this:

> cd \sr\parxch\driver
> indriver SrParXch378 PAR4CH

Under Win2K/XP, if you will also be using the PARGPS driver, then run
the PARGPS indriver utility too.  For example:

> cd \sr\pargps\driver
> indriver SrParGps


For Linux, assuming the parxchkd.o driver file is located in
/usr/local/sr/parxch/driver and the A/D board connected to LPT1 at
0x378 is a 4 channel PAR4CH, your installation procedure would look
like this:

$ cd /usr/local/sr/parxch/driver
$ indriver SrParXch378 PAR4CH


If you will also be using the PARGPS driver, then run the PARGPS
indriver utility too.  For example:

> cd /usr/local/sr/pargps/driver
> indriver SrParGps


Similarly, you can remove the driver with the rmdriver utility
program like this:

> rmdriver SrParXch378


While the indriver utility program is provided to simplify device
driver installation, it is possible to do it by hand by following the
same steps.  This approach is described further below.




*** TROUBLESHOOTING HINTS ***

The most common reasons driver installation might fail are:

* The driver is already installed and started.

        Just begin running your applications.  Or, use rmdriver to
        stop and remove the current installation and run indriver
        again.  Or under Linux, if the driver was demand loaded, stop 
        all programs that access it and wait a few minutes for the
        kernel to autoclean the driver.


* The Win2K/XP parallel port driver (or its interrupt) is disabled.

        You will receive an error message referring to insufficient
        resources since, under Win2K/XP, the standard parallel class
        and port drivers provide required resources and services to
        the PARxCH driver.  So, they must be installed and enabled
        using the Device Manager before the PARxCH driver is loaded.
        The parallel port driver (parport.sys) is called Printer
        Printer Port or ECP Printer Port and is located in the Ports
        group while the parallel class driver (parallel.sys) is
        called Parallel Class Enumerator and is located in the
        System devices group.

        Typically, these drivers will already be loaded, but the
        Printer Port driver will have interrupts disabled.  To
        enable them, start the Device Manager, locate the Ports
        class, select the parallel port you will be using and bring
        up its properties dialog.  From the Port Settings tab,
        change the Filter Resource Method radio button to 'Use any
        interrupt assigned to the port' and click OK.  Then wait a
        minute while the driver is reinstalled with the new settings
        and the Device Manager listing refreshes.  Then try the PARxCH
        installation again.


* The driver parallel port address or irq conflicts with an existing device.

        You will receive an error message referring to insufficient
        resources.  After determining the conflicting device, either
        change the address for that device, or connect the PARxCH to
        another parallel port or irq. 

        Under Linux, this typically means that the lpd printer is
        running which prevents the PARxCH from gaining exclusive
        control of the parallel port.  You can check this by running
        "/sbin/lsmod" and looking for lpd and parport.  If they are
        listed, run "/sbin/service lpd stop" to stop the printer daemon
        and "/sbin/rmmod lp parport_pc parport" to remove the 
        conflicting printer drivers before installing the PARxCH driver.
	For 2.6 kernels, the /sbin/service command is not required.

        For 2.4 kernels, you may also want to use the 
	"chkconfig --level 2345 lpd off" command from the command
	prompt one time to permanently turn off the printer daemon so
	it is not restarted on each reboot.  After acquisition is
	finished and the PARxCH driver has been removed, you can use
	chkconfig and "/sbin/service lpd restart" to restart the
	printer daemon.

        If lpd is not the problem, you can run "cat /proc/ioports" to 
        see the list of currently allocated port addresses and determine 
        the conflicting device.  Run "cat /proc/interrupts" to see the
        list of currently allocated IRQ lines and determine the 
        conflicting device.


        Under Win2K/XP, check the Event Log and use the Device 
        Manager to determine the conflicting device.  When viewing
        "Devices by type" in the Device Manager, look for conflicting
        SR drivers under the "SR Instrumentation" group.  If this is
        the problem, we recommend using the rmdriver utility provided
        with the conflicting SR device to remove that driver.  Viewing
        "Resources by type" in the Device Manager may also be useful as 
        this makes it easy to determine which driver is using the IO or 
        IRQ you need.  From the Printers dialog, accessed by Start Menu > 
        Settings > Printers, you can check the properties of each printer.
        Look under the Ports tab to see if the printer is using the LPT 
        port needed by the PARxCH.

        Under WinNT, check the Event Log or the Windows NT
        Diagnostics dialog Resouces tab to determine the conflicting
        device.  From the command prompt type "eventvwr" for the
        Event Log or "winmsd" for the Diagnostics dialog.  Both can
        also be accessed from Start Menu > Programs > Administrative
        Tools.  Under WinNT, unlike Win2K, the standard parallel class 
        and port drivers must be **disabled** or they will compete for 
        resources with the PARxCH driver.


* The Windows driver is already installed, but has not been started yet.

        From the WinNT command prompt type "net start SrParXch378" to
        start the driver service and begin running your
        applications.  You can also use the Devices Applet from the
        Control Panel to start it by selecting the PARxCH A/D
        Device Driver from the Device list and clicking on the
        Start button.

        From the Win2K command prompt type "net start SrParXch378" to
        start the driver service and begin running your
        applications.  You can also use the Device Manager to start
        it.  First, from the View menu, turn on the Show hidden
        devices option so the Non-Plug and Play Drivers group
        containing the PARxCH A/D Device Driver is displayed.
        Select the PARxCH driver, choose Action > Properties,
        select the Driver Tab and click the Start button.


* The default Linux device node number of 123 is in use by another device.

        Add dev_major=### to the insmod command line in the indriver
        script.  Where ### is a number like 123 that is not in use.
        The suggested major numbers for local devices include the
        ranges 120-127 and 240-254 according to devices.txt in
        /usr/src/linux/Documentation.  If you are using the modprobe
        demand approach, you must edit the modules.conf file for the
        PARxCH so its "options" line includes dev_major=### and its
        "alias" line includes char-major-###.


* The driver was compiled for a different version of the Linux kernel.

        If your version of the kernel does not match the exact
        RedHat or Fedora release for which the PARxCH driver was
        compiled, you have two choices: 1) recompile the PARxCH
	driver or 2) force load it with modprobe.  We recommend
	recompiling the driver.  But, info about both methods is
	given below.

	Option 1)

	The best option is to recompile the PARxCH driver.  You can
	do this using the provided makefile.  First type "make clean", 
	then "make".  Once you have a new driver file (parxchkd.o for 
	2.4 kernels, SrParXch378.ko for 2.6 kernels), run indriver 
	as usual.

        The driver version provided on the CD is for a single
        processor i686 machine.  If you have a multi-processor machine,
        you must recompile the driver with the -D__SMP__ define.

	Note that you MUST have a populated kernel source tree available
	in order to recompile the PARxCH driver.  See the next answer
	for ways to get this.

        We will also make new versions available for download from our 
        web site www.symres.com.

	Option 2)

	If you choose to force load the driver, the PARxCH driver 
	(SrParXch378.ko) must first be copied to a subdirectory of
	the official modules directory.  This is typically something
	like /lib/modules/2.6.9-1.667, and we recommend using
	kernel/drivers/misc as the subdirectory.

	Next, run /sbin/depmod so the SrParXch378.ko driver is listed
	in the modules.dep file that shows how each module depends
	on other modules if any.

	Now edit the provided indriver script, replacing the line
	if ! /sbin/insmod ./$DriverName.ko \ 
	with
	if ! /sbin/modprobe --force-vermagic $DriverName \

	Now running indriver will use modprobe instead of insmod to
	install the driver and force the load of a driver with a
	mis-matched version string.  

	Of course, the version string is included to ensure the driver
	is completely compatible with the rest of the kernel. So, if
	you choose to force load the driver, be warned that something
	might break or not work correctly.


* The Linux kernel source is not installed.

        By default, the standard RedHat "Personal Desktop" installation 
        does not install the kernel source which is required for
        recompiling the parxch driver.  However, the kernel source can
        be easily added at a later time using the RedHat package manager.
        To access the package manager, select System Settings > Packages
        from the RedHat menu.  Scroll down to the Development section,
        select the Kernel Development check box, and click OK.  You must
        have root permission to use the package manager.  This will 
	install the kernel-source rpm package.

        You can verify that the kernel sources have been installed, by
        looking in the /usr/src directory for a subdirectory with a name
        like linux-2.4.18-14.

	For Fedora Core 3 which is based on a Linux 2.6 kernel, the
	procedure is somewhat different, since the kernel-source package
	no longer exists as a separate package.  Instead, the kernel
	sources are contained in the src.rpm for the standard kernel 
	package (for example kernel-2.6.9.src.rpm).

	To setup a 2.6 kernel source tree, use rpm to install the
	src package.  (for example, rpm -ivh kernel-2.6.9.src.rpm).  
	Then cd	/usr/src/redhat/SPECS and build the source tree
	using rpmbuild (for example 
        rpmbuild -bp --target=i386 kernel-2.6.spec).  The -bp option
	runs the %prep section of the spec file which normally unpacks
	the sources and applies patches.  The resulting source tree
	can be found in /usr/src/redhat/BUILD.

        The kernel source installation procedure and final location will
        be different for other Linux distributions.




*** MANUAL AND MODPROBE DEVICE DRIVER INSTALLATION ***

If you don't want to run indriver utility to install the PARxCH
device driver, you can do it manually.  For WinNT and Win2K, follow
the steps listed below.  

For Linux, the driver can be installed in two different fashions.  To
use the insmod method which immediately installs the device driver
just follow the steps listed in the indriver script.  To use the
modprobe method which installs the device driver on demand, follow
the steps listed further below.


Manual Installation Under WinNT or Win2K

First, use a registry editor to add the three keys shown below and
their associated values.  Then reboot the system so it automatically
installs the driver.  Finally, start the driver by typing "net start
SrParXch378" without the quotes at the Command Prompt or by using the
Devices dialog from the Control Panel (WinNT) or the Device Manager
(Win2K).  You must be logged on as Administrator to start the PARxCH
driver.

As Administrator, you can remove the PARxCH driver by typing "net
stop SrParXch378" to stop it and then using a registry editor to remove
the HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SrParXch378 key.
While you can also remove the ...\EventLog\System\SrParXch378 key, doing
so will make any existing PARxCH system log messages undecipherable
in the EventViewer.

Registry keys and values for PARxCH driver installation:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SrParXch378
DisplayName  = SrParXch378 A/D Device Driver
ErrorControl = 0x00000001
Group        = Data Acquisition Devices
ImagePath    = \??\C:\SR\PARXCH\DRIVER\parxchkd.sys
Start        = 0x00000002
Tag          = 0x00000001
Type         = 0x00000001

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SrParXch378\Parameters
DriverName = "SrParXch378"
PortAddress = 0x00000378
PortIrq = 0x00000007

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\System\SrParXch378
TypesSupported   = 0x00000007
EventMessageFile = C:\SR\PARXCH\DRIVER\parxchkd.sys;%SystemRoot%\System32\IoLogMsg.dll



Modprobe Installation Under Linux 2.4

First, log on as root and copy the device driver module parxchkd.o to
the misc subdirectory of the offical module directory.  For RedHat
distributions, this will be something like
/lib/modules/2.2.12-20/misc.  

Run /sbin/depmod to record that there are no dependencies on other
modules.  Add the following two lines to the modules.conf (or
conf.modules) file located in the /etc directory:

   alias char-major-123 parxchkd
   options parxchkd xch_name=SrParXch378 xch_address=0x378 xch_irq=7\
                                        xch_major=123 -o SrParXch378

Be sure to edit the address and name so they are appropriate for
your computer.

Finally, run the mkdevice script provided in the PARxCH driver
directory to generate a device file with the proper permissions.

Now the module is setup and ready for the kernel to load with modprobe
when ever it is requested.  You can force a request by running the
diagnostic program diag in the PARxCH diags directory.  You can run
/sbin/lsmod to verify that the driver has been loaded successfully and
check the /var/log/messages file for error information if has not.

When no applications are using the PARxCH driver, the kernel will
automatically unload it after a short period of inactivity.

Download Driver Pack

How To Update Drivers Manually

After your driver has been downloaded, follow these simple steps to install it.

  • Expand the archive file (if the download file is in zip or rar format).

  • If the expanded file has an .exe extension, double click it and follow the installation instructions.

  • Otherwise, open Device Manager by right-clicking the Start menu and selecting Device Manager.

  • Find the device and model you want to update in the device list.

  • Double-click on it to open the Properties dialog box.

  • From the Properties dialog box, select the Driver tab.

  • Click the Update Driver button, then follow the instructions.

Very important: You must reboot your system to ensure that any driver updates have taken effect.

For more help, visit our Driver Support section for step-by-step videos on how to install drivers for every file type.

server: web2, load: 1.27