2 Description: generic 8255 support
3 Devices: [standard] 8255 (8255)
6 Updated: Fri, 7 Jun 2002 12:56:45 -0700
8 The classic in digital I/O. The 8255 appears in Comedi as a single
9 digital I/O subdevice with 24 channels. The channel 0 corresponds
10 to the 8255's port A, bit 0; channel 23 corresponds to port C, bit
11 7. Direction configuration is done in blocks, with channels 0-7,
12 8-15, 16-19, and 20-23 making up the 4 blocks. The only 8255 mode
15 You should enable compilation this driver if you plan to use a board
16 that has an 8255 chip. For multifunction boards, the main driver will
17 configure the 8255 subdevice automatically.
19 This driver also works independently with ISA and PCI cards that
20 directly map the 8255 registers to I/O ports, including cards with
21 multiple 8255 chips. To configure the driver for such a card, the
22 option list should be a list of the I/O port bases for each of the
23 8255 chips. For example,
25 comedi_config /dev/comedi0 8255 0x200,0x204,0x208,0x20c
27 Note that most PCI 8255 boards do NOT work with this driver, and
28 need a separate driver as a wrapper. For those that do work, the
29 I/O port base address can be found in the output of 'lspci -v'.
35 Description: Adlink NuDAQ ACL-7225b & compatibles
36 Author: José Luis Sánchez (jsanchezv@teleline.es)
38 Devices: [Adlink] ACL-7225b (acl7225b), [ICP] P16R16DIO (p16r16dio)
43 Description: ADLink PCI-6208A
44 Devices: [ADLink] PCI-6208A (adl_pci6208)
45 Author: nsyeow <nsyeow@pd.jaring.my>
46 Updated: Fri, 30 Jan 2004 14:44:27 +0800
49 Configuration Options:
54 - adl_pci9111.c copied the entire pci setup section
60 Description: Driver for the Adlink PCI-7296 96 ch. digital io board
61 Devices: [ADLink] PCI-7296 (pci7296)
62 Author: Jon Grierson <jd@renko.co.uk>
66 Configuration Options:
72 Description: Driver for the Adlink PCI-7432 64 ch. isolated digital io board
73 Devices: [ADLink] PCI-7432 (pci7432)
74 Author: Michel Lachaine <mike@mikelachaine.ca>
77 Configuration Options:
83 Description: Driver for the Adlink PCI-8164 4 Axes Motion Control board
84 Devices: [ADLink] PCI-8164 (pci8164)
85 Author: Michel Lachaine <mike@mikelachaine.ca>
88 Configuration Options:
94 Description: Adlink PCI-9111HR
95 Author: Emmanuel Pacaud <emmanuel.pacaud@univ-poitiers.fr>
96 Devices: [ADLink] PCI-9111HR (adl_pci9111)
105 - ai_do_cmd mode with the following sources:
108 - scan_begin_src TRIG_FOLLOW TRIG_TIMER TRIG_EXT
109 - convert_src TRIG_TIMER TRIG_EXT
110 - scan_end_src TRIG_COUNT
111 - stop_src TRIG_COUNT TRIG_NONE
113 The scanned channels must be consecutive and start from 0. They must
114 all have the same range and aref.
116 Configuration options:
118 [0] - PCI bus number (optional)
119 [1] - PCI slot number (optional)
121 If bus/slot is not specified, the first available PCI
128 Description: Adlink PCI-9118DG, PCI-9118HG, PCI-9118HR
129 Author: Michal Dobes <dobes@tesnet.cz>
130 Devices: [ADLink] PCI-9118DG (pci9118dg), PCI-9118HG (pci9118hg),
131 PCI-9118HR (pci9118hr)
134 This driver supports AI, AO, DI and DO subdevices.
135 AI subdevice supports cmd and insn interface,
136 other subdevices support only insn interface.
138 - If cmd->scan_begin_src=TRIG_EXT then trigger input is TGIN (pin 46).
139 - If cmd->convert_src=TRIG_EXT then trigger input is EXTTRG (pin 44).
140 - If cmd->start_src/stop_src=TRIG_EXT then trigger input is TGIN (pin 46).
141 - It is not neccessary to have cmd.scan_end_arg=cmd.chanlist_len but
142 cmd.scan_end_arg modulo cmd.chanlist_len must by 0.
143 - If return value of cmdtest is 5 then you've bad channel list
144 (it isn't possible mixture S.E. and DIFF inputs or bipolar and unipolar
147 There are some hardware limitations:
148 a) You cann't use mixture of unipolar/bipoar ranges or differencial/single
150 b) DMA transfers must have the length aligned to two samples (32 bit),
151 so there is some problems if cmd->chanlist_len is odd. This driver tries
152 bypass this with adding one sample to the end of the every scan and discard
153 it on output but this cann't be used if cmd->scan_begin_src=TRIG_FOLLOW
154 and is used flag TRIG_WAKE_EOS, then driver switch to interrupt driven mode
155 with interrupt after every sample.
156 c) If isn't used DMA then you can use only mode where
157 cmd->scan_begin_src=TRIG_FOLLOW.
159 Configuration options:
160 [0] - PCI bus of device (optional)
161 [1] - PCI slot of device (optional)
162 If bus/slot is not specified, then first available PCI
164 [2] - 0= standard 8 DIFF/16 SE channels configuration
165 n= external multiplexer connected, 1<=n<=256
166 [3] - 0=autoselect DMA or EOC interrupts operation
168 3=disable DMA and INT, only insn interface will work
169 [4] - sample&hold signal - card can generate signal for external S&H board
170 0=use SSHO (pin 45) signal is generated in onboard hardware S&H logic
171 0!=use ADCHN7 (pin 23) signal is generated from driver, number
172 say how long delay is requested in ns and sign polarity of the hold
173 (in this case external multiplexor can serve only 128 channels)
174 [5] - 0=stop measure on all hardware errors
175 2|=ignore ADOR - A/D Overrun status
176 8|=ignore Bover - A/D Burst Mode Overrun status
177 256|=ignore nFull - A/D FIFO Full status
183 Description: driver for MicroAxial ADQ12-B data acquisition and control card
184 Devices: [MicroAxial] ADQ12-B (adq12b)
185 Author: jeremy theler <thelerg@ib.cnea.gov.ar>
186 Updated: Thu, 21 Feb 2008 02:56:27 -0300
189 Driver for the acquisition card ADQ12-B (without any add-on).
191 - Analog input is subdevice 0 (16 channels single-ended or 8 differential)
192 - Digital input is subdevice 1 (5 channels)
193 - Digital output is subdevice 1 (8 channels)
194 - The PACER is not supported in this version
196 If you do not specify any options, they will default to
198 # comedi_config /dev/comedi0 adq12b 0x300,0,0
200 option 1: I/O base address. The following table is provided as a help
201 of the hardware jumpers.
204 0x300 1 (factory default)
211 option 2: unipolar/bipolar ADC selection: 0 -> bipolar, 1 -> unipolar
213 selection comedi_config option JUB
214 bipolar 0 2-3 (factory default)
217 option 3: single-ended/differential AI selection: 0 -> SE, 1 -> differential
219 selection comedi_config option JCHA JCHB
220 single-ended 0 1-2 1-2 (factory default)
221 differential 1 2-3 2-3
224 written by jeremy theler <thelerg@ib.cnea.gov.ar>
227 comision nacional de energia atomica
228 universidad nacional de cuyo
232 + changed supported devices string (missused the [] and ())
242 Description: Advantech PCI-1710, PCI-1710HG, PCI-1711, PCI-1713,
243 Advantech PCI-1720, PCI-1731
244 Author: Michal Dobes <dobes@tesnet.cz>
245 Devices: [Advantech] PCI-1710 (pci1710), PCI-1710HG (pci1710hg),
246 PCI-1711 (pci1711), PCI-1713 (pci1713), PCI-1720 (pci1720),
250 This driver supports AI, AO, DI and DO subdevices.
251 AI subdevice supports cmd and insn interface,
252 other subdevices support only insn interface.
254 The PCI-1710 and PCI-1710HG have the same PCI device ID, so the
255 driver cannot distinguish between them, as would be normal for a
258 Configuration options:
259 [0] - PCI bus of device (optional)
260 [1] - PCI slot of device (optional)
261 If bus/slot is not specified, the first available PCI
267 Description: Advantech PCI-1730, PCI-1733, PCI-1734, PCI-1750, PCI-1751,
268 PCI-1752, PCI-1753/E, PCI-1754, PCI-1756, PCI-1762
269 Author: Michal Dobes <dobes@tesnet.cz>
270 Devices: [Advantech] PCI-1730 (pci1730), PCI-1733 (pci1733),
271 PCI-1734 (pci1734), PCI-1750 (pci1750), PCI-1751 (pci1751),
272 PCI-1752 (pci1752), PCI-1753 (pci1753), PCI-1753+PCI-1753E (pci1753e),
273 PCI-1754 (pci1754), PCI-1756 (pci1756), PCI-1760(pci1760),
278 This driver supports now only insn interface for DI/DO/DIO.
280 Configuration options:
281 [0] - PCI bus of device (optional)
282 [1] - PCI slot of device (optional)
283 If bus/slot is not specified, the first available PCI
290 Description: Acces I/O Products PC-104 AIO12-8 Analog I/O Board
291 Author: Pablo Mejia <pablo.mejia@cctechnol.com>
293 [Acces I/O] PC-104 AIO12-8
296 Configuration Options:
297 [0] - I/O port base address
301 Only synchronous operations are supported.
307 Description: Acces I/O Products PC-104 IIRO16 Relay And Isolated Input Board
308 Author: Zachary Ware <zach.ware@cctechnol.com>
310 [Acces I/O] PC-104 AIO12-8
313 Configuration Options:
314 [0] - I/O port base address
320 Description: Amplicon 200 Series Digital I/O
321 Author: Ian Abbott <abbotti@mev.co.uk>
322 Devices: [Amplicon] PC212E (pc212e), PC214E (pc214e), PC215E (pc215e),
323 PCI215 (pci215), PC218E (pc218e), PC272E (pc272e), PCI272 (pci272)
324 Updated: Mon, 05 Nov 2007 14:04:04 +0000
327 Configuration options - PC212E, PC214E, PC215E, PC218E, PC272E:
328 [0] - I/O port base address
329 [1] - IRQ (optional, but commands won't work without it)
331 Configuration options - PCI215, PCI272:
332 [0] - PCI bus of device (optional)
333 [1] - PCI slot of device (optional)
334 If bus/slot is not specified, the first available PCI device will
337 Passing a zero for an option is the same as leaving it unspecified.
341 PC218E PC212E PC215E/PCI215
342 ------------- ------------- -------------
345 1 CTR-X2 CTR-Y1 PPI-Y
346 2 CTR-Y1 CTR-Y2 CTR-Z1
347 3 CTR-Y2 CTR-Z1 CTR-Z2
348 4 CTR-Z1 CTR-Z2 INTERRUPT
353 ------------- -------------
358 3 INTERRUPT* INTERRUPT
360 Each PPI is a 8255 chip providing 24 DIO channels. The DIO channels
361 are configurable as inputs or outputs in four groups:
363 Port A - channels 0 to 7
364 Port B - channels 8 to 15
365 Port CL - channels 16 to 19
366 Port CH - channels 20 to 23
368 Only mode 0 of the 8255 chips is supported.
370 Each CTR is a 8254 chip providing 3 16-bit counter channels. Each
371 channel is configured individually with INSN_CONFIG instructions. The
372 specific type of configuration instruction is specified in data[0].
373 Some configuration instructions expect an additional parameter in
374 data[1]; others return a value in data[1]. The following configuration
375 instructions are supported:
377 INSN_CONFIG_SET_COUNTER_MODE. Sets the counter channel's mode and
378 BCD/binary setting specified in data[1].
380 INSN_CONFIG_8254_READ_STATUS. Reads the status register value for the
381 counter channel into data[1].
383 INSN_CONFIG_SET_CLOCK_SRC. Sets the counter channel's clock source as
384 specified in data[1] (this is a hardware-specific value). Not
385 supported on PC214E. For the other boards, valid clock sources are
388 0. CLK n, the counter channel's dedicated CLK input from the SK1
389 connector. (N.B. for other values, the counter channel's CLKn
390 pin on the SK1 connector is an output!)
391 1. Internal 10 MHz clock.
392 2. Internal 1 MHz clock.
393 3. Internal 100 kHz clock.
394 4. Internal 10 kHz clock.
395 5. Internal 1 kHz clock.
396 6. OUT n-1, the output of counter channel n-1 (see note 1 below).
397 7. Ext Clock, the counter chip's dedicated Ext Clock input from
398 the SK1 connector. This pin is shared by all three counter
399 channels on the chip.
401 INSN_CONFIG_GET_CLOCK_SRC. Returns the counter channel's current
402 clock source in data[1]. For internal clock sources, data[2] is set
405 INSN_CONFIG_SET_GATE_SRC. Sets the counter channel's gate source as
406 specified in data[2] (this is a hardware-specific value). Not
407 supported on PC214E. For the other boards, valid gate sources are 0
410 0. VCC (internal +5V d.c.), i.e. gate permanently enabled.
411 1. GND (internal 0V d.c.), i.e. gate permanently disabled.
412 2. GAT n, the counter channel's dedicated GAT input from the SK1
413 connector. (N.B. for other values, the counter channel's GATn
414 pin on the SK1 connector is an output!)
415 3. /OUT n-2, the inverted output of counter channel n-2 (see note
422 INSN_CONFIG_GET_GATE_SRC. Returns the counter channel's current gate
425 Clock and gate interconnection notes:
427 1. Clock source OUT n-1 is the output of the preceding channel on the
428 same counter subdevice if n > 0, or the output of channel 2 on the
429 preceding counter subdevice (see note 3) if n = 0.
431 2. Gate source /OUT n-2 is the inverted output of channel 0 on the
432 same counter subdevice if n = 2, or the inverted output of channel n+1
433 on the preceding counter subdevice (see note 3) if n < 2.
435 3. The counter subdevices are connected in a ring, so the highest
436 counter subdevice precedes the lowest.
438 The 'INTERRUPT' subdevice pretends to be a digital input subdevice. The
439 digital inputs come from the interrupt status register. The number of
440 channels matches the number of interrupt sources. The PC214E does not
441 have an interrupt status register; see notes on 'INTERRUPT SOURCES'
446 PC218E PC212E PC215E/PCI215
447 ------------- ------------- -------------
449 0 CTR-X1-OUT PPI-X-C0 PPI-X-C0
450 1 CTR-X2-OUT PPI-X-C3 PPI-X-C3
451 2 CTR-Y1-OUT CTR-Y1-OUT PPI-Y-C0
452 3 CTR-Y2-OUT CTR-Y2-OUT PPI-Y-C3
453 4 CTR-Z1-OUT CTR-Z1-OUT CTR-Z1-OUT
454 5 CTR-Z2-OUT CTR-Z2-OUT CTR-Z2-OUT
457 ------------- -------------
466 When an interrupt source is enabled in the interrupt source enable
467 register, a rising edge on the source signal latches the corresponding
468 bit to 1 in the interrupt status register.
470 When the interrupt status register value as a whole (actually, just the
471 6 least significant bits) goes from zero to non-zero, the board will
472 generate an interrupt. For level-triggered hardware interrupts (PCI
473 card), the interrupt will remain asserted until the interrupt status
474 register is cleared to zero. For edge-triggered hardware interrupts
475 (ISA card), no further interrupts will occur until the interrupt status
476 register is cleared to zero. To clear a bit to zero in the interrupt
477 status register, the corresponding interrupt source must be disabled
478 in the interrupt source enable register (there is no separate interrupt
481 The PC214E does not have an interrupt source enable register or an
482 interrupt status register; its 'INTERRUPT' subdevice has a single
483 channel and its interrupt source is selected by the position of jumper
488 The driver supports a read streaming acquisition command on the
489 'INTERRUPT' subdevice. The channel list selects the interrupt sources
490 to be enabled. All channels will be sampled together (convert_src ==
491 TRIG_NOW). The scan begins a short time after the hardware interrupt
492 occurs, subject to interrupt latencies (scan_begin_src == TRIG_EXT,
493 scan_begin_arg == 0). The value read from the interrupt status register
494 is packed into a sampl_t value, one bit per requested channel, in the
495 order they appear in the channel list.
500 Description: Amplicon PC36AT, PCI236
501 Author: Ian Abbott <abbotti@mev.co.uk>
502 Devices: [Amplicon] PC36AT (pc36at), PCI236 (pci236)
503 Updated: Fri, 23 Aug 2002 11:41:11 +0100
506 Configuration options - PC36AT:
507 [0] - I/O port base address
510 Configuration options - PCI236:
511 [0] - PCI bus of device (optional)
512 [1] - PCI slot of device (optional)
513 If bus/slot is not specified, the first available PCI device will be
516 The PC36AT ISA board and PCI236 PCI board have a single 8255 appearing
519 Subdevice 1 pretends to be a digital input device, but it always returns
520 0 when read. However, if you run a command with scan_begin_src=TRIG_EXT,
521 a rising edge on port C bit 7 acts as an external trigger, which can be
522 used to wake up tasks. This is like the comedi_parport device, but the
523 only way to physically disable the interrupt on the PC36AT is to remove
524 the IRQ jumper. If no interrupt is connected, then subdevice 1 is
530 Description: Amplicon PC263, PCI263
531 Author: Ian Abbott <abbotti@mev.co.uk>
532 Devices: [Amplicon] PC263 (pc263), PCI263 (pci263)
533 Updated: Tue, 20 Aug 2002 11:41:01 +0100
536 Configuration options - PC263:
537 [0] - I/O port base address
539 Configuration options - PCI263:
540 [0] - PCI bus of device (optional)
541 [1] - PCI slot of device (optional)
542 If bus/slot is not specified, the first available PCI device will be
545 Each board appears as one subdevice, with 16 digital outputs, each
546 connected to a reed-relay. Relay contacts are closed when output is 1.
547 The state of the outputs can be read.
552 Description: Amplicon PCI224, PCI234
553 Author: Ian Abbott <abbotti@mev.co.uk>
554 Devices: [Amplicon] PCI224 (pci224), PCI234 (pci234)
555 Updated: Thu, 24 Feb 2005 12:29:26 +0000
556 Status: works, but see caveats
561 - ao_do_cmd mode with the following sources:
563 - start_src TRIG_INT TRIG_EXT
564 - scan_begin_src TRIG_TIMER TRIG_EXT
565 - convert_src TRIG_NOW
566 - scan_end_src TRIG_COUNT
567 - stop_src TRIG_COUNT TRIG_EXT TRIG_NONE
569 The channel list must contain at least one channel with no repeated
570 channels. The scan end count must equal the number of channels in
573 There is only one external trigger source so only one of start_src,
574 scan_begin_src or stop_src may use TRIG_EXT.
576 Configuration options - PCI224:
577 [0] - PCI bus of device (optional).
578 [1] - PCI slot of device (optional).
579 If bus/slot is not specified, the first available PCI device
581 [2] - Select available ranges according to jumper LK1. All channels
582 are set to the same range:
583 0=Jumper position 1-2 (factory default), 4 software-selectable
584 internal voltage references, giving 4 bipolar and 4 unipolar
586 [-10V,+10V], [-5V,+5V], [-2.5V,+2.5V], [-1.25V,+1.25V],
587 [0,+10V], [0,+5V], [0,+2.5V], [0,1.25V].
588 1=Jumper position 2-3, 1 external voltage reference, giving
589 1 bipolar and 1 unipolar range:
590 [-Vext,+Vext], [0,+Vext].
592 Configuration options - PCI234:
593 [0] - PCI bus of device (optional).
594 [1] - PCI slot of device (optional).
595 If bus/slot is not specified, the first available PCI device
597 [2] - Select internal or external voltage reference according to
598 jumper LK1. This affects all channels:
599 0=Jumper position 1-2 (factory default), Vref=5V internal.
600 1=Jumper position 2-3, Vref=Vext external.
601 [3] - Select channel 0 range according to jumper LK2:
602 0=Jumper position 2-3 (factory default), range [-2*Vref,+2*Vref]
603 (10V bipolar when options[2]=0).
604 1=Jumper position 1-2, range [-Vref,+Vref]
605 (5V bipolar when options[2]=0).
606 [4] - Select channel 1 range according to jumper LK3: cf. options[3].
607 [5] - Select channel 2 range according to jumper LK4: cf. options[3].
608 [6] - Select channel 3 range according to jumper LK5: cf. options[3].
610 Passing a zero for an option is the same as leaving it unspecified.
614 1) All channels on the PCI224 share the same range. Any change to the
615 range as a result of insn_write or a streaming command will affect
616 the output voltages of all channels, including those not specified
617 by the instruction or command.
619 2) For the analog output command, the first scan may be triggered
620 falsely at the start of acquisition. This occurs when the DAC scan
621 trigger source is switched from 'none' to 'timer' (scan_begin_src =
622 TRIG_TIMER) or 'external' (scan_begin_src == TRIG_EXT) at the start
623 of acquisition and the trigger source is at logic level 1 at the
624 time of the switch. This is very likely for TRIG_TIMER. For
625 TRIG_EXT, it depends on the state of the external line and whether
626 the CR_INVERT flag has been set. The remaining scans are triggered
632 Description: Amplicon PCI230, PCI260 Multifunction I/O boards
633 Author: Allan Willcox <allanwillcox@ozemail.com.au>,
634 Steve D Sharples <steve.sharples@nottingham.ac.uk>,
635 Ian Abbott <abbotti@mev.co.uk>
636 Updated: Mon, 03 Dec 2007 17:11:47 +0000
637 Devices: [Amplicon] PCI230 (pci230 or amplc_pci230), PCI230+ (pci230+),
638 PCI260 (pci260 or amplc_pci230), PCI260+ (pci260+)
641 Configuration options:
642 [0] - PCI bus of device (optional).
643 [1] - PCI slot of device (optional).
644 If bus/slot is not specified, the first available PCI device
647 Configuring a "amplc_pci230" will match any supported card and it will
648 be treated as "pci230" or "pci260". Configuring a "pci230" will match a
649 PCI230 or PCI230+ card and it will be treated as a PCI230. Configuring
650 a "pci260" will match a PCI260 or PCI260+ card and it will be treated as
651 a PCI260. Configuring a "pci230+" will match a PCI230+ card.
652 Configuring a "pci260+" will match a PCI260+ card.
665 The AI subdevice has 16 single-ended channels or 8 differential
668 The PCI230 and PCI260 cards have 12-bit resolution. The PCI230+ and
669 PCI260+ cards have 16-bit resolution.
671 For differential mode, use inputs 2N and 2N+1 for channel N (e.g. use
672 inputs 14 and 15 for channel 7). If the card is physically a PCI230
673 or PCI260 then it actually uses a "pseudo-differential" mode where the
674 inputs are sampled a few microseconds apart. The PCI230+ and PCI260+
675 use true differential sampling. Another difference is that if the
676 card is physically a PCI230 or PCI260, the inverting input is 2N,
677 whereas for a PCI230+ or PCI260+ the inverting input is 2N+1. So if a
678 PCI230 is physically replaced by a PCI230+ (or a PCI260 with a
679 PCI260+) and differential mode is used, the differential inputs need
680 to be physically swapped on the connector.
682 The following input ranges are supported:
687 3 => [-1.25, +1.25] V
694 +=========+==============+===========+============+==========+
695 |start_src|scan_begin_src|convert_src|scan_end_src| stop_src |
696 +=========+==============+===========+============+==========+
697 |TRIG_NOW | TRIG_FOLLOW |TRIG_TIMER | TRIG_COUNT |TRIG_NONE |
698 |TRIG_INT | |TRIG_EXT(3)| |TRIG_COUNT|
700 | |--------------|-----------| | |
701 | | TRIG_TIMER(1)|TRIG_TIMER | | |
702 | | TRIG_EXT(2) | | | |
704 +---------+--------------+-----------+------------+----------+
706 Note 1: If AI command and AO command are used simultaneously, only
707 one may have scan_begin_src == TRIG_TIMER.
709 Note 2: For PCI230 and PCI230+, scan_begin_src == TRIG_EXT uses
710 DIO channel 16 (pin 49) which will need to be configured as
711 a digital input. For PCI260+, the EXTTRIG/EXTCONVCLK input
712 (pin 17) is used instead. For PCI230, scan_begin_src ==
713 TRIG_EXT is not supported. The trigger is a rising edge
716 Note 3: For convert_src == TRIG_EXT, the EXTTRIG/EXTCONVCLK input
717 (pin 25 on PCI230(+), pin 17 on PCI260(+)) is used. The
718 convert_arg value is interpreted as follows:
720 convert_arg == (CR_EDGE | 0) => rising edge
721 convert_arg == (CR_EDGE | CR_INVERT | 0) => falling edge
722 convert_arg == 0 => falling edge (backwards compatibility)
723 convert_arg == 1 => rising edge (backwards compatibility)
725 All entries in the channel list must use the same analogue reference.
726 If the analogue reference is not AREF_DIFF (not differential) each
727 pair of channel numbers (0 and 1, 2 and 3, etc.) must use the same
728 input range. The input ranges used in the sequence must be all
729 bipolar (ranges 0 to 3) or all unipolar (ranges 4 to 6). The channel
730 sequence must consist of 1 or more identical subsequences. Within the
731 subsequence, channels must be in ascending order with no repeated
732 channels. For example, the following sequences are valid: 0 1 2 3
733 (single valid subsequence), 0 2 3 5 0 2 3 5 (repeated valid
734 subsequence), 1 1 1 1 (repeated valid subsequence). The following
735 sequences are invalid: 0 3 2 1 (invalid subsequence), 0 2 3 5 0 2 3
736 (incompletely repeated subsequence). Some versions of the PCI230+ and
737 PCI260+ have a bug that requires a subsequence longer than one entry
738 long to include channel 0.
742 The AO subdevice has 2 channels with 12-bit resolution.
744 The following output ranges are supported:
751 +=========+==============+===========+============+==========+
752 |start_src|scan_begin_src|convert_src|scan_end_src| stop_src |
753 +=========+==============+===========+============+==========+
754 |TRIG_INT | TRIG_TIMER(1)| TRIG_NOW | TRIG_COUNT |TRIG_NONE |
755 | | TRIG_EXT(2) | | |TRIG_COUNT|
757 +---------+--------------+-----------+------------+----------+
759 Note 1: If AI command and AO command are used simultaneously, only
760 one may have scan_begin_src == TRIG_TIMER.
762 Note 2: scan_begin_src == TRIG_EXT is only supported if the card is
763 configured as a PCI230+ and is only supported on later
764 versions of the card. As a card configured as a PCI230+ is
765 not guaranteed to support external triggering, please consider
766 this support to be a bonus. It uses the EXTTRIG/ EXTCONVCLK
767 input (PCI230+ pin 25). Triggering will be on the rising edge
768 unless the CR_INVERT flag is set in scan_begin_arg.
770 The channels in the channel sequence must be in ascending order with
771 no repeats. All entries in the channel sequence must use the same
776 The DIO subdevice is a 8255 chip providing 24 DIO channels. The DIO
777 channels are configurable as inputs or outputs in four groups:
779 Port A - channels 0 to 7
780 Port B - channels 8 to 15
781 Port CL - channels 16 to 19
782 Port CH - channels 20 to 23
784 Only mode 0 of the 8255 chip is supported.
786 Bit 0 of port C (DIO channel 16) is also used as an external scan
787 trigger input for AI commands on PCI230 and PCI230+, so would need to
788 be configured as an input to use it for that purpose.
793 Description: Mechatronic Systems Inc. C6x_DIGIO DSP daughter card
796 Devices: [Mechatronic Systems Inc.] C6x_DIGIO DSP daughter card (c6xdigio)
797 Updated: Sun Nov 20 20:18:34 EST 2005
799 This driver will not work with a 2.4 kernel.
800 http://robot0.ge.uiuc.edu/~spong/mecha/
806 Description: Computer Boards PC-CARD DAS16/16
807 Devices: [ComputerBoards] PC-CARD DAS16/16 (cb_das16_cs), PC-CARD DAS16/16-AO
809 Updated: Mon, 04 Nov 2002 20:04:21 -0800
817 Description: MeasurementComputing PCI-DAS64xx, 60XX, and 4020 series with the PLX 9080 PCI controller
818 Author: Frank Mori Hess <fmhess@users.sourceforge.net>
821 Devices: [Measurement Computing] PCI-DAS6402/16 (cb_pcidas64),
822 PCI-DAS6402/12, PCI-DAS64/M1/16, PCI-DAS64/M2/16,
823 PCI-DAS64/M3/16, PCI-DAS6402/16/JR, PCI-DAS64/M1/16/JR,
824 PCI-DAS64/M2/16/JR, PCI-DAS64/M3/16/JR, PCI-DAS64/M1/14,
825 PCI-DAS64/M2/14, PCI-DAS64/M3/14, PCI-DAS6013, PCI-DAS6014,
826 PCI-DAS6023, PCI-DAS6025, PCI-DAS6030,
827 PCI-DAS6031, PCI-DAS6032, PCI-DAS6033, PCI-DAS6034,
828 PCI-DAS6035, PCI-DAS6036, PCI-DAS6040, PCI-DAS6052,
829 PCI-DAS6070, PCI-DAS6071, PCI-DAS4020/12
831 Configuration options:
832 [0] - PCI bus of device (optional)
833 [1] - PCI slot of device (optional)
835 These boards may be autocalibrated with the comedi_calibrate utility.
837 To select the bnc trigger input on the 4020 (instead of the dio input),
838 specify a nonzero channel in the chanspec. If you wish to use an external
839 master clock on the 4020, you may do so by setting the scan_begin_src
840 to TRIG_OTHER, and using an INSN_CONFIG_TIMER_1 configuration insn
841 to configure the divisor to use for the external clock.
843 Some devices are not identified because the PCI device IDs are not yet
844 known. If you have such a board, please file a bug report at
845 https://bugs.comedi.org.
851 Description: MeasurementComputing PCI-DAS series with the AMCC S5933 PCI controller
852 Author: Ivan Martinez <imr@oersted.dtu.dk>,
853 Frank Mori Hess <fmhess@users.sourceforge.net>
855 Devices: [Measurement Computing] PCI-DAS1602/16 (cb_pcidas),
856 PCI-DAS1602/16jr, PCI-DAS1602/12, PCI-DAS1200, PCI-DAS1200jr,
857 PCI-DAS1000, PCI-DAS1001, PCI_DAS1002
860 There are many reports of the driver being used with most of the
861 supported cards. Despite no detailed log is maintained, it can
862 be said that the driver is quite tested and stable.
864 The boards may be autocalibrated using the comedi_calibrate
867 Configuration options:
868 [0] - PCI bus of device (optional)
869 [1] - PCI slot of device (optional)
870 If bus/slot is not specified, the first supported
871 PCI device found will be used.
873 For commands, the scanned channels must be consecutive
874 (i.e. 4-5-6-7, 2-3-4,...), and must all have the same
880 Description: MeasurementComputing PCI-DDA series
881 Author: Ivan Martinez <ivanmr@altavista.com>, Frank Mori Hess <fmhess@users.sourceforge.net>
882 Status: Supports 08/16, 04/16, 02/16, 08/12, 04/12, and 02/12
883 Devices: [Measurement Computing] PCI-DDA08/12 (cb_pcidda), PCI-DDA04/12,
884 PCI-DDA02/12, PCI-DDA08/16, PCI-DDA04/16, PCI-DDA02/16
886 Configuration options:
887 [0] - PCI bus of device (optional)
888 [1] - PCI slot of device (optional)
889 If bus/slot is not specified, the first available PCI
892 Only simple analog output writing is supported.
894 So far it has only been tested with:
896 Please report success/failure with other different cards to
902 Description: ComputerBoards' DIO boards with PCI interface
903 Devices: [Measurement Computing] PCI-DIO24 (cb_pcidio), PCI-DIO24H, PCI-DIO48H
904 Author: Yoshiya Matsuzaka
905 Updated: Mon, 29 Oct 2007 15:40:47 +0000
908 This driver has been modified from skel.c of comedi-0.7.70.
910 Configuration Options:
911 [0] - PCI bus of device (optional)
912 [1] - PCI slot of device (optional)
913 If bus/slot is not specified, the first available PCI device will
916 Passing a zero for an option is the same as leaving it unspecified.
921 Description: Measurement Computing PCI Migration series boards
922 Devices: [ComputerBoards] PCIM-DAS1602/16 (cb_pcimdas)
923 Author: Richard Bytheway
924 Updated: Wed, 13 Nov 2002 12:34:56 +0000
927 Written to support the PCIM-DAS1602/16 on a 2.4 series kernel.
929 Configuration Options:
931 [1] - PCI slot number
933 Developed from cb_pcidas and skel by Richard Bytheway (mocelet@sucs.org).
934 Only supports DIO, AO and simple AI in it's present form.
935 No interrupts, multi channel or FIFO AI, although the card looks like it could support this.
936 See http://www.measurementcomputing.com/PDFManuals/pcim-das1602_16.pdf for more details.
941 Description: Measurement Computing PCIM-DDA06-16
942 Devices: [Measurement Computing] PCIM-DDA06-16 (cb_pcimdda)
943 Author: Calin Culianu <calin@ajvar.org>
944 Updated: Thu, 20 Jun 2002 16:19:41 -0500
947 All features of the PCIM-DDA06-16 board are supported. This board
948 has 6 16-bit AO channels, and the usual 8255 DIO setup. (24 channels,
949 configurable in banks of 8 and 4, etc.). This board does not support commands.
951 The board has a peculiar way of specifying AO gain/range settings -- You have
952 1 jumper bank on the card, which either makes all 6 AO channels either
953 5 Volt unipolar, 5V bipolar, 10 Volt unipolar or 10V bipolar.
955 Since there is absolutely _no_ way to tell in software how this jumper is set
956 (well, at least according to the rather thin spec. from Measurement Computing
957 that comes with the board), the driver assumes the jumper is at its factory
958 default setting of +/-5V.
960 Also of note is the fact that this board features another jumper, whose
961 state is also completely invisible to software. It toggles two possible AO
962 output modes on the board:
964 - Update Mode: Writing to an AO channel instantaneously updates the actual
965 signal output by the DAC on the board (this is the factory default).
966 - Simultaneous XFER Mode: Writing to an AO channel has no effect until
967 you read from any one of the AO channels. This is useful for loading
968 all 6 AO values, and then reading from any one of the AO channels on the
969 device to instantly update all 6 AO values in unison. Useful for some
970 control apps, I would assume? If your jumper is in this setting, then you
971 need to issue your comedi_data_write()s to load all the values you want,
972 then issue one comedi_data_read() on any channel on the AO subdevice
973 to initiate the simultaneous XFER.
975 Configuration Options:
976 [0] PCI bus (optional) (unimplemented)
977 [1] PCI slot (optional) (unimplemented)
978 [2] analog output range jumper setting
985 Description: A driver to 'bond' (merge) multiple subdevices from multiple devices together as one.
988 Updated: Mon, 10 Oct 00:18:25 -0500
991 This driver allows you to 'bond' (merge) multiple comedi subdevices
992 (coming from possibly difference boards and/or drivers) together. For
993 example, if you had a board with 2 different DIO subdevices, and
994 another with 1 DIO subdevice, you could 'bond' them with this driver
995 so that they look like one big fat DIO subdevice. This makes writing
996 applications slightly easier as you don't have to worry about managing
997 different subdevices in the application -- you just worry about
998 indexing one linear array of channel id's.
1000 Right now only DIO subdevices are supported as that's the personal itch
1001 I am scratching with this driver. If you want to add support for AI and AO
1002 subdevs, go right on ahead and do so!
1004 Commands aren't supported -- although it would be cool if they were.
1006 Configuration Options:
1007 List of comedi-minors to bond. All subdevices of the same type
1008 within each minor will be concatenated together in the order given here.
1012 Driver: comedi_parport
1013 Description: Standard PC parallel port
1015 Status: works in immediate mode
1016 Devices: [standard] parallel port (comedi_parport)
1017 Updated: Tue, 30 Apr 2002 21:11:45 -0700
1019 A cheap and easy way to get a few more digital I/O lines. Steal
1020 additional parallel ports from old computers or your neighbors'
1024 0: I/O port base for the parallel port.
1027 Parallel Port Lines:
1043 13 1 1 printer selected
1047 17 2 3 select printer
1052 Subdevices 0 is digital I/O, subdevice 1 is digital input, and
1053 subdevice 2 is digital output. Unlike other Comedi devices,
1054 subdevice 0 defaults to output.
1056 Pins 13 and 14 are inverted once by Comedi and once by the
1057 hardware, thus cancelling the effect.
1059 Pin 1 is a strobe, thus acts like one. There's no way in software
1060 to change this, at least on a standard parallel port.
1062 Subdevice 3 pretends to be a digital input subdevice, but it always
1063 returns 0 when read. However, if you run a command with
1064 scan_begin_src=TRIG_EXT, it uses pin 10 as a external triggering
1065 pin, which can be used to wake up tasks.
1069 Driver: comedi_rt_timer
1070 Description: Command emulator using real-time tasks
1075 This driver requires RTAI or RTLinux to work correctly. It doesn't
1076 actually drive hardware directly, but calls other drivers and uses
1077 a real-time task to emulate commands for drivers and devices that
1078 are incapable of native commands. Thus, you can get accurately
1079 timed I/O on any device.
1081 Since the timing is all done in software, sampling jitter is much
1082 higher than with a device that has an on-board timer, and maximum
1083 sample rate is much lower.
1085 Configuration options:
1086 [0] - minor number of device you wish to emulate commands for
1087 [1] - subdevice number you wish to emulate commands for
1092 Description: generates fake waveforms
1093 Author: Joachim Wuttke <Joachim.Wuttke@icn.siemens.de>, Frank Mori Hess
1094 <fmhess@users.sourceforge.net>, ds
1097 Updated: Sat, 16 Mar 2002 17:34:48 -0800
1099 This driver is mainly for testing purposes, but can also be used to
1100 generate sample waveforms on systems that don't have data acquisition
1103 Configuration options:
1104 [0] - Amplitude in microvolts for fake waveforms (default 1 volt)
1105 [1] - Period in microseconds for fake waveforms (default 0.1 sec)
1107 Generates a sawtooth wave on channel 0, square wave on channel 1, additional
1108 waveforms could be added to other channels (currently they return flatline
1114 Driver: contec_pci_dio
1115 Description: Contec PIO1616L digital I/O board
1116 Devices: [Contec] PIO1616L (contec_pci_dio)
1117 Author: Stefano Rivoir <s.rivoir@gts.it>
1118 Updated: Wed, 27 Jun 2007 13:00:06 +0100
1121 Configuration Options:
1122 [0] - PCI bus of device (optional)
1123 [1] - PCI slot of device (optional)
1124 If bus/slot is not specified, the first supported
1125 PCI device found will be used.
1129 Driver: daqboard2000
1130 Description: IOTech DAQBoard/2000
1131 Author: Anders Blomdell <anders.blomdell@control.lth.se>
1133 Devices: [IOTech] DAQBoard/2000 (daqboard2000)
1135 Much of the functionality of this driver was determined from reading
1136 the source code for the Windows driver.
1138 The FPGA on the board requires initialization code, which can
1139 be loaded by comedi_config using the -i
1140 option. The initialization code is available from http://www.comedi.org
1141 in the comedi_nonfree_firmware tarball.
1143 Configuration options:
1149 Description: DAS-08 compatible boards
1150 Author: Warren Jasper, ds, Frank Hess
1151 Devices: [Keithley Metrabyte] DAS08 (das08), [ComputerBoards] DAS08 (das08),
1152 DAS08-PGM (das08-pgm),
1153 DAS08-PGH (das08-pgh), DAS08-PGL (das08-pgl), DAS08-AOH (das08-aoh),
1154 DAS08-AOL (das08-aol), DAS08-AOM (das08-aom), DAS08/JR-AO (das08/jr-ao),
1155 DAS08/JR-16-AO (das08jr-16-ao), PCI-DAS08 (pci-das08),
1156 PC104-DAS08 (pc104-das08), DAS08/JR/16 (das08jr/16)
1159 This is a rewrite of the das08 and das08jr drivers.
1161 Options (for ISA cards):
1162 [0] - base io address
1164 Options (for pci-das08):
1165 [0] - bus (optional)
1166 [1] = slot (optional)
1167 Use the name 'pci-das08' for the pci-das08, NOT 'das08'.
1169 The das08 driver doesn't support asynchronous commands, since
1170 the cheap das08 hardware doesn't really support them. The
1171 comedi_rt_timer driver can be used to emulate commands for this
1177 Description: DAS-08 PCMCIA boards
1178 Author: Warren Jasper, ds, Frank Hess
1179 Devices: [ComputerBoards] PCM-DAS08 (pcm-das08)
1182 This is the PCMCIA-specific support split off from the
1185 Options (for pcm-das08):
1188 Command support does not exist, but could be added for this board.
1193 Description: DAS16 compatible boards
1194 Author: Sam Moore, Warren Jasper, ds, Chris Baugher, Frank Hess, Roman Fietze
1195 Devices: [Keithley Metrabyte] DAS-16 (das-16), DAS-16G (das-16g),
1196 DAS-16F (das-16f), DAS-1201 (das-1201), DAS-1202 (das-1202),
1197 DAS-1401 (das-1401), DAS-1402 (das-1402), DAS-1601 (das-1601),
1198 DAS-1602 (das-1602),
1199 [ComputerBoards] PC104-DAS16/JR (pc104-das16jr),
1200 PC104-DAS16JR/16 (pc104-das16jr/16),
1201 CIO-DAS16JR/16 (cio-das16jr/16),
1202 CIO-DAS16/JR (cio-das16/jr), CIO-DAS1401/12 (cio-das1401/12),
1203 CIO-DAS1402/12 (cio-das1402/12), CIO-DAS1402/16 (cio-das1402/16),
1204 CIO-DAS1601/12 (cio-das1601/12), CIO-DAS1602/12 (cio-das1602/12),
1205 CIO-DAS1602/16 (cio-das1602/16), CIO-DAS16/330 (cio-das16/330)
1209 A rewrite of the das16 and das1600 drivers.
1211 [0] - base io address
1212 [1] - irq (does nothing, irq is not used anymore)
1213 [2] - dma (optional, required for comedi_command support)
1214 [3] - master clock speed in MHz (optional, 1 or 10, ignored if
1215 board can probe clock, defaults to 1)
1216 [4] - analog input range lowest voltage in microvolts (optional,
1217 only useful if your board does not have software
1219 [5] - analog input range highest voltage in microvolts (optional,
1220 only useful if board does not have software programmable
1222 [6] - analog output range lowest voltage in microvolts (optional)
1223 [7] - analog output range highest voltage in microvolts (optional)
1224 [8] - use timer mode for DMA. Timer mode is needed e.g. for
1225 buggy DMA controllers in NS CS5530A (Geode Companion), and for
1226 'jr' cards that lack a hardware fifo. This option is no
1227 longer needed, since timer mode is _always_ used.
1229 Passing a zero for an option is the same as leaving it unspecified.
1235 Description: CIO-DAS16/M1
1236 Author: Frank Mori Hess <fmhess@users.sourceforge.net>
1237 Devices: [Measurement Computing] CIO-DAS16/M1 (cio-das16/m1)
1240 This driver supports a single board - the CIO-DAS16/M1.
1241 As far as I know, there are no other boards that have
1242 the same register layout. Even the CIO-DAS16/M1/16 is
1243 significantly different.
1245 I was _barely_ able to reach the full 1 MHz capability
1246 of this board, using a hard real-time interrupt
1247 (set the TRIG_RT flag in your comedi_cmd and use
1248 rtlinux or RTAI). The board can't do dma, so the bottleneck is
1249 pulling the data across the ISA bus. I timed the interrupt
1250 handler, and it took my computer ~470 microseconds to pull 512
1251 samples from the board. So at 1 Mhz sampling rate,
1252 expect your CPU to be spending almost all of its
1253 time in the interrupt handler.
1255 This board has some unusual restrictions for its channel/gain list. If the
1256 list has 2 or more channels in it, then two conditions must be satisfied:
1257 (1) - even/odd channels must appear at even/odd indices in the list
1258 (2) - the list must have an even number of entries.
1261 [0] - base io address
1262 [1] - irq (optional, but you probably want it)
1264 irq can be omitted, although the cmd interface will not work without it.
1269 Description: Keithley Metrabyte DAS1800 (& compatibles)
1270 Author: Frank Mori Hess <fmhess@users.sourceforge.net>
1271 Devices: [Keithley Metrabyte] DAS-1701ST (das-1701st),
1272 DAS-1701ST-DA (das-1701st-da), DAS-1701/AO (das-1701ao),
1273 DAS-1702ST (das-1702st), DAS-1702ST-DA (das-1702st-da),
1274 DAS-1702HR (das-1702hr), DAS-1702HR-DA (das-1702hr-da),
1275 DAS-1702/AO (das-1702ao), DAS-1801ST (das-1801st),
1276 DAS-1801ST-DA (das-1801st-da), DAS-1801HC (das-1801hc),
1277 DAS-1801AO (das-1801ao), DAS-1802ST (das-1802st),
1278 DAS-1802ST-DA (das-1802st-da), DAS-1802HR (das-1802hr),
1279 DAS-1802HR-DA (das-1802hr-da), DAS-1802HC (das-1802hc),
1280 DAS-1802AO (das-1802ao)
1283 The waveform analog output on the 'ao' cards is not supported.
1284 If you need it, send me (Frank Hess) an email.
1286 Configuration options:
1287 [0] - I/O port base address
1288 [1] - IRQ (optional, required for timed or externally triggered conversions)
1289 [2] - DMA0 (optional, requires irq)
1290 [3] - DMA1 (optional, requires irq and dma0)
1295 Description: Keithley Metrabyte DAS6402 (& compatibles)
1296 Author: Oystein Svendsen <svendsen@pvv.org>
1298 Devices: [Keithley Metrabyte] DAS6402 (das6402)
1300 This driver has suffered bitrot.
1305 Description: Keithley Metrabyte DAS800 (& compatibles)
1306 Author: Frank Mori Hess <fmhess@users.sourceforge.net>
1307 Devices: [Keithley Metrabyte] DAS-800 (das-800), DAS-801 (das-801),
1309 [Measurement Computing] CIO-DAS800 (cio-das800),
1310 CIO-DAS801 (cio-das801), CIO-DAS802 (cio-das802),
1311 CIO-DAS802/16 (cio-das802/16)
1312 Status: works, cio-das802/16 untested - email me if you have tested it
1314 Configuration options:
1315 [0] - I/O port base address
1316 [1] - IRQ (optional, required for timed or externally triggered conversions)
1319 IRQ can be omitted, although the cmd interface will not work without it.
1321 All entries in the channel/gain list must use the same gain and be
1322 consecutive channels counting upwards in channel number (these are
1323 hardware limitations.)
1325 I've never tested the gain setting stuff since I only have a
1326 DAS-800 board with fixed gain.
1328 The cio-das802/16 does not have a fifo-empty status bit! Therefore
1329 only fifo-half-full transfers are possible with this card.
1334 Description: Diamond Systems mm32at driver.
1336 Author: Perry J. Piplani <perry.j.piplani@nasa.gov>
1337 Updated: Fri Jun 4 09:13:24 CDT 2004
1338 Status: experimental
1340 This driver is for the Diamond Systems MM-32-AT board
1341 http://www.diamondsystems.com/products/diamondmm32at It is being used
1342 on serveral projects inside NASA, without problems so far. For analog
1343 input commands, TRIG_EXT is not yet supported at all..
1345 Configuration Options:
1346 comedi_config /dev/comedi0 dmm32at baseaddr,irq
1351 Description: Data Translation DT2801 series and DT01-EZ
1354 Devices: [Data Translation] DT2801 (dt2801), DT2801-A, DT2801/5716A,
1355 DT2805, DT2805/5716A, DT2808, DT2818, DT2809, DT01-EZ
1357 This driver can autoprobe the type of board.
1359 Configuration options:
1360 [0] - I/O port base address
1362 [2] - A/D reference 0=differential, 1=single-ended
1372 [5] - D/A 1 range (same choices)
1377 Description: Data Translation DT2811
1379 Devices: [Data Translation] DT2811-PGL (dt2811-pgl), DT2811-PGH (dt2811-pgh)
1382 Configuration options:
1383 [0] - I/O port base address
1384 [1] - IRQ, although this is currently unused
1388 2 = pseudo-differential (common reference)
1393 [4] - D/A 0 range (same choices)
1394 [4] - D/A 1 range (same choices)
1399 Description: Data Translation DT2814
1402 Devices: [Data Translation] DT2814 (dt2814)
1404 Configuration options:
1405 [0] - I/O port base address
1408 This card has 16 analog inputs multiplexed onto a 12 bit ADC. There
1409 is a minimally useful onboard clock. The base frequency for the
1410 clock is selected by jumpers, and the clock divider can be selected
1411 via programmed I/O. Unfortunately, the clock divider can only be
1412 a power of 10, from 1 to 10^7, of which only 3 or 4 are useful. In
1413 addition, the clock does not seem to be very accurate.
1418 Description: Data Translation DT2815
1420 Status: mostly complete, untested
1421 Devices: [Data Translation] DT2815 (dt2815)
1423 I'm not sure anyone has ever tested this board. If you have information
1424 contrary, please update.
1426 Configuration options:
1427 [0] - I/O port base base address
1429 [2] - Voltage unipolar/bipolar configuration
1430 0 == unipolar 5V (0V -- +5V)
1431 1 == bipolar 5V (-5V -- +5V)
1432 [3] - Current offset configuration
1433 0 == disabled (0mA -- +32mAV)
1434 1 == enabled (+4mA -- +20mAV)
1435 [4] - Firmware program configuration
1436 0 == program 1 (see manual table 5-4)
1437 1 == program 2 (see manual table 5-4)
1438 2 == program 3 (see manual table 5-4)
1439 3 == program 4 (see manual table 5-4)
1440 [5] - Analog output 0 range configuration
1443 [6] - Analog output 1 range configuration (same options)
1444 [7] - Analog output 2 range configuration (same options)
1445 [8] - Analog output 3 range configuration (same options)
1446 [9] - Analog output 4 range configuration (same options)
1447 [10] - Analog output 5 range configuration (same options)
1448 [11] - Analog output 6 range configuration (same options)
1449 [12] - Analog output 7 range configuration (same options)
1454 Description: Data Translation DT2817
1457 Devices: [Data Translation] DT2817 (dt2817)
1459 A very simple digital I/O card. Four banks of 8 lines, each bank
1460 is configurable for input or output. One wonders why it takes a
1461 50 page manual to describe this thing.
1463 The driver (which, btw, is much less than 50 pages) has 1 subdevice
1464 with 32 channels, configurable in groups of 8.
1466 Configuration options:
1467 [0] - I/O port base base address
1472 Description: Data Translation DT2821 series (including DT-EZ)
1474 Devices: [Data Translation] DT2821 (dt2821),
1475 DT2821-F-16SE (dt2821-f), DT2821-F-8DI (dt2821-f),
1476 DT2821-G-16SE (dt2821-f), DT2821-G-8DI (dt2821-g),
1478 DT2824-PGH (dt2824-pgh), DT2824-PGL (dt2824-pgl), DT2825 (dt2825),
1479 DT2827 (dt2827), DT2828 (dt2828), DT21-EZ (dt21-ez), DT23-EZ (dt23-ez),
1480 DT24-EZ (dt24-ez), DT24-EZ-PGL (dt24-ez-pgl)
1482 Updated: Wed, 22 Aug 2001 17:11:34 -0700
1484 Configuration options:
1485 [0] - I/O port base address
1489 [4] - AI jumpered for 0=single ended, 1=differential
1490 [5] - AI jumpered for 0=straight binary, 1=2's complement
1491 [6] - AO 0 jumpered for 0=straight binary, 1=2's complement
1492 [7] - AO 1 jumpered for 0=straight binary, 1=2's complement
1493 [8] - AI jumpered for 0=[-10,10]V, 1=[0,10], 2=[-5,5], 3=[0,5]
1494 [9] - AO 0 jumpered for 0=[-10,10]V, 1=[0,10], 2=[-5,5], 3=[0,5],
1496 [10]- A0 1 jumpered for 0=[-10,10]V, 1=[0,10], 2=[-5,5], 3=[0,5],
1500 - AO commands might be broken.
1501 - If you try to run a command on both the AI and AO subdevices
1502 simultaneously, bad things will happen. The driver needs to
1503 be fixed to check for this situation and return an error.
1508 Description: Data Translation DT3000 series
1510 Devices: [Data Translation] DT3001 (dt3000), DT3001-PGL, DT3002, DT3003,
1511 DT3003-PGL, DT3004, DT3005, DT3004-200
1514 There is code to support AI commands, but it may not work.
1516 AO commands are not supported.
1521 Description: Data Translation DT9812 USB module
1522 Author: anders.blomdell@control.lth.se (Anders Blomdell)
1523 Status: in development
1524 Devices: [Data Translation] DT9812 (dt9812)
1525 Updated: Sun Nov 20 20:18:34 EST 2005
1527 This driver works, but bulk transfers not implemented. Might be a starting point
1528 for someone else. I found out too late that USB has too high latencies (>1 ms)
1534 Description: unknown
1535 Author: Anders Gnistrup <ex18@kalman.iau.dtu.dk>
1536 Devices: [unknown] FL512 (fl512)
1539 Digital I/O is not supported.
1541 Configuration options:
1542 [0] - I/O port base address
1547 Description: General Standards Corporation High
1548 Speed Parallel Digital Interface rs485 boards
1549 Author: Frank Mori Hess <fmhess@users.sourceforge.net>
1550 Status: only receive mode works, transmit not supported
1552 Devices: [General Standards Corporation] PCI-HPDI32 (gsc_hpdi),
1555 Configuration options:
1556 [0] - PCI bus of device (optional)
1557 [1] - PCI slot of device (optional)
1559 There are some additional hpdi models available from GSC for which
1560 support could be added to this driver.
1566 Description: Inova ICP_MULTI
1567 Author: Anne Smorthit <anne.smorthit@sfwte.ch>
1568 Devices: [Inova] ICP_MULTI (icp_multi)
1571 The driver works for analog input and output and digital input and output.
1572 It does not work with interrupts or with the counters. Currently no support
1575 It has 16 single-ended or 8 differential Analogue Input channels with 12-bit
1576 resolution. Ranges : 5V, 10V, +/-5V, +/-10V, 0..20mA and 4..20mA. Input
1577 ranges can be individually programmed for each channel. Voltage or current
1578 measurement is selected by jumper.
1580 There are 4 x 12-bit Analogue Outputs. Ranges : 5V, 10V, +/-5V, +/-10V
1582 16 x Digital Inputs, 24V
1584 8 x Digital Outputs, 24V, 1A
1589 [0] - PCI bus number - if bus number and slot number are 0,
1590 then driver search for first unused card
1591 [1] - PCI slot number
1596 Description: Intelligent Instruments PCI-20001C carrier board
1597 Author: Markus Kempf <kempf@matsci.uni-sb.de>
1598 Devices: [Intelligent Instrumentation] PCI-20001C (ii_pci20kc)
1601 Supports the PCI-20001 C-2a Carrier board, and could probably support
1602 the other carrier boards with small modifications. Modules supported
1604 PCI-20006 M-2 16-bit analog output module
1605 PCI-20341 M-1A 16-bit analog input module
1608 0 Board base address
1610 2 first option for module 1
1611 3 second option for module 1
1612 4 first option for module 2
1613 5 second option for module 2
1614 6 first option for module 3
1615 7 second option for module 3
1617 options for PCI-20006M:
1618 first: Analog output channel 0 range configuration
1619 0 bipolar 10 (-10V -- +10V)
1620 1 unipolar 10 (0V -- +10V)
1621 2 bipolar 5 (-5V -- 5V)
1622 second: Analog output channel 1 range configuration
1624 options for PCI-20341M:
1625 first: Analog input gain configuration
1634 Description: JR3/PCI force sensor board
1635 Author: Anders Blomdell <anders.blomdell@control.lth.se>
1637 Devices: [JR3] PCI force sensor board (jr3_pci)
1639 The DSP on the board requires initialization code, which can
1640 be loaded by placing it in /lib/firmware/comedi.
1641 The initialization code should be somewhere on the media you got
1642 with your card. One version is available from http://www.comedi.org
1643 in the comedi_nonfree_firmware tarball.
1645 Configuration options:
1646 [0] - PCI bus number - if bus number and slot number are 0,
1647 then driver search for first unused card
1648 [1] - PCI slot number
1654 Description: Driver for Kolter Electronic Counter Card
1655 Devices: [Kolter Electronic] PCI Counter Card (ke_counter)
1656 Author: Michael Hillmann
1660 This driver is a simple driver to read the counter values from
1661 Kolter Electronic PCI Counter Card.
1666 Description: Meilhaus ME-4000 series boards
1667 Devices: [Meilhaus] ME-4650 (me4000), ME-4670i, ME-4680, ME-4680i, ME-4680is
1668 Author: gg (Guenter Gebhardt <g.gebhardt@meilhaus.com>)
1669 Updated: Mon, 18 Mar 2002 15:34:01 -0800
1670 Status: broken (no support for loading firmware)
1679 Configuration Options:
1681 [0] - PCI bus number (optional)
1682 [1] - PCI slot number (optional)
1684 If bus/slot is not specified, the first available PCI
1685 device will be used.
1687 The firmware required by these boards is available in the
1688 comedi_nonfree_firmware tarball available from
1689 http://www.comedi.org. However, the driver's support for
1690 loading the firmware through comedi_config is currently
1697 Description: Meilhaus PCI data acquisition cards
1698 Author: Michael Hillmann <hillmann@syscongroup.de>
1699 Devices: [Meilhaus] ME-2600i (me_daq), ME-2000i
1700 Status: experimental
1706 Configuration options:
1708 [0] - PCI bus number (optional)
1709 [1] - PCI slot number (optional)
1711 If bus/slot is not specified, the first available PCI
1712 device will be used.
1714 The 2600 requires a firmware upload, which can be accomplished
1715 using the -i or --init-data option of comedi_config.
1717 found in the comedi_nonfree_firmware tarball available
1718 from http://www.comedi.org
1724 Description: Micro/sys MPC-624 PC/104 board
1725 Devices: [Micro/sys] MPC-624 (mpc624)
1726 Author: Stanislaw Raczynski <sraczynski@op.pl>
1727 Updated: Thu, 15 Sep 2005 12:01:18 +0200
1730 The Micro/sys MPC-624 board is based on the LTC2440 24-bit sigma-delta
1733 Subdevices supported by the driver:
1734 - Analog In: supported
1735 - Digital I/O: not supported
1736 - LEDs: not supported
1737 - EEPROM: not supported
1739 Configuration Options:
1740 [0] - I/O base address
1741 [1] - convertion rate
1742 Convertion rate RMS noise Effective Number Of Bits
1751 8 13.75Hz 250nV 24.4
1752 9 6.875Hz 200nV 24.6
1760 Description: MPC8260 CPM module generic digital I/O lines
1761 Devices: [Motorola] MPC8260 CPM (mpc8260cpm)
1763 Status: experimental
1764 Updated: Sat, 16 Mar 2002 17:34:48 -0800
1766 This driver is specific to the Motorola MPC8260 processor, allowing
1767 you to access the processor's generic digital I/O lines.
1769 It is apparently missing some code.
1774 Description: Quanser Consulting MultiQ-3
1775 Author: Anders Blomdell <anders.blomdell@control.lth.se>
1777 Devices: [Quanser Consulting] MultiQ-3 (multiq3)
1783 Description: National Instruments 6527
1786 Devices: [National Instruments] PCI-6527 (ni6527), PXI-6527
1787 Updated: Sat, 25 Jan 2003 13:24:40 -0800
1794 Description: National Instruments 65xx static dio boards
1795 Author: Jon Grierson <jd@renko.co.uk>, Frank Mori Hess <fmhess@users.sourceforge.net>
1797 Devices: [National Instruments] PCI-6509 (ni_65xx), PXI-6509, PCI-6510, PCI-6511,
1798 PXI-6511, PCI-6512, PXI-6512, PCI-6513, PXI-6513, PCI-6514, PXI-6514, PCI-6515,
1799 PXI-6515, PCI-6516, PCI-6517, PCI-6518, PCI-6519, PCI-6520, PCI-6521, PXI-6521,
1801 Updated: Wed Oct 18 08:59:11 EDT 2006
1803 Based on the PCI-6527 driver by ds.
1804 The interrupt subdevice (subdevice 3) is probably broken for all boards
1805 except maybe the 6514.
1811 Description: National Instruments 660x counter/timer boards
1813 [National Instruments] PCI-6601 (ni_660x), PCI-6602, PXI-6602,
1815 Author: J.P. Mellor <jpmellor@rose-hulman.edu>,
1816 Herman.Bruyninckx@mech.kuleuven.ac.be,
1817 Wim.Meeussen@mech.kuleuven.ac.be,
1818 Klaas.Gadeyne@mech.kuleuven.ac.be,
1819 Frank Mori Hess <fmhess@users.sourceforge.net>
1820 Updated: Thu Oct 18 12:56:06 EDT 2007
1821 Status: experimental
1823 Encoders work. PulseGeneration (both single pulse and pulse train)
1824 works. Buffered commands work for input but not output.
1827 DAQ 660x Register-Level Programmer Manual (NI 370505A-01)
1828 DAQ 6601/6602 User Manual (NI 322137B-01)
1834 Description: National Instruments 670x
1835 Author: Bart Joris <bjoris@advalvas.be>
1836 Updated: Wed, 11 Dec 2002 18:25:35 -0800
1837 Devices: [National Instruments] PCI-6703 (ni_670x), PCI-6704
1840 Commands are not supported.
1845 Description: National Instruments AT-A2150
1846 Author: Frank Mori Hess
1848 Devices: [National Instruments] AT-A2150C (at_a2150c), AT-2150S (at_a2150s)
1850 If you want to ac couple the board's inputs, use AREF_OTHER.
1852 Configuration options:
1853 [0] - I/O port base address
1854 [1] - IRQ (optional, required for timed conversions)
1855 [2] - DMA (optional, required for timed conversions)
1861 Description: National Instruments AT-AO-6/10
1862 Devices: [National Instruments] AT-AO-6 (at-ao-6), AT-AO-10 (at-ao-10)
1865 Updated: Sun Dec 26 12:26:28 EST 2004
1867 Configuration options:
1868 [0] - I/O port base address
1871 [3] - analog output range, set by jumpers on hardware (0 for -10 to 10V bipolar, 1 for 0V to 10V unipolar)
1877 Description: National Instruments AT-MIO-16D
1878 Author: Chris R. Baugher <baugher@enteract.com>
1880 Devices: [National Instruments] AT-MIO-16 (atmio16), AT-MIO-16D (atmio16d)
1885 Description: National Instruments AT-MIO-E series
1887 Devices: [National Instruments] AT-MIO-16E-1 (ni_atmio),
1888 AT-MIO-16E-2, AT-MIO-16E-10, AT-MIO-16DE-10, AT-MIO-64E-3,
1889 AT-MIO-16XE-50, AT-MIO-16XE-10, AT-AI-16XE-10
1891 Updated: Thu May 1 20:03:02 CDT 2003
1893 The driver has 2.6 kernel isapnp support, and
1894 will automatically probe for a supported board if the
1895 I/O base is left unspecified with comedi_config.
1897 the isapnp id numbers are unknown. If your board is not
1898 recognized, please send the output of 'cat /proc/isapnp'
1899 (you may need to modprobe the isa-pnp module for
1900 /proc/isapnp to exist) so the
1901 id numbers for your board can be added to the driver.
1903 Otherwise, you can use the isapnptools package to configure
1904 your board. Use isapnp to
1905 configure the I/O base and IRQ for the board, and then pass
1907 parameters in comedi_config. A sample isapnp.conf file is included
1908 in the etc/ directory of Comedilib.
1910 Comedilib includes a utility to autocalibrate these boards. The
1911 boards seem to boot into a state where the all calibration DACs
1912 are at one extreme of their range, thus the default calibration
1913 is terrible. Calibration at boot is strongly encouraged.
1915 To use the extended digital I/O on some of the boards, enable the
1916 8255 driver when configuring the Comedi source tree.
1918 External triggering is supported for some events. The channel index
1919 (scan_begin_arg, etc.) maps to PFI0 - PFI9.
1921 Some of the more esoteric triggering possibilities of these boards
1927 Description: National Instruments PCMCIA DAQCard-700 DIO only
1928 Author: Fred Brooks <nsaspook@nsaspook.com>,
1929 based on ni_daq_dio24 by Daniel Vecino Castel <dvecino@able.es>
1930 Devices: [National Instruments] PCMCIA DAQ-Card-700 (ni_daq_700)
1932 Updated: Thu, 21 Feb 2008 12:07:20 +0000
1934 The daqcard-700 appears in Comedi as a single digital I/O subdevice with
1935 16 channels. The channel 0 corresponds to the daqcard-700's output
1936 port, bit 0; channel 8 corresponds to the input port, bit 0.
1938 Direction configuration: channels 0-7 output, 8-15 input (8225 device
1939 emu as port A output, port B input, port C N/A).
1941 IRQ is assigned but not used.
1945 Driver: ni_daq_dio24
1946 Description: National Instruments PCMCIA DAQ-Card DIO-24
1947 Author: Daniel Vecino Castel <dvecino@able.es>
1948 Devices: [National Instruments] PCMCIA DAQ-Card DIO-24 (ni_daq_dio24)
1950 Updated: Thu, 07 Nov 2002 21:53:06 -0800
1952 This is just a wrapper around the 8255.o driver to properly handle
1953 the PCMCIA interface.
1958 Description: National Instruments Lab-PC (& compatibles)
1959 Author: Frank Mori Hess <fmhess@users.sourceforge.net>
1960 Devices: [National Instruments] Lab-PC-1200 (labpc-1200),
1961 Lab-PC-1200AI (labpc-1200ai), Lab-PC+ (lab-pc+), PCI-1200 (pci-1200)
1964 Tested with lab-pc-1200. For the older Lab-PC+, not all input ranges
1965 and analog references will work, the available ranges/arefs will
1966 depend on how you have configured the jumpers on your board
1967 (see your owner's manual).
1969 Kernel-level ISA plug-and-play support for the lab-pc-1200
1971 yet been added to the driver, mainly due to the fact that
1972 I don't know the device id numbers. If you have one
1974 please file a bug report at https://bugs.comedi.org/
1975 so I can get the necessary information from you.
1977 The 1200 series boards have onboard calibration dacs for correcting
1978 analog input/output offsets and gains. The proper settings for these
1979 caldacs are stored on the board's eeprom. To read the caldac values
1980 from the eeprom and store them into a file that can be then be used by
1981 comedilib, use the comedi_calibrate program.
1983 Configuration options - ISA boards:
1984 [0] - I/O port base address
1985 [1] - IRQ (optional, required for timed or externally triggered conversions)
1986 [2] - DMA channel (optional)
1988 Configuration options - PCI boards:
1989 [0] - bus (optional)
1990 [1] - slot (optional)
1992 The Lab-pc+ has quirky chanlist requirements
1993 when scanning multiple channels. Multiple channel scan
1994 sequence must start at highest channel, then decrement down to
1995 channel 0. The rest of the cards can scan down like lab-pc+ or scan
1996 up from channel zero. Chanlists consisting of all one channel
1997 are also legal, and allow you to pace conversions in bursts.
2003 Description: National Instruments Lab-PC (& compatibles)
2004 Author: Frank Mori Hess <fmhess@users.sourceforge.net>
2005 Devices: [National Instruments] DAQCard-1200 (daqcard-1200)
2008 Thanks go to Fredrik Lingvall for much testing and perseverance in
2009 helping to debug daqcard-1200 support.
2011 The 1200 series boards have onboard calibration dacs for correcting
2012 analog input/output offsets and gains. The proper settings for these
2013 caldacs are stored on the board's eeprom. To read the caldac values
2014 from the eeprom and store them into a file that can be then be used by
2015 comedilib, use the comedi_calibrate program.
2017 Configuration options:
2020 The daqcard-1200 has quirky chanlist requirements
2021 when scanning multiple channels. Multiple channel scan
2022 sequence must start at highest channel, then decrement down to
2023 channel 0. Chanlists consisting of all one channel
2024 are also legal, and allow you to pace conversions in bursts.
2030 Description: National Instruments DAQCard E series
2033 Devices: [National Instruments] DAQCard-AI-16XE-50 (ni_mio_cs),
2034 DAQCard-AI-16E-4, DAQCard-6062E, DAQCard-6024E, DAQCard-6036E
2035 Updated: Thu Oct 23 19:43:17 CDT 2003
2037 See the notes in the ni_atmio.o driver.
2042 Description: National Instruments PCI-DIO32HS, PCI-DIO96, PCI-6533, PCI-6503
2045 Devices: [National Instruments] PCI-DIO-32HS (ni_pcidio), PXI-6533,
2046 PCI-DIO-96, PCI-DIO-96B, PXI-6508, PCI-6503, PCI-6503B, PCI-6503X,
2047 PXI-6503, PCI-6533, PCI-6534
2048 Updated: Sun, 21 Apr 2002 21:03:38 -0700
2050 The DIO-96 appears as four 8255 subdevices. See the 8255
2051 driver notes for details.
2053 The DIO32HS board appears as one subdevice, with 32 channels.
2054 Each channel is individually I/O configurable. The channel order
2055 is 0=A0, 1=A1, 2=A2, ... 8=B0, 16=C0, 24=D0. The driver only
2056 supports simple digital I/O; no handshaking is supported.
2058 DMA mostly works for the PCI-DIO32HS, but only in timed input mode.
2060 This driver could be easily modified to support AT-MIO32HS and
2063 The PCI-6534 requires a firmware upload after power-up to work, the
2064 firmware data and instructions for loading it with comedi_config
2065 it are contained in the
2066 comedi_nonfree_firmware tarball available from http://www.comedi.org
2071 Description: National Instruments PCI-MIO-E series and M series (all boards)
2072 Author: ds, John Hallen, Frank Mori Hess, Rolf Mueller, Herbert Peremans,
2073 Herman Bruyninckx, Terry Barnaby
2075 Devices: [National Instruments] PCI-MIO-16XE-50 (ni_pcimio),
2076 PCI-MIO-16XE-10, PXI-6030E, PCI-MIO-16E-1, PCI-MIO-16E-4, PCI-6014, PCI-6040E,
2077 PXI-6040E, PCI-6030E, PCI-6031E, PCI-6032E, PCI-6033E, PCI-6071E, PCI-6023E,
2078 PCI-6024E, PCI-6025E, PXI-6025E, PCI-6034E, PCI-6035E, PCI-6052E,
2079 PCI-6110, PCI-6111, PCI-6220, PCI-6221, PCI-6224, PCI-6225, PCI-6229,
2080 PCI-6250, PCI-6251, PCIe-6251, PCI-6254, PCI-6259, PCIe-6259,
2081 PCI-6280, PCI-6281, PXI-6281, PCI-6284, PCI-6289,
2082 PCI-6711, PXI-6711, PCI-6713, PXI-6713,
2083 PXI-6071E, PCI-6070E, PXI-6070E,
2084 PXI-6052E, PCI-6036E, PCI-6731, PCI-6733, PXI-6733,
2086 Updated: Wed Nov 29 10:30:36 EST 2006
2088 These boards are almost identical to the AT-MIO E series, except that
2089 they use the PCI bus instead of ISA (i.e., AT). See the notes for
2090 the ni_atmio.o driver for additional information about these boards.
2092 Autocalibration is supported on many of the devices, using the
2093 comedi_calibrate (or comedi_soft_calibrate for m-series) utility.
2094 M-Series boards do analog input and analog output calibration entirely
2095 in software. The software calibration corrects
2096 the analog input for offset, gain and
2097 nonlinearity. The analog outputs are corrected for offset and gain.
2098 See the comedilib documentation on comedi_get_softcal_converter() for
2101 By default, the driver uses DMA to transfer analog input data to
2102 memory. When DMA is enabled, not all triggering features are
2105 Digital I/O may not work on 673x.
2107 Note that the PCI-6143 is a simultaineous sampling device with 8 convertors.
2108 With this board all of the convertors perform one simultaineous sample during
2109 a scan interval. The period for a scan is used for the convert time in a
2110 Comedi cmd. The convert trigger source is normally set to TRIG_NOW by default.
2112 The RTSI trigger bus is supported on these cards on
2113 subdevice 10. See the comedilib documentation for details.
2115 Information (number of channels, bits, etc.) for some devices may be
2116 incorrect. Please check this and submit a bug if there are problems
2119 SCXI is probably broken for m-series boards.
2122 - When DMA is enabled, COMEDI_EV_CONVERT does
2129 Description: National Instruments general purpose counters
2131 Author: J.P. Mellor <jpmellor@rose-hulman.edu>,
2132 Herman.Bruyninckx@mech.kuleuven.ac.be,
2133 Wim.Meeussen@mech.kuleuven.ac.be,
2134 Klaas.Gadeyne@mech.kuleuven.ac.be,
2135 Frank Mori Hess <fmhess@users.sourceforge.net>
2136 Updated: Thu Nov 16 09:50:32 EST 2006
2139 This module is not used directly by end-users. Rather, it
2140 is used by other drivers (for example ni_660x and ni_pcimio)
2141 to provide support for NI's general purpose counters. It was
2142 originally based on the counter code from ni_660x.c and
2146 DAQ 660x Register-Level Programmer Manual (NI 370505A-01)
2147 DAQ 6601/6602 User Manual (NI 322137B-01)
2148 340934b.pdf DAQ-STC reference manual
2154 Description: Advantech PCL-711 and 711b, ADLink ACL-8112
2155 Author: ds, Janne Jalkanen <jalkanen@cs.hut.fi>, Eric Bunn <ebu@cs.hut.fi>
2156 Status: mostly complete
2157 Devices: [Advantech] PCL-711 (pcl711), PCL-711B (pcl711b),
2158 [AdLink] ACL-8112HG (acl8112hg), ACL-8112DG (acl8112dg)
2160 Since these boards do not have DMA or FIFOs, only immediate mode is
2167 Description: Advantech PCL-724, PCL-722, PCL-731 ADLink ACL-7122, ACL-7124,
2169 Author: Michal Dobes <dobes@tesnet.cz>
2170 Devices: [Advantech] PCL-724 (pcl724), PCL-722 (pcl722), PCL-731 (pcl731),
2171 [ADLink] ACL-7122 (acl7122), ACL-7124 (acl7124), PET-48DIO (pet48dio)
2174 This is driver for digital I/O boards PCL-722/724/731 with 144/24/48 DIO
2175 and for digital I/O boards ACL-7122/7124/PET-48DIO with 144/24/48 DIO.
2176 It need 8255.o for operations and only immediate mode is supported.
2177 See the source for configuration details.
2182 Description: Advantech PCL-725 (& compatibles)
2185 Devices: [Advantech] PCL-725 (pcl725)
2190 Description: Advantech PCL-726 & compatibles
2193 Devices: [Advantech] PCL-726 (pcl726), PCL-727 (pcl727), PCL-728 (pcl728),
2194 [ADLink] ACL-6126 (acl6126), ACL-6128 (acl6128)
2196 Interrupts are not supported.
2198 Options for PCL-726:
2200 [2]...[7] - D/A output range for channel 1-6:
2201 0: 0-5V, 1: 0-10V, 2: +/-5V, 3: +/-10V,
2202 4: 4-20mA, 5: unknown (external reference)
2204 Options for PCL-727:
2206 [2]...[13] - D/A output range for channel 1-12:
2207 0: 0-5V, 1: 0-10V, 2: +/-5V,
2210 Options for PCL-728 and ACL-6128:
2212 [2], [3] - D/A output range for channel 1 and 2:
2213 0: 0-5V, 1: 0-10V, 2: +/-5V, 3: +/-10V,
2214 4: 4-20mA, 5: 0-20mA
2216 Options for ACL-6126:
2218 [1] - IRQ (0=disable, 3, 5, 6, 7, 9, 10, 11, 12, 15) (currently ignored)
2219 [2]...[7] - D/A output range for channel 1-6:
2220 0: 0-5V, 1: 0-10V, 2: +/-5V, 3: +/-10V,
2226 Description: Advantech PCL-730 (& compatibles)
2227 Author: José Luis Sánchez (jsanchezv@teleline.es)
2229 Devices: [Advantech] PCL-730 (pcl730), [ICP] ISO-730 (iso730),
2230 [Adlink] ACL-7130 (acl7130)
2232 Interrupts are not supported.
2233 The ACL-7130 card have an 8254 timer/counter not supported by this driver.
2238 Description: Advantech PCL-812/PG, PCL-813/B,
2239 ADLink ACL-8112DG/HG/PG, ACL-8113, ACL-8216,
2240 ICP DAS A-821PGH/PGL/PGL-NDA, A-822PGH/PGL, A-823PGH/PGL, A-826PG,
2242 Author: Michal Dobes <dobes@tesnet.cz>
2243 Devices: [Advantech] PCL-812 (pcl812), PCL-812PG (pcl812pg),
2244 PCL-813 (pcl813), PCL-813B (pcl813b), [ADLink] ACL-8112DG (acl8112dg),
2245 ACL-8112HG (acl8112hg), ACL-8113 (acl-8113), ACL-8216 (acl8216),
2246 [ICP] ISO-813 (iso813), A-821PGH (a821pgh), A-821PGL (a821pgl),
2247 A-821PGL-NDA (a821pclnda), A-822PGH (a822pgh), A-822PGL (a822pgl),
2248 A-823PGH (a823pgh), A-823PGL (a823pgl), A-826PG (a826pg)
2249 Updated: Mon, 06 Aug 2007 12:03:15 +0100
2250 Status: works (I hope. My board fire up under my hands
2251 and I cann't test all features.)
2253 This driver supports insn and cmd interfaces. Some boards support only insn
2254 becouse their hardware don't allow more (PCL-813/B, ACL-8113, ISO-813).
2255 Data transfer over DMA is supported only when you measure only one
2256 channel, this is too hardware limitation of these boards.
2258 Options for PCL-812:
2260 [1] - IRQ (0=disable, 2, 3, 4, 5, 6, 7; 10, 11, 12, 14, 15)
2261 [2] - DMA (0=disable, 1, 3)
2262 [3] - 0=trigger source is internal 8253 with 2MHz clock
2263 1=trigger source is external
2264 [4] - 0=A/D input range is +/-10V
2265 1=A/D input range is +/-5V
2266 2=A/D input range is +/-2.5V
2267 3=A/D input range is +/-1.25V
2268 4=A/D input range is +/-0.625V
2269 5=A/D input range is +/-0.3125V
2270 [5] - 0=D/A outputs 0-5V (internal reference -5V)
2271 1=D/A outputs 0-10V (internal reference -10V)
2272 2=D/A outputs unknow (external reference)
2274 Options for PCL-812PG, ACL-8112PG:
2276 [1] - IRQ (0=disable, 2, 3, 4, 5, 6, 7; 10, 11, 12, 14, 15)
2277 [2] - DMA (0=disable, 1, 3)
2278 [3] - 0=trigger source is internal 8253 with 2MHz clock
2279 1=trigger source is external
2280 [4] - 0=A/D have max +/-5V input
2281 1=A/D have max +/-10V input
2282 [5] - 0=D/A outputs 0-5V (internal reference -5V)
2283 1=D/A outputs 0-10V (internal reference -10V)
2284 2=D/A outputs unknow (external reference)
2286 Options for ACL-8112DG/HG, A-822PGL/PGH, A-823PGL/PGH, ACL-8216, A-826PG:
2288 [1] - IRQ (0=disable, 2, 3, 4, 5, 6, 7; 10, 11, 12, 14, 15)
2289 [2] - DMA (0=disable, 1, 3)
2290 [3] - 0=trigger source is internal 8253 with 2MHz clock
2291 1=trigger source is external
2292 [4] - 0=A/D channels are S.E.
2293 1=A/D channels are DIFF
2294 [5] - 0=D/A outputs 0-5V (internal reference -5V)
2295 1=D/A outputs 0-10V (internal reference -10V)
2296 2=D/A outputs unknow (external reference)
2298 Options for A-821PGL/PGH:
2300 [1] - IRQ (0=disable, 2, 3, 4, 5, 6, 7)
2301 [2] - 0=A/D channels are S.E.
2302 1=A/D channels are DIFF
2303 [3] - 0=D/A output 0-5V (internal reference -5V)
2304 1=D/A output 0-10V (internal reference -10V)
2306 Options for A-821PGL-NDA:
2308 [1] - IRQ (0=disable, 2, 3, 4, 5, 6, 7)
2309 [2] - 0=A/D channels are S.E.
2310 1=A/D channels are DIFF
2312 Options for PCL-813:
2315 Options for PCL-813B:
2317 [1] - 0= bipolar inputs
2320 Options for ACL-8113, ISO-813:
2322 [1] - 0= 10V bipolar inputs
2323 1= 10V unipolar inputs
2324 2= 20V bipolar inputs
2325 3= 20V unipolar inputs
2330 Description: Advantech PCL-816 cards, PCL-814
2331 Author: Juan Grigera <juan@grigera.com.ar>
2332 Devices: [Advantech] PCL-816 (pcl816), PCL-814B (pcl814b)
2334 Updated: Tue, 2 Apr 2002 23:15:21 -0800
2336 PCL 816 and 814B have 16 SE/DIFF ADCs, 16 DACs, 16 DI and 16 DO.
2337 Differences are at resolution (16 vs 12 bits).
2339 The driver support AI command mode, other subdevices not written.
2341 Analog output and digital input and output are not supported.
2343 Configuration Options:
2345 [1] - IRQ (0=disable, 2, 3, 4, 5, 6, 7)
2346 [2] - DMA (0=disable, 1, 3)
2347 [3] - 0, 10=10MHz clock for 8254
2348 1= 1MHz clock for 8254
2354 Description: Advantech PCL-818 cards, PCL-718
2355 Author: Michal Dobes <dobes@tesnet.cz>
2356 Devices: [Advantech] PCL-818L (pcl818l), PCL-818H (pcl818h),
2357 PCL-818HD (pcl818hd), PCL-818HG (pcl818hg), PCL-818 (pcl818),
2361 All cards have 16 SE/8 DIFF ADCs, one or two DACs, 16 DI and 16 DO.
2362 Differences are only at maximal sample speed, range list and FIFO
2364 The driver support AI mode 0, 1, 3 other subdevices (AO, DI, DO) support
2365 only mode 0. If DMA/FIFO/INT are disabled then AI support only mode 0.
2366 PCL-818HD and PCL-818HG support 1kword FIFO. Driver support this FIFO
2367 but this code is untested.
2368 A word or two about DMA. Driver support DMA operations at two ways:
2369 1) DMA uses two buffers and after one is filled then is generated
2370 INT and DMA restart with second buffer. With this mode I'm unable run
2371 more that 80Ksamples/secs without data dropouts on K6/233.
2372 2) DMA uses one buffer and run in autoinit mode and the data are
2373 from DMA buffer moved on the fly with 2kHz interrupts from RTC.
2374 This mode is used if the interrupt 8 is available for allocation.
2375 If not, then first DMA mode is used. With this I can run at
2376 full speed one card (100ksamples/secs) or two cards with
2377 60ksamples/secs each (more is problem on account of ISA limitations).
2378 To use this mode you must have compiled kernel with disabled
2379 "Enhanced Real Time Clock Support".
2380 Maybe you can have problems if you use xntpd or similar.
2381 If you've data dropouts with DMA mode 2 then:
2383 b) switch text mode console to fb.
2385 Options for PCL-818L:
2387 [1] - IRQ (0=disable, 2, 3, 4, 5, 6, 7)
2388 [2] - DMA (0=disable, 1, 3)
2389 [3] - 0, 10=10MHz clock for 8254
2390 1= 1MHz clock for 8254
2391 [4] - 0, 5=A/D input -5V.. +5V
2392 1, 10=A/D input -10V..+10V
2393 [5] - 0, 5=D/A output 0-5V (internal reference -5V)
2394 1, 10=D/A output 0-10V (internal reference -10V)
2395 2 =D/A output unknow (external reference)
2397 Options for PCL-818, PCL-818H:
2399 [1] - IRQ (0=disable, 2, 3, 4, 5, 6, 7)
2400 [2] - DMA (0=disable, 1, 3)
2401 [3] - 0, 10=10MHz clock for 8254
2402 1= 1MHz clock for 8254
2403 [4] - 0, 5=D/A output 0-5V (internal reference -5V)
2404 1, 10=D/A output 0-10V (internal reference -10V)
2405 2 =D/A output unknow (external reference)
2407 Options for PCL-818HD, PCL-818HG:
2409 [1] - IRQ (0=disable, 2, 3, 4, 5, 6, 7)
2410 [2] - DMA/FIFO (-1=use FIFO, 0=disable both FIFO and DMA,
2411 1=use DMA ch 1, 3=use DMA ch 3)
2412 [3] - 0, 10=10MHz clock for 8254
2413 1= 1MHz clock for 8254
2414 [4] - 0, 5=D/A output 0-5V (internal reference -5V)
2415 1, 10=D/A output 0-10V (internal reference -10V)
2416 2 =D/A output unknow (external reference)
2418 Options for PCL-718:
2420 [1] - IRQ (0=disable, 2, 3, 4, 5, 6, 7)
2421 [2] - DMA (0=disable, 1, 3)
2422 [3] - 0, 10=10MHz clock for 8254
2423 1= 1MHz clock for 8254
2424 [4] - 0=A/D Range is +/-10V
2429 5= user defined bipolar
2434 10= user defined unipolar
2435 [5] - 0, 5=D/A outputs 0-5V (internal reference -5V)
2436 1, 10=D/A outputs 0-10V (internal reference -10V)
2437 2=D/A outputs unknow (external reference)
2438 [6] - 0, 60=max 60kHz A/D sampling
2439 1,100=max 100kHz A/D sampling (PCL-718 with Option 001 installed)
2445 Description: Advantech PCM-3724
2446 Author: Drew Csillag <drew_csillag@yahoo.com>
2447 Devices: [Advantech] PCM-3724 (pcm724)
2450 This is driver for digital I/O boards PCM-3724 with 48 DIO.
2451 It needs 8255.o for operations and only immediate mode is supported.
2452 See the source for configuration details.
2454 Copy/pasted/hacked from pcm724.c
2459 Description: PCM3730
2461 Devices: [Advantech] PCM-3730 (pcm3730)
2464 Configuration options:
2470 Description: Winsystems PCM-A/D12, PCM-A/D16
2472 Devices: [Winsystems] PCM-A/D12 (pcmad12), PCM-A/D16 (pcmad16)
2475 This driver was written on a bet that I couldn't write a driver
2476 in less than 2 hours. I won the bet, but never got paid. =(
2478 Configuration options:
2481 [2] - Analog input reference
2484 [3] - Analog input encoding (must match jumpers)
2486 1 = two's complement
2491 Description: A driver for the Winsystems PCM-D/A-12
2492 Devices: [Winsystems] PCM-D/A-12 (pcmda12)
2493 Author: Calin Culianu <calin@ajvar.org>
2494 Updated: Fri, 13 Jan 2006 12:01:01 -0500
2497 A driver for the relatively straightforward-to-program PCM-D/A-12.
2498 This board doesn't support commands, and the only way to set its
2499 analog output range is to jumper the board. As such,
2500 comedi_data_write() ignores the range value specified.
2502 The board uses 16 consecutive I/O addresses starting at the I/O port
2503 base address. Each address corresponds to the LSB then MSB of a
2504 particular channel from 0-7.
2506 Note that the board is not ISA-PNP capable and thus
2507 needs the I/O port comedi_config parameter.
2509 Note that passing a nonzero value as the second config option will
2510 enable "simultaneous xfer" mode for this board, in which AO writes
2511 will not take effect until a subsequent read of any AO channel. This
2512 is so that one can speed up programming by preloading all AO registers
2513 with values before simultaneously setting them to take effect with one
2516 Configuration Options:
2517 [0] - I/O port base address
2518 [1] - Do Simultaneous Xfer (see description)
2523 Description: A driver for the PCM-MIO multifunction board
2524 Devices: [Winsystems] PCM-MIO (pcmmio)
2525 Author: Calin Culianu <calin@ajvar.org>
2526 Updated: Wed, May 16 2007 16:21:10 -0500
2529 A driver for the relatively new PCM-MIO multifunction board from
2530 Winsystems. This board is a PC-104 based I/O board. It contains
2532 subdevice 0 - 16 channels of 16-bit AI
2533 subdevice 1 - 8 channels of 16-bit AO
2534 subdevice 2 - first 24 channels of the 48 channel of DIO (with edge-triggered interrupt support)
2535 subdevice 3 - last 24 channels of the 48 channel DIO (no interrupt support for this bank of channels)
2539 Synchronous reads and writes are the only things implemented for AI and AO,
2540 even though the hardware itself can do streaming acquisition, etc. Anyone
2541 want to add asynchronous I/O for AI/AO as a feature? Be my guest...
2543 Asynchronous I/O for the DIO subdevices *is* implemented, however! They are
2544 basically edge-triggered interrupts for any configuration of the first
2547 Also note that this interrupt support is untested.
2549 A few words about edge-detection IRQ support (commands on DIO):
2551 * To use edge-detection IRQ support for the DIO subdevice, pass the IRQ
2552 of the board to the comedi_config command. The board IRQ is not jumpered
2553 but rather configured through software, so any IRQ from 1-15 is OK.
2555 * Due to the genericity of the comedi API, you need to create a special
2556 comedi_command in order to use edge-triggered interrupts for DIO.
2558 * Use comedi_commands with TRIG_NOW. Your callback will be called each
2559 time an edge is detected on the specified DIO line(s), and the data
2560 values will be two sample_t's, which should be concatenated to form
2561 one 32-bit unsigned int. This value is the mask of channels that had
2562 edges detected from your channel list. Note that the bits positions
2563 in the mask correspond to positions in your chanlist when you
2564 specified the command and *not* channel id's!
2566 * To set the polarity of the edge-detection interrupts pass a nonzero value
2567 for either CR_RANGE or CR_AREF for edge-up polarity, or a zero
2568 value for both CR_RANGE and CR_AREF if you want edge-down polarity.
2570 Configuration Options:
2571 [0] - I/O port base address
2572 [1] - IRQ (optional -- for edge-detect interrupt support only, leave out if you don't need this feature)
2577 Description: A driver for the PCM-UIO48A and PCM-UIO96A boards from Winsystems.
2578 Devices: [Winsystems] PCM-UIO48A (pcmuio48), PCM-UIO96A (pcmuio96)
2579 Author: Calin Culianu <calin@ajvar.org>
2580 Updated: Fri, 13 Jan 2006 12:01:01 -0500
2583 A driver for the relatively straightforward-to-program PCM-UIO48A and
2584 PCM-UIO96A boards from Winsystems. These boards use either one or two
2585 (in the 96-DIO version) WS16C48 ASIC HighDensity I/O Chips (HDIO).
2586 This chip is interesting in that each I/O line is individually
2587 programmable for INPUT or OUTPUT (thus comedi_dio_config can be done
2588 on a per-channel basis). Also, each chip supports edge-triggered
2589 interrupts for the first 24 I/O lines. Of course, since the
2590 96-channel version of the board has two ASICs, it can detect polarity
2591 changes on up to 48 I/O lines. Since this is essentially an (non-PnP)
2592 ISA board, I/O Address and IRQ selection are done through jumpers on
2593 the board. You need to pass that information to this driver as the
2594 first and second comedi_config option, respectively. Note that the
2595 48-channel version uses 16 bytes of IO memory and the 96-channel
2596 version uses 32-bytes (in case you are worried about conflicts). The
2597 48-channel board is split into two 24-channel comedi subdevices.
2598 The 96-channel board is split into 4 24-channel DIO subdevices.
2600 Note that IRQ support has been added, but it is untested.
2602 To use edge-detection IRQ support, pass the IRQs of both ASICS
2603 (for the 96 channel version) or just 1 ASIC (for 48-channel version).
2604 Then, use use comedi_commands with TRIG_NOW.
2605 Your callback will be called each time an edge is triggered, and the data
2606 values will be two sample_t's, which should be concatenated to form one
2607 32-bit unsigned int. This value is the mask of channels that had
2608 edges detected from your channel list. Note that the bits positions
2609 in the mask correspond to positions in your chanlist when you specified
2610 the command and *not* channel id's!
2612 To set the polarity of the edge-detection interrupts pass a nonzero value for
2613 either CR_RANGE or CR_AREF for edge-up polarity, or a zero value for both
2614 CR_RANGE and CR_AREF if you want edge-down polarity.
2616 In the 48-channel version:
2618 On subdev 0, the first 24 channels channels are edge-detect channels.
2620 In the 96-channel board you have the collowing channels that can do edge detection:
2622 subdev 0, channels 0-24 (first 24 channels of 1st ASIC)
2623 subdev 2, channels 0-24 (first 24 channels of 2nd ASIC)
2625 Configuration Options:
2626 [0] - I/O port base address
2627 [1] - IRQ (for first ASIC, or first 24 channels)
2628 [2] - IRQ for second ASIC (pcmuio96 only - IRQ for chans 48-72 .. can be the same as first irq!)
2633 Description: Generic driver for very simple devices
2635 Devices: [Keithley Metrabyte] DAC-02 (dac02), [Advantech] PCL-733 (pcl733),
2637 Updated: Sat, 16 Mar 2002 17:34:48 -0800
2640 This driver is indended to support very simple ISA-based devices,
2642 dac02 - Keithley DAC-02 analog output board
2643 pcl733 - Advantech PCL-733
2644 pcl734 - Advantech PCL-734
2646 Configuration options:
2651 Driver: quatech_daqp_cs
2652 Description: Quatech DAQP PCMCIA data capture cards
2653 Author: Brent Baccala <baccala@freesoft.org>
2655 Devices: [Quatech] DAQP-208 (daqp), DAQP-308
2660 Description: Real Time Devices PCI4520/DM7520
2661 Author: Dan Christian
2662 Devices: [Real Time Devices] DM7520HR-1 (DM7520), DM7520HR-8 (DM7520-8),
2663 PCI4520 (PCI4520), PCI4520-8 (PCI4520-8)
2664 Status: Works. Only tested on DM7520-8. Not SMP safe.
2666 Configuration options:
2667 [0] - PCI bus of device (optional)
2668 If bus/slot is not specified, the first available PCI
2669 device will be used.
2670 [1] - PCI slot of device (optional)
2675 Description: Analog Devices RTI-800/815
2678 Devices: [Analog Devices] RTI-800 (rti800), RTI-815 (rti815)
2680 Configuration options:
2681 [0] - I/O port base address
2685 1 = pseudodifferential (common)
2692 0 = two's complement
2697 [5] - DAC 0 encoding
2698 0 = two's complement
2700 [6] - DAC 1 range (same as DAC 0)
2701 [7] - DAC 1 encoding (same as DAC 0)
2706 Description: Analog Devices RTI-802
2707 Author: Anders Blomdell <anders.blomdell@control.lth.se>
2708 Devices: [Analog Devices] RTI-802 (rti802)
2711 Configuration Options:
2714 [2] - dac#0 0=two's comp, 1=straight
2715 [3] - dac#0 0=bipolar, 1=unipolar
2723 Description: Sensoray 526 driver
2724 Devices: [Sensoray] 526 (s526)
2726 Everett Wang <everett.wang@everteq.com>
2727 Updated: Thu, 14 Sep. 2006
2728 Status: experimental
2734 Commands are not supported yet.
2736 Configuration Options:
2738 comedi_config /dev/comedi0 s526 0x2C0,0x3
2744 Description: Sensoray 626 driver
2745 Devices: [Sensoray] 626 (s626)
2746 Authors: Gianluca Palli <gpalli@deis.unibo.it>,
2747 Updated: Fri, 15 Feb 2008 10:28:42 +0000
2748 Status: experimental
2750 Configuration options:
2751 [0] - PCI bus of device (optional)
2752 [1] - PCI slot of device (optional)
2753 If bus/slot is not specified, the first supported
2754 PCI device found will be used.
2756 INSN_CONFIG instructions:
2764 s626 has 3 dio subdevices (2,3 and 4) each with 16 i/o channels
2765 supported configuration options:
2766 INSN_CONFIG_DIO_QUERY
2771 Every channel must be configured before reading.
2775 insn.insn=INSN_CONFIG; //configuration instruction
2776 insn.n=1; //number of operation (must be 1)
2777 insn.data=&initialvalue; //initial value loaded into encoder
2778 //during configuration
2779 insn.subdev=5; //encoder subdevice
2780 insn.chanspec=CR_PACK(encoder_channel,0,AREF_OTHER); //encoder_channel
2783 comedi_do_insn(cf,&insn); //executing configuration
2788 Description: Driver for serial connected hardware
2790 Author: Anders Blomdell
2791 Updated: Fri, 7 Jun 2002 12:56:45 -0700
2792 Status: in development
2798 Description: Skeleton driver, an example for driver writers
2801 Updated: Mon, 18 Mar 2002 15:34:01 -0800
2804 This driver is a documented example on how Comedi drivers are
2807 Configuration Options:
2813 Description: SSV Embedded Systems DIL/Net-PC
2814 Author: Robert Schwebel <robert@schwebel.de>
2815 Devices: [SSV Embedded Systems] DIL/Net-PC 1486 (dnp-1486)
2821 Description: Driver for Fastwel UNIOxx-5 (analog and digital i/o) boards.
2822 Author: Kruchinin Daniil (asgard) <asgard@etersoft.ru>
2825 Devices: [Fastwel] UNIOxx-5 (unioxx5),
2827 This card supports digital and analog I/O. It written for g01
2829 channels range: 0 .. 23 dio channels
2830 and 0 .. 11 analog modules range
2831 During attaching unioxx5 module displays modules identifiers
2832 (see dmesg after comedi_config) in format:
2833 | [module_number] module_id |
2839 Description: University of Stirling USB DAQ & INCITE Technology Limited
2840 Devices: [ITL] USB-DUX (usbdux.o)
2841 Author: Bernd Porr <BerndPorr@f2s.com>
2842 Updated: 25 Nov 2007
2844 Configuration options:
2845 You have to upload firmware with the -i option. The
2846 firmware is usually installed under /usr/share/usb or
2847 /usr/local/share/usb or /lib/firmware.
2849 Connection scheme for the counter at the digital port:
2850 0=/CLK0, 1=UP/DOWN0, 2=RESET0, 4=/CLK1, 5=UP/DOWN1, 6=RESET1.
2851 The sampling rate of the counter is approximately 500Hz.
2853 Please note that under USB2.0 the length of the channel list determines
2854 the max sampling rate. If you sample only one channel you get 8kHz
2855 sampling rate. If you sample two channels you get 4kHz and so on.
2860 Description: ITL USB-DUXfast
2861 Devices: [ITL] USB-DUX (usbduxfast.o)
2862 Author: Bernd Porr <BerndPorr@f2s.com>
2863 Updated: 04 Dec 2006