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 and
-2.4 Linux kernels. Support for 2.0.3x is not actively maintained,
+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
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 'make config', so you might want to unpack the kernel
+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
'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' in the kernel source directory and you are done.
+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
* RTAI support:
If you want to use the real-time capabilities of Comedi with
-RTAI, you need to compile and install RTAI first. It is
-necessary to use the rthal patch instead of the "copyto"
-scripts. Known working versions are RTAI-1.6, RTAI-24.1.4,
-and current RTAI CVS. Remember to enable Kcomedilib support,
-since you will be accessing Comedi from other kernel modules.
+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.
-Remember to enable Kcomedilib support, since you will be
-accessing Comedi from other kernel modules.
* Configuration:
-Configure using 'make'. This will ask you the location of the
-Linux kernel source tree. If it detects that you have a kernel
-patched for RTAI or RTLinux, it will also ask you for the location
-of the RTAI or RTLinux source directory. Then the configuration
-script will ask questions for a couple general Comedi features
-and then whether or not compile each driver.
+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:
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
-
-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:
+ /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/comedi3
+ ...
+ /dev/comedi15
* Comedilib:
/sbin/modprobe <<driver>>
If your module dependencies are set up correctly, this will load
-both comedi.o and your driver. If you get unresolved symbols, check
+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.
* Module Autoloading:
+For recent kernels, module autoloading is handled by udev. The
+following is only applicable to older kernels.
+
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-0 dt282x
post-install dt282x /etc/dt282x.conf
-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.
+* Calibration:
+
+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.
* PCMCIA:
-Linux-2.4 kernels are recommended for PCMCIA drivers, since 2.2
-kernel require the separate PCMCIA package. It is possible to
-use 2.2 kernels with PCMCIA, although it is necessary to modify
-the top level Makefile.
-
-Comedi works with several PCMCIA cards, and the driver modules can
-be loaded and unloaded upon insertion and removal of the card.
-The necessary configuration files are in the Comedilib source
-package. Copy the files in etc/pcmcia/ to /etc/pcmcia and restart
-card services. The pcmcia script provided is very simple -- it only
-uses /dev/comedi0 for devices, which is a limitation if you have
-other Comedi devices in your system.
+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: