* 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/<>/comedi/comedi.ko /lib/modules/<>/comedi/kcomedilib.ko /lib/modules/<>/comedi/<>.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 <> If your module dependencies are set up correctly, this will load 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