-Prerequisites:
- - a machine capable of compiling Linux modules
- - a correctly installed kernel source tree. Specifically,
- you need to have the file /usr/src/linux/.config and
- /usr/src/linux/include/linux/autoconf.h. If these are
- not present, you can create them by compiling a new
- kernel. Some distributions don't provide these by
- default.
- - a 2.0, 2.2, or 2.3 series kernel. Some development
- kernels may not work, since I don't keep very good
- track of them.
-
-Configure using 'make'. The first time you run make, it will take
-you through configuration options similar to compiling a linux
-kernel. If you need to run the configuration again, use 'make config'.
-
-Compile using 'make'. If this doesn't work, make sure you have the
-basic tools installed to compile. If you can successfully compile
-other things, consult the author, as he has probably made a mistake.
+* Linux source:
+
+In order to compile the Comedi modules, you will need to have
+a correctly configured Linux kernel source tree. The best
+way to get one is to download a tarball from kernel.org and
+compile your own kernel. Comedi should work with most 2.2,
+2.4, and 2.6 Linux kernels. 2.6.x kernels older than 2.6.6 are
+not supported. Support for 2.0.3x is not actively maintained,
+but it should work and bugs will be fixed as they are reported.
+
+You can also prepare a kernel source tree that matches
+the kernel you are currently running if you have its config file (in
+the Debian distibution the config files for the kernel-image packages
+are installed into the /boot directory). The following steps will
+(almost) set up your kernel sources correctly. You will also need
+write permission to the kernel source directory the first time you
+run comedi's configure script, so you might want to unpack the kernel
+source into a directory you own.
+
+1) Get a copy of the kernel source that matches the kernel you are
+ running. Unpack it and copy your kernel config file to '.config'
+ in the top directory of your kernel source.
+2) You might need to edit the file 'Makefile' in the kernel source.
+ At the top of the Makefile, the variable EXTRAVERSION is defined.
+ If necessary, change it to match your kernel (for example, if the command
+ 'uname -r' produces "2.4.16-386" then your EXTRAVERSION should be
+ set as 'EXTRAVERSION=-386'.
+3) Run 'make oldconfig' in your kernel source directory.
+4) Run 'make dep' (for 2.6 kernels, do a 'make modules_prepare' instead
+ or even better a full 'make') in the kernel source directory and
+ you are done.
+
+Red Hat users note: Kernel sources that are distributed with Red
+Hat Linux are not supported, because they are too heavily
+modified. However, there is some information in
+Documentation/comedi/redhat-notes on how to use Red Hat kernels.
+
+* RTAI support:
+
+If you want to use the real-time capabilities of Comedi with
+RTAI, you need to compile and install RTAI first. If you
+don't install the rtai kernel modules, you may get unresolved
+symbols when installing the comedi kernel modules.
+
+* RTLinux support:
+
+If you want to use the real-time capabilities of Comedi with
+RTLinux, you need to compile RTLinux (both the kernel and the
+modules) first. Known working versions are 2.x and 3.0.
+
+* Configuration:
+
+Configure with './configure'. './configure --help' will give the
+configuration options. If the configure script does not exist
+(if you checked comedi out from git for example), it can
+be generated by running './autogen.sh'. The autoconf, automake,
+autoheader, etc. tools are required to generate the configure
+script (automake version >= 1.7 recommended). The --with-linuxdir
+option is particularly useful, as it allows you to specify
+the location of your Linux kernel source directory. If
+you are using an RT-patched kernel, the --with-rtaidir or
+--with-rtlinuxdir options allow you to specify
+the location of your RTAI or RTLinux source directory.
+
+* Compiling:
+
+Compile using 'make'. If this fails for some reason, send the
+_entire_ build log to the mailing list. Without the build
+log, it is impossible to find problems.
+
+* Installation:
Install using 'make install' as root. This installs the files:
- /lib/modules/<<kernel version>>/misc/comedi.o
- /lib/modules/<<kernel version>>/misc/kcomedilib.o
- /lib/modules/<<kernel version>>/misc/<<driver files>>.o
- /usr/sbin/comedi_config
- /usr/include/comedi.h
-If you chose to install in /usr/local instead, it will, of course,
-install in /usr/local instead of /usr. The modules are still installed
-in /lib/modules.
-
-You need to create device files to access the hardware from a
-user process. These can be created using 'make dev'. The following
-special files will be created:
- /dev/comedi0
- /dev/comedi1
- /dev/comedi2
- /dev/comedi3
-
-To use comedi, the driver module must be loaded into the kernel.
-In general, this is done by a command similar to
-
- /sbin/modprobe <<driver>>.o
+
+ /lib/modules/<<kernel version>>/comedi/comedi.ko
+ /lib/modules/<<kernel version>>/comedi/kcomedilib.ko
+ /lib/modules/<<kernel version>>/comedi/<<driver files>>.ko
+
+Comedi communicates with userspace via device files (/dev/comedi*).
+If you have devices which are able to auto-configure themselves and
+you've got udev support these devices are created automatically. You
+can disable this mechanism by setting the module parameter
+comedi_autoconfig to zero of the module "comedi_fops". In case you
+have got an old ISA card or no udev support (embedded systems) you can
+create static devices with the module parameter
+comedi_num_legacy_minors by setting it to the number of desired static
+/dev/comedi* devices. You can then configure your device from the
+userspace with comedi_config. In this case you need to create device
+files to access the hardware by hand from a user process. These can
+be created using 'make dev'. The following special files will be
+created:
+
+ /dev/comedi0
+ /dev/comedi1
+ /dev/comedi2
+ ...
+ /dev/comedi15
+
+* Comedilib:
+
+Now would be a good time to compile and install Comedilib. Comedi
+and Comedilib are completely independent, so it doesn't matter
+which is installed first.
+
+* Running Comedi:
+
+To use comedi, the driver module and the core Comedi modules must
+be loaded into the kernel. This is done by a command similar to
+
+ /sbin/modprobe <<driver>>
If your module dependencies are set up correctly, this will load
-both comedi.o and your driver. See the man pages for modprobe
-and insmod for more details.
-
-The default behavior when the module is loaded is to _not_ configure
-it automatically, i.e., you have a device file (/dev/comedi0) associated
-with a driver, but the driver is not associated with a device. To
-associate a device file/driver with a device, you need to run the
-command /usr/sbin/comedi_config, and supply additional information,
-such as I/O address, IRQ, and possibly DMA channels. The following
-commands are examples:
-
- /usr/sbin/comedi_config /dev/comedi0 dt282x 0x240,3
- /usr/sbin/comedi_config /dev/comedi1 atmio-E 0x260,4
- /usr/sbin/comedi_config /dev/comedi2 dt2817 0x228
- /usr/sbin/comedi_config /dev/comedi0 pcimio-E
+both comedi.ko and your driver. If you get unresolved symbols, check
+the FAQ or the mailing list archives. Also look at the man pages
+for modprobe and insmod.
+
+In order to configure a driver module to use a particular device
+file (/dev/comediN) and a particular device, you need to use the
+command 'comedi_config', which is part of the comedilib
+distribution. Comedi_config is invoked using
+
+ comedi_config /dev/comedi0 <device name> <option list>
+
+The device name may or may not be the same as the module name. In
+general, if the device type can be autoprobed (as with ISA PnP or
+PCI devices), the device name will be the same as the module name.
+Otherwise, you will need to check Documentation/comedi/drivers.txt
+for information about what device name is appropriate for your
+hardware. The option list is to supply additional information,
+such as I/O address, IRQ, DMA channels, and other jumper settings.
+Information about option lists appropriate for a driver is in
+drivers.txt. The following commands are examples:
+
+ comedi_config /dev/comedi0 dt2821 0x240,3
+ comedi_config /dev/comedi1 ni_atmio 0x260,4
+ comedi_config /dev/comedi2 dt2817 0x228
+ comedi_config /dev/comedi3 ni_pcimio
Try a 'man comedi_config' for information on how to use
-this utility. The options (numbers at the end, above) have
-different meanings for different drivers, and you should consult
-the file Documentation/comedi/drivers.txt for details about
-each driver. Scripts have been written for a few of the drivers
-with very complicated command lists -- these are found in the etc
+this utility. Scripts have been written for a few of the drivers
+with very complicated option lists -- these are found in the etc
directory.
-If you like to autoload your modules, put the lines
+* Module Autoloading:
+
+For recent kernels, module autoloading is handled by udev. The
+following is only applicable to older kernels.
- alias char-major-98 comedi
- alias char-major-98-0 your_driver
- post-install your_driver /usr/sbin/comedi_config /dev/comedi0 your_driver <<options>>
+If you like to autoload your modules, put the following lines
+into /etc/modules.conf (this does not apply for PCMCIA cards):
+
+ alias char-major-98 comedi
+ alias char-major-98-0 your_driver
+ post-install your_driver PATH=/sbin:/usr/sbin:/usr/local/sbin:$PATH;comedi_config /dev/comedi0 board_name <<options>>
Alternatively, for complicated option lists, the scripts in etc
are designed to be copied into /etc, so that you could put the
following lines into /etc/conf.modules:
- alias char-major-98-0 dt282x
- post-install dt282x /etc/dt282x.conf
+ alias char-major-98-0 dt282x
+ post-install dt282x /etc/dt282x.conf
+
+* Calibration:
-If you have a National Instruments AT-MIO or PCI-MIO board, you probably
-will want to run comedi_calibrate, an autocalibration tool that is part
-of comedilib in a bootup script.
+If your board has self-calibration capabilities,
+will want to run comedi_calibrate, an autocalibration tool that
+is packaged in a seperate tarball, in a bootup script.
-To write programs that use comedi, there are demo programs included
-with comedilib.
+* PCMCIA:
+The PCMCIA drivers require at least a 2.6.16 kernel (at for
+unpatched mainline kernels). You must also have pcmciautils
+and udev installed. You can write a udev rule to automatically
+run gpib_config after the driver is loaded.
-Upgrading:
+* Upgrading:
From versions prior to 0.6.0, you will need to edit and recompile
all programs that use comedi or comedilib, since the names of