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