====== Comedi - The Linux Control and Measurement Device Interface ====== [[http://www.comedi.org|Comedi]] provides a common Linux interface to certain DAQ hardware, \\ typical PCI digital and analog I/O cards and is actively developed since 1998. It consists of * Linux drivers * Comedilib * Kcomedilib ==== Drivers ==== The newest sources for the Comedi and driver modules\\ are available from the official Git repository. git clone git://comedi.org/git/comedi/comedilib.git Use //autotools// to generate the //configure// script ./autogen.sh To display all available options ./configure --help [The following assumes you're in a maintenance chroot and are\\ installing the modules directly to the diskless system.\\ If you want to build and install the drivers to a different \\ directory, for example '/srv/diskless/fec/arch/L866_64/lib//'\\ you have to specify --with-modulesdir=] Assembling the Makefile for 64-bit Linux 3.10.82-rt89 with RT preempt patch ./configure --with-rtlinuxdir=/usr/src/kernels/3.10.82-rt89 \ --with-kernel-release=3.10.82-rt89 --with-rpm-target=x86_64 Compiling make Installing make install This will install the modules to /lib/modules//... where kernel-version is 3.10.82-rt89 in this example. === Linux In-Tree Comedi Support === Comedi and available drivers are also integrated into the Linux kernel \\ since 2.6.30, located in the experimental staging tree.\\ This might be the best choice unless the kernel version of choice\\ lacks required hardware support or contains bugs stopping its use.\\ In that case we should use the out-of-tree Git version as described above.\\ To enable Comedi and build the //comedi// module, setup the \\ kernel configuration as follows: Device Drivers [*] Staging drivers [*] Data acquisition support This ensures the built of the comedi module only.\\ To actually make use of the supported hardware,\\ the comedi //driver(s)// need to be set to build.\\ Taking the [[ds:io_addi_data_cards|ADDI-DATA I/O PCI card 1648]] for example,\\ activate the //Comedi PCI drivers// section and set the appropriate driver. Comedi PCI drivers [*] ADDI-DATA APCI_16xx support This will built the driver module addi_apci_16xx,\\ which depends on the comedi module. \\ When loaded, lsmod shows something like: comedi 46649 1 addi_apci_16xx Every device gets a separate //comedi[0-9]+// node in the device tree.\\ Assuming only one card in this example crw-rw---- 1 root root 98, 0 Aug 4 2015 /dev/comedi0 To access the device, use the library Comedilib for user-space applications\\ or Kcomedilib for real-time kernel modules making use of Comedi hardware. ==== Comedilib ==== Comedilib needs to be installed manually either via \\ the latest stable release tarball from the Comedi page wget http://www.comedi.org/download/comedilib-0.10.2.tar.gz (At time of writing 0.10.2 was the latest stable release) or by checking in out from the Git repository git clone git://comedi.org/git/comedi/comedi.git The Git checkout requires to generate the //configure// script using //autotools// ./autogen.sh Hint: Depending on the autotools version, it might be required to delete or comment the AM_PROG_AR macro in configure.ac! To display all available options ./configure --help Afterwards compile and install it via make make install Once the drivers are properly loaded\\ an overview of all supported Comedi devices\\ can be received from > comedi_board_info overall info: version code: 0x00074c driver name: addi_apci_16xx board name: apci1696 number of subdevices: 3 subdevice 0: type: 5 (digital I/O) flags: 0x00030000 number of channels: 32 max data value: 1 ranges: all chans: [0,5] command: not supported subdevice 1: type: 5 (digital I/O) flags: 0x00030000 number of channels: 32 max data value: 1 ranges: all chans: [0,5] command: not supported subdevice 2: type: 5 (digital I/O) flags: 0x00030000 number of channels: 32 max data value: 1 ranges: all chans: [0,5] command: not supported ==== Kcomedilib ==== Kcomedilib provides the Comedilib interface to the kernel space.\\ This is useful when writing real-time kernel modules that need\\ access to Comedi devices. The //kcomedilib// module is automatically built with the external\\ comedi package (see above). The intree version requires manual\\ setting of the appropriate kernel config under "Comedi misc drivers". ==== Resources ===== === Comedi Webpage === http:%%//%%comedi.org \\ === Git Targets === git:%%//%%comedi.org/git/comedi/comedi.git \\ git:%%//%%comedi.org/git/comedi/comedilib.git