5.6. Kernel drivers
Prev | 5. Comedi reference | Next

### 5.6. Kernel drivers

#### 5.6.1. 8255 -- generic 8255 support

Author: ds

Status: works

Manufacturer | Device | Name
--- | --- | ---
standard | 8255 | 8255

    The classic in digital I/O.  The 8255 appears in Comedi as a single
    digital I/O subdevice with 24 channels.  The channel 0 corresponds
    to the 8255's port A, bit 0; channel 23 corresponds to port C, bit
    7.  Direction configuration is done in blocks, with channels 0-7,
    8-15, 16-19, and 20-23 making up the 4 blocks.  The only 8255 mode
    supported is mode 0.

    You should enable compilation this driver if you plan to use a board
    that has an 8255 chip.  For multifunction boards, the main driver will
    configure the 8255 subdevice automatically.

    This driver also works independently with ISA and PCI cards that
    directly map the 8255 registers to I/O ports, including cards with
    multiple 8255 chips.  To configure the driver for such a card, the
    option list should be a list of the I/O port bases for each of the
    8255 chips.  For example,

      comedi_config /dev/comedi0 8255 0x200,0x204,0x208,0x20c

    Note that most PCI 8255 boards do NOT work with this driver, and
    need a separate driver as a wrapper.  For those that do work, the
    I/O port base address can be found in the output of 'lspci -v'.

#### 5.6.2. acl7225b -- ADLINK NuDAQ ACL-7225b & compatibles

Author: José Luis Sánchez (jsanchezv@teleline.es)

Status: testing

Manufacturer | Device | Name
--- | --- | ---
ADLINK | ACL-7225b | acl7225b
ICP | P16R16DIO | p16r16dio

#### 5.6.3. adl_pci6208 -- ADLINK PCI-6216V

Author: nsyeow <nsyeow@pd.jaring.my>

Status: untested

Manufacturer | Device | Name
--- | --- | ---
ADLINK | PCI-6216V | adl_pci6208

    Configuration Options:
      none

    The driver should work for PCI-6208V, PCI-6208A and PCI-6216V, but all
    devices will be treated as a PCI-6216V.

    For PCI-6208V and PCI-6208A, only AO channels 0 to 7 are connected and
    AO channels 8 to 15 will behave as "phantom" outputs.

    The current output ranges for PCI-6208A are not supported.  Only Comedi
    sample values 0x8000 to 0xffff should be written to the AO channels on a
    PCI-6208A.  Its voltage to current daughter board (EXP-8A) only supports
    an input range of 0 to 10 volts and negative voltages may damage the
    board.  Comedi sample values 0x0000 to 0x7fff would produce negative
    voltages from -10 to 0 volts.

#### 5.6.4. adl_pci7230 -- Driver for the ADLINK PCI-7230 32 ch. isolated digital io board

Author: David Fernandez <dfcastelao@gmail.com>

Status: experimental

Manufacturer | Device | Name
--- | --- | ---
ADLINK | PCI-7230 | adl_pci7230

    Configuration Options:
      [0] - PCI bus of device (optional)
      [1] - PCI slot of device (optional)
      If bus/slot is not specified, the first supported
      PCI device found will be used.

#### 5.6.5. adl_pci7250 -- Driver for the ADLINK PCI-7250 relay output & digital input card

Author: Ian Abbott <abbotti@mev.co.uk>

Status: works

Manufacturer | Device | Name
--- | --- | ---
ADLINK | LPCI-7250 LPCIe-7250 | adl_pci7250

    The driver assumes that 3 PCI-7251 modules are fitted to the PCI-7250,
    giving 32 channels of relay outputs and 32 channels of isolated digital
    inputs.  That is also the case for the LPCI-7250 and LPCIe-7250 cards
    although they do not physically support the PCI-7251 modules.

    Not fitting the PCI-7251 modules shouldn't do any harm, but the extra
    inputs and relay outputs won't work!

    Configuration Options:
      [0] - PCI bus of device (optional)
      [1] - PCI slot of device (optional)
      If bus/slot is not specified, the first supported
      PCI device found will be used.

#### 5.6.6. adl_pci7296 -- Driver for the ADLINK PCI-7296 96 ch. digital io board

Author: Jon Grierson <jd@renko.co.uk>

Status: testing

Manufacturer | Device | Name
--- | --- | ---
ADLINK | PCI-7296 | adl_pci7296

    Configuration Options:
      [0] - PCI bus of device (optional)
      [1] - PCI slot of device (optional)
      If bus/slot is not specified, the first supported
      PCI device found will be used.

#### 5.6.7. adl_pci7432 -- Driver for the ADLINK PCI-7432 64 ch. isolated digital io board

Author: Michel Lachaine <mike@mikelachaine.ca>

Status: experimental

Manufacturer | Device | Name
--- | --- | ---
ADLINK | PCI-7432 | adl_pci7432

    Configuration Options:
      [0] - PCI bus of device (optional)
      [1] - PCI slot of device (optional)
      If bus/slot is not specified, the first supported
      PCI device found will be used.

#### 5.6.8. adl_pci8164 -- Driver for the ADLINK PCI-8164 4 Axes Motion Control board

Author: Michel Lachaine <mike@mikelachaine.ca>

Status: experimental

Manufacturer | Device | Name
--- | --- | ---
ADLINK | PCI-8164 | adl_pci8164

    Configuration Options:
      [0] - PCI bus of device (optional)
      [1] - PCI slot of device (optional)
      If bus/slot is not specified, the first supported
      PCI device found will be used.

#### 5.6.9. adl_pci9111 -- ADLINK PCI-9111HR

Author: Emmanuel Pacaud <emmanuel.pacaud@univ-poitiers.fr>

Status: experimental

Manufacturer | Device | Name
--- | --- | ---
ADLINK | PCI-9111HR | adl_pci9111

      - ai_insn read
      - ao_insn read/write
      - di_insn read
      - do_insn read/write
      - ai_do_cmd mode with the following sources:

        - start_src 		TRIG_NOW
        - scan_begin_src 		TRIG_FOLLOW	TRIG_TIMER	TRIG_EXT
        - convert_src				TRIG_TIMER	TRIG_EXT
        - scan_end_src		TRIG_COUNT
        - stop_src			TRIG_COUNT	TRIG_NONE

        The scanned channels must be consecutive and start from 0. They must
        all have the same range and aref.

    Configuration options:

        [0] - PCI bus number (optional)
        [1] - PCI slot number (optional)

        If bus/slot is not specified, the first available PCI
        device will be used.

#### 5.6.10. adl_pci9112 -- ADLINK PCI-9112

Author: Pascal Berthou <berthou@laas.fr> Emmanuel Pacaud <emmanuel.pacaud@univ-poitiers.fr>

Status: experimental

Manufacturer | Device | Name
--- | --- | ---
ADLINK | PCI-9112 | adl_pci9112

      - ai_insn read
      - ao_insn read/write
      - di_insn read
      - do_insn read/write

      Following command mode are not tested
      - ai_do_cmd mode with the following sources:

        - start_src 		TRIG_NOW
        - scan_begin_src 		TRIG_FOLLOW	TRIG_TIMER	TRIG_EXT
        - convert_src				TRIG_TIMER	TRIG_EXT
        - scan_end_src		TRIG_COUNT
        - stop_src			TRIG_COUNT	TRIG_NONE

        The scanned channels must be consecutive and start from 0. They must
        all have the same range and aref.

    Configuration options:

        [0] - PCI bus number (optional)
        [1] - PCI slot number (optional)

        If bus/slot is not specified, the first available PCI
        device will be used.

#### 5.6.11. adl_pci9118 -- ADLINK PCI-9118DG, PCI-9118HG, PCI-9118HR

Author: Michal Dobes <dobes@tesnet.cz>

Status: works

Manufacturer | Device | Name
--- | --- | ---
ADLINK | PCI-9118DG | pci9118dg
ADLINK | PCI-9118HG | pci9118hg
ADLINK | PCI-9118HR | pci9118hr

    This driver supports AI, AO, DI and DO subdevices.
    AI subdevice supports cmd and insn interface,
    other subdevices support only insn interface.
    For AI:
    - If cmd->scan_begin_src=TRIG_EXT then trigger input is TGIN (pin 46).
    - If cmd->convert_src=TRIG_EXT then trigger input is EXTTRG (pin 44).
    - If cmd->start_src/stop_src=TRIG_EXT then trigger input is TGIN (pin 46).
    - It is not neccessary to have cmd.scan_end_arg=cmd.chanlist_len but
      cmd.scan_end_arg modulo cmd.chanlist_len must by 0.
    - If return value of cmdtest is 5 then you've bad channel list
      (it isn't possible mixture S.E. and DIFF inputs or bipolar and unipolar
      ranges).

    There are some hardware limitations:
    a) You cann't use mixture of unipolar/bipoar ranges or differencial/single
       ended inputs.
    b) DMA transfers must have the length aligned to two samples (32 bit),
       so there is some problems if cmd->chanlist_len is odd. This driver tries
       bypass this with adding one sample to the end of the every scan and discard
       it on output but this cann't be used if cmd->scan_begin_src=TRIG_FOLLOW
       and is used flag TRIG_WAKE_EOS, then driver switch to interrupt driven mode
       with interrupt after every sample.
    c) If isn't used DMA then you can use only mode where
       cmd->scan_begin_src=TRIG_FOLLOW.

    Configuration options:
      [0] - PCI bus of device (optional)
      [1] - PCI slot of device (optional)
              If bus/slot is not specified, then first available PCI
              card will be used.
      [2] - 0= standard 8 DIFF/16 SE channels configuration
            n= external multiplexer connected, 1<=n<=256
      [3] - 0=autoselect DMA or EOC interrupts operation
            1=disable DMA mode
            3=disable DMA and INT, only insn interface will work
      [4] - sample&hold signal - card can generate signal for external S&H board
            0=use SSHO (pin 45) signal is generated in onboard hardware S&H logic
            0!=use ADCHN7 (pin 23) signal is generated from driver, number
               say how long delay is requested in ns and sign polarity of the hold
               (in this case external multiplexor can serve only 128 channels)
      [5] - 0=stop measure on all hardware errors
            2|=ignore ADOR - A/D Overrun status
    	8|=ignore Bover - A/D Burst Mode Overrun status
    	256|=ignore nFull - A/D FIFO Full status

#### 5.6.12. adq12b -- driver for MicroAxial ADQ12-B data acquisition and control card

Author: jeremy theler <thelerg@ib.cnea.gov.ar>

Status: works

Manufacturer | Device | Name
--- | --- | ---
MicroAxial | ADQ12-B | adq12b

    Driver for the acquisition card ADQ12-B (without any add-on).

     - Analog input is subdevice 0 (16 channels single-ended or 8 differential)
     - Digital input is subdevice 1 (5 channels)
     - Digital output is subdevice 1 (8 channels)
     - The PACER is not supported in this version

    If you do not specify any options, they will default to

      # comedi_config /dev/comedi0 adq12b 0x300,0,0

      option 1: I/O base address. The following table is provided as a help
       of the hardware jumpers.

             address            jumper JADR
              0x300                 1 (factory default)
              0x320                 2
              0x340                 3
              0x360                 4
              0x380                 5
              0x3A0                 6

      option 2: unipolar/bipolar ADC selection: 0 -> bipolar, 1 -> unipolar

            selection         comedi_config option            JUB
             bipolar                0                         2-3 (factory default)
             unipolar               1                         1-2

      option 3: single-ended/differential AI selection: 0 -> SE, 1 -> differential

            selection         comedi_config option     JCHA    JCHB
           single-ended             0                  1-2     1-2 (factory default)
           differential             1                  2-3     2-3

       written by jeremy theler <thelerg@ib.cnea.gov.ar>

       instituto balseiro
       comision nacional de energia atomica
       universidad nacional de cuyo
       argentina

       21-feb-2008
         + changed supported devices string (missused the [] and ())

       13-oct-2007
         + first try

#### 5.6.13. adv_pci1710 -- Advantech PCI-1710, PCI-1710HG, PCI-1711, PCI-1713, Advantech PCI-1720, PCI-1731

Author: Michal Dobes <dobes@tesnet.cz>

Status: works

Manufacturer | Device | Name
--- | --- | ---
Advantech | PCI-1710 | pci1710 or adv_pci1710
Advantech | PCI-1710HG | pci1710hg
Advantech | PCI-1711 | pci1711 or adv_pci1710
Advantech | PCI-1713 | pci1713 or adv_pci1710
Advantech | PCI-1716 | pci1716 or adv_pci1710
Advantech | PCI-1720 | pci1720 or adv_pci1710
Advantech | PCI-1731 | pci1731 or adv_pci1710

    This driver supports AI, AO, DI and DO subdevices.
    AI subdevice supports cmd and insn interface,
    other subdevices support only insn interface.

    The PCI-1710 and PCI-1710HG have the same PCI device ID, so the
    driver cannot distinguish between them, as would be normal for a
    PCI driver.

    Configuration options:
      [0] - PCI bus of device (optional)
      [1] - PCI slot of device (optional)
              If bus/slot is not specified, the first available PCI
              device will be used.

#### 5.6.14. adv_pci1723 -- Advantech PCI-1723

Author: yonggang <rsmgnu@gmail.com>, Ian Abbott <abbotti@mev.co.uk>

Status: works

Manufacturer | Device | Name
--- | --- | ---
Advantech | PCI-1723 | adv_pci1723

    Configuration Options:
      [0] - PCI bus of device (optional)
      [1] - PCI slot of device (optional)

      If bus/slot is not specified, the first supported
      PCI device found will be used.

    Subdevice 0 is 8-channel AO, 16-bit, range +/- 10 V.

    Subdevice 1 is 16-channel DIO.  The channels are configurable as input or
    output in 2 groups (0 to 7, 8 to 15).  Configuring any channel implicitly
    configures all channels in the same group.

    1. Add the two milliamp ranges to the AO subdevice (0 to 20 mA, 4 to 20 mA).
    2. Read the initial ranges and values of the AO subdevice at start-up instead
       of reinitializing them.
    3. Implement calibration.

#### 5.6.15. adv_pci_dio -- Advantech PCI-1730, PCI-1733, PCI-1734, PCI-1735U, PCI-1736UP, PCI-1750, PCI-1751, PCI-1752, PCI-1753/E, PCI-1754, PCI-1756, PCI-1762

Author: Michal Dobes <dobes@tesnet.cz>

Status: untested

Manufacturer | Device | Name
--- | --- | ---
Advantech | PCI-1730 | adv_pci_dio
Advantech | PCI-1733 | adv_pci_dio
Advantech | PCI-1734 | adv_pci_dio
Advantech | PCI-1735U | adv_pci_dio
Advantech | PCI-1736UP | adv_pci_dio
Advantech | PCI-1739U | adv_pci_dio
Advantech | PCI-1750 | adv_pci_dio
Advantech | PCI-1751 | adv_pci_dio
Advantech | PCI-1752 | adv_pci_dio
Advantech | PCI-1753 | adv_pci_dio
Advantech | PCI-1753+PCI-1753E | adv_pci_dio
Advantech | PCI-1754 | adv_pci_dio
Advantech | PCI-1756 | adv_pci_dio
Advantech | PCI-1760 | adv_pci_dio
Advantech | PCI-1762 | adv_pci_dio

    This driver supports now only insn interface for DI/DO/DIO.

    Configuration options:
      [0] - PCI bus of device (optional)
      [1] - PCI slot of device (optional)
              If bus/slot is not specified, the first available PCI
              device will be used.

#### 5.6.16. aio_aio12_8 -- Acces I/O Products PC-104 AIO12-8 Analog I/O Board

Author: Pablo Mejia <pablo.mejia@cctechnol.com>

Status: experimental

Manufacturer | Device | Name
--- | --- | ---
Acces I/O | PC-104 AIO12-8 | adv_pci_dio

    Configuration Options:
      [0] - I/O port base address

      Only synchronous operations are supported.

#### 5.6.17. aio_iiro_16 -- Acces I/O Products PC-104 IIRO16 Relay And Isolated Input Board

Author: Zachary Ware <zach.ware@cctechnol.com>

Status: experimental

Manufacturer | Device | Name
--- | --- | ---
Acces I/O | PC-104 AIO12-8 | adv_pci_dio

    Configuration Options:
      [0] - I/O port base address

#### 5.6.18. amplc_dio200 -- Amplicon 200 Series Digital I/O

Author: Ian Abbott <abbotti@mev.co.uk>

Status: works

Manufacturer | Device | Name
--- | --- | ---
Amplicon | PC212E | pc212e
Amplicon | PC214E | pc214e
Amplicon | PC215E | pc215e
Amplicon | PCI215 | pci215 or amplc_dio200
Amplicon | PCIe215 | pcie215 or amplc_dio200
Amplicon | PC218E | pc218e
Amplicon | PCIe236 | pcie236 or amplc_dio200
Amplicon | PC272E | pc272e
Amplicon | PCI272 | pci272 or amplc_dio200
Amplicon | PCIe296 | pcie296 or amplc_dio200

    Configuration options - PC212E, PC214E, PC215E, PC218E, PC272E:
      [0] - I/O port base address
      [1] - IRQ (optional, but commands won't work without it)

    Configuration options - PCI215, PCIe215, PCIe236, PCI272, PCIe296:
      [0] - PCI bus of device (optional)
      [1] - PCI slot of device (optional)
      If bus/slot is not specified, the first available PCI device will
      be used.

    Passing a zero for an option is the same as leaving it unspecified.

    SUBDEVICES

                        PC212E         PC214E      PC215E/PCI215
                     -------------  -------------  -------------
      Subdevices           6              4              5
       0                 PPI-X          PPI-X          PPI-X
       1                 CTR-Y1         PPI-Y          PPI-Y
       2                 CTR-Y2         CTR-Z1*        CTR-Z1
       3                 CTR-Z1       INTERRUPT*       CTR-Z2
       4                 CTR-Z2                      INTERRUPT
       5               INTERRUPT

                        PCIe215        PC218E         PCIe236
                     -------------  -------------  -------------
      Subdevices           8              7              8
       0                 PPI-X          CTR-X1         PPI-X
       1                 UNUSED         CTR-X2         UNUSED
       2                 PPI-Y          CTR-Y1         UNUSED
       3                 UNUSED         CTR-Y2         UNUSED
       4                 CTR-Z1         CTR-Z1         CTR-Z1
       5                 CTR-Z2         CTR-Z2         CTR-Z2
       6                 TIMER        INTERRUPT        TIMER
       7               INTERRUPT                     INTERRUPT

                     PC272E/PCI272     PCIe296
                     -------------  -------------
      Subdevices           4              8
       0                 PPI-X          PPI-X1
       1                 PPI-Y          PPI-X2
       2                 PPI-Z          PPI-Y1
       3               INTERRUPT        PPI-Y2
       4                                CTR-Z1
       5                                CTR-Z2
       6                                TIMER
       7                              INTERRUPT

    Each PPI is a 8255 chip providing 24 DIO channels.  The DIO channels
    are configurable as inputs or outputs in four groups:

      Port A  - channels  0 to  7
      Port B  - channels  8 to 15
      Port CL - channels 16 to 19
      Port CH - channels 20 to 23

    Only mode 0 of the 8255 chips is supported.

    Each CTR is a 8254 chip providing 3 16-bit counter channels.  Each
    channel is configured individually with INSN_CONFIG instructions.  The
    specific type of configuration instruction is specified in data[0].
    Some configuration instructions expect an additional parameter in
    data[1]; others return a value in data[1].  The following configuration
    instructions are supported:

      INSN_CONFIG_SET_COUNTER_MODE.  Sets the counter channel's mode and
        BCD/binary setting specified in data[1].

      INSN_CONFIG_8254_READ_STATUS.  Reads the status register value for the
        counter channel into data[1].

      INSN_CONFIG_SET_CLOCK_SRC.  Sets the counter channel's clock source as
        specified in data[1] (this is a hardware-specific value).  Not
        supported on PC214E.  For the other boards, valid clock sources are
        0 to 7 as follows:

          0.  CLK n, the counter channel's dedicated CLK input from the SK1
            connector.  (N.B. for other values, the counter channel's CLKn
            pin on the SK1 connector is an output!)
          1.  Internal 10 MHz clock.
          2.  Internal 1 MHz clock.
          3.  Internal 100 kHz clock.
          4.  Internal 10 kHz clock.
          5.  Internal 1 kHz clock.
          6.  OUT n-1, the output of counter channel n-1 (see note 1 below).
          7.  Ext Clock, the counter chip's dedicated Ext Clock input from
            the SK1 connector.  This pin is shared by all three counter
            channels on the chip.

      INSN_CONFIG_GET_CLOCK_SRC.  Returns the counter channel's current
        clock source in data[1].  For internal clock sources, data[2] is set
        to the period in ns.

      INSN_CONFIG_SET_GATE_SRC.  Sets the counter channel's gate source as
        specified in data[2] (this is a hardware-specific value).  Not
        supported on PC214E.  For the other boards, valid gate sources are 0
        to 7 as follows:

          0.  VCC (internal +5V d.c.), i.e. gate permanently enabled.
          1.  GND (internal 0V d.c.), i.e. gate permanently disabled.
          2.  GAT n, the counter channel's dedicated GAT input from the SK1
            connector.  (N.B. for other values, the counter channel's GATn
            pin on the SK1 connector is an output!)
          3.  /OUT n-2, the inverted output of counter channel n-2 (see note
            2 below).
          4.  Reserved.
          5.  Reserved.
          6.  Reserved.
          7.  Reserved.

      INSN_CONFIG_GET_GATE_SRC.  Returns the counter channel's current gate
        source in data[2].

    Clock and gate interconnection notes:

      1.  Clock source OUT n-1 is the output of the preceding channel on the
      same counter subdevice if n > 0, or the output of channel 2 on the
      preceding counter subdevice (see note 3) if n = 0.

      2.  Gate source /OUT n-2 is the inverted output of channel 0 on the
      same counter subdevice if n = 2, or the inverted output of channel n+1
      on the preceding counter subdevice (see note 3) if n < 2.

      3.  The counter subdevices are connected in a ring, so the highest
      counter subdevice precedes the lowest.

    The 'TIMER' subdevice is a free-running 32-bit timer subdevice.

    The 'INTERRUPT' subdevice pretends to be a digital input subdevice.  The
    digital inputs come from the interrupt status register.  The number of
    channels matches the number of interrupt sources.  The PC214E does not
    have an interrupt status register; see notes on 'INTERRUPT SOURCES'
    below.

    INTERRUPT SOURCES

                        PC212E         PC214E      PC215E/PCI215
                     -------------  -------------  -------------
      Sources              6              1              6
       0               PPI-X-C0       JUMPER-J5      PPI-X-C0
       1               PPI-X-C3                      PPI-X-C3
       2              CTR-Y1-OUT1                    PPI-Y-C0
       3              CTR-Y2-OUT1                    PPI-Y-C3
       4              CTR-Z1-OUT1                   CTR-Z1-OUT1
       5              CTR-Z2-OUT1                   CTR-Z2-OUT1

                        PCIe215        PC218E         PCIe236
                     -------------  -------------  -------------
      Sources              6              6              6
       0               PPI-X-C0      CTR-X1-OUT1     PPI-X-C0
       1               PPI-X-C3      CTR-X2-OUT1     PPI-X-C3
       2               PPI-Y-C0      CTR-Y1-OUT1      unused
       3               PPI-Y-C3      CTR-Y2-OUT1      unused
       4              CTR-Z1-OUT1    CTR-Z1-OUT1    CTR-Z1-OUT1
       5              CTR-Z2-OUT1    CTR-Z2-OUT1    CTR-Z2-OUT1

                     PC272E/PCI272     PCIe296
                     -------------  -------------
      Sources              6              6
       0               PPI-X-C0       PPI-X1-C0
       1               PPI-X-C3       PPI-X1-C3
       2               PPI-Y-C0       PPI-Y1-C0
       3               PPI-Y-C3       PPI-Y1-C3
       4               PPI-Z-C0      CTR-Z1-OUT1
       5               PPI-Z-C3      CTR-Z2-OUT1

    When an interrupt source is enabled in the interrupt source enable
    register, a rising edge on the source signal latches the corresponding
    bit to 1 in the interrupt status register.

    When the interrupt status register value as a whole (actually, just the
    6 least significant bits) goes from zero to non-zero, the board will
    generate an interrupt.  For level-triggered hardware interrupts (PCI
    card), the interrupt will remain asserted until the interrupt status
    register is cleared to zero.  For edge-triggered hardware interrupts
    (ISA card), no further interrupts will occur until the interrupt status
    register is cleared to zero.  To clear a bit to zero in the interrupt
    status register, the corresponding interrupt source must be disabled
    in the interrupt source enable register (there is no separate interrupt
    clear register).

    The PC214E does not have an interrupt source enable register or an
    interrupt status register; its 'INTERRUPT' subdevice has a single
    channel and its interrupt source is selected by the position of jumper
    J5.

    COMMANDS

    The driver supports a read streaming acquisition command on the
    'INTERRUPT' subdevice.  The channel list selects the interrupt sources
    to be enabled.  All channels will be sampled together (convert_src ==
    TRIG_NOW).  The scan begins a short time after the hardware interrupt
    occurs, subject to interrupt latencies (scan_begin_src == TRIG_EXT,
    scan_begin_arg == 0).  The value read from the interrupt status register
    is packed into a sampl_t value, one bit per requested channel, in the
    order they appear in the channel list.

#### 5.6.19. amplc_pc236 -- Amplicon PC36AT, PCI236

Author: Ian Abbott <abbotti@mev.co.uk>

Status: works

Manufacturer | Device | Name
--- | --- | ---
Amplicon | PC36AT | pc36at
Amplicon | PCI236 | pci236 or amplc_pc236

    Configuration options - PC36AT:
      [0] - I/O port base address
      [1] - IRQ (optional)

    Configuration options - PCI236:
      [0] - PCI bus of device (optional)
      [1] - PCI slot of device (optional)
      If bus/slot is not specified, the first available PCI device will be
      used.

    The PC36AT ISA board and PCI236 PCI board have a single 8255 appearing
    as subdevice 0.

    Subdevice 1 pretends to be a digital input device, but it always returns
    0 when read. However, if you run a command with scan_begin_src=TRIG_EXT,
    a rising edge on port C bit 3 acts as an external trigger, which can be
    used to wake up tasks.  This is like the comedi_parport device, but the
    only way to physically disable the interrupt on the PC36AT is to remove
    the IRQ jumper.  If no interrupt is connected, then subdevice 1 is
    unused.

#### 5.6.20. amplc_pc263 -- Amplicon PC263, PCI263

Author: Ian Abbott <abbotti@mev.co.uk>

Status: works

Manufacturer | Device | Name
--- | --- | ---
Amplicon | PC263 | pc263
Amplicon | PCI263 | pci263 or amplc_pc263

    Configuration options - PC263:
      [0] - I/O port base address

    Configuration options - PCI263:
      [0] - PCI bus of device (optional)
      [1] - PCI slot of device (optional)
      If bus/slot is not specified, the first available PCI device will be
      used.

    Each board appears as one subdevice, with 16 digital outputs, each
    connected to a reed-relay. Relay contacts are closed when output is 1.
    The state of the outputs can be read.

#### 5.6.21. amplc_pci224 -- Amplicon PCI224, PCI234

Author: Ian Abbott <abbotti@mev.co.uk>

Status: works, but see caveats

Manufacturer | Device | Name
--- | --- | ---
Amplicon | PCI224 | amplc_pci224 or pci224
Amplicon | PCI234 | amplc_pci224 or pci234

      - ao_insn read/write
      - ao_do_cmd mode with the following sources:

        - start_src         TRIG_INT        TRIG_EXT
        - scan_begin_src    TRIG_TIMER      TRIG_EXT
        - convert_src       TRIG_NOW
        - scan_end_src      TRIG_COUNT
        - stop_src          TRIG_COUNT      TRIG_EXT        TRIG_NONE

        The channel list must contain at least one channel with no repeated
        channels.  The scan end count must equal the number of channels in
        the channel list.

        There is only one external trigger source so only one of start_src,
        scan_begin_src or stop_src may use TRIG_EXT.

    Configuration options - PCI224:
      [0] - PCI bus of device (optional).
      [1] - PCI slot of device (optional).
              If bus/slot is not specified, the first available PCI device
              will be used.
      [2] - Select available ranges according to jumper LK1.  All channels
            are set to the same range:
            0=Jumper position 1-2 (factory default), 4 software-selectable
              internal voltage references, giving 4 bipolar and 4 unipolar
              ranges:
                [-10V,+10V], [-5V,+5V], [-2.5V,+2.5V], [-1.25V,+1.25V],
                [0,+10V], [0,+5V], [0,+2.5V], [0,1.25V].
            1=Jumper position 2-3, 1 external voltage reference, giving
              1 bipolar and 1 unipolar range:
                [-Vext,+Vext], [0,+Vext].

    Configuration options - PCI234:
      [0] - PCI bus of device (optional).
      [1] - PCI slot of device (optional).
              If bus/slot is not specified, the first available PCI device
              will be used.
      [2] - Select internal or external voltage reference according to
            jumper LK1.  This affects all channels:
            0=Jumper position 1-2 (factory default), Vref=5V internal.
            1=Jumper position 2-3, Vref=Vext external.
      [3] - Select channel 0 range according to jumper LK2:
            0=Jumper position 2-3 (factory default), range [-2*Vref,+2*Vref]
              (10V bipolar when options[2]=0).
            1=Jumper position 1-2, range [-Vref,+Vref]
              (5V bipolar when options[2]=0).
      [4] - Select channel 1 range according to jumper LK3: cf. options[3].
      [5] - Select channel 2 range according to jumper LK4: cf. options[3].
      [6] - Select channel 3 range according to jumper LK5: cf. options[3].

    Passing a zero for an option is the same as leaving it unspecified.

      1) All channels on the PCI224 share the same range.  Any change to the
         range as a result of insn_write or a streaming command will affect
         the output voltages of all channels, including those not specified
         by the instruction or command.

      2) For the analog output command,  the first scan may be triggered
         falsely at the start of acquisition.  This occurs when the DAC scan
         trigger source is switched from 'none' to 'timer' (scan_begin_src =
         TRIG_TIMER) or 'external' (scan_begin_src == TRIG_EXT) at the start
         of acquisition and the trigger source is at logic level 1 at the
         time of the switch.  This is very likely for TRIG_TIMER.  For
         TRIG_EXT, it depends on the state of the external line and whether
         the CR_INVERT flag has been set.  The remaining scans are triggered
         correctly.

#### 5.6.22. amplc_pci230 -- Amplicon PCI230, PCI260 Multifunction I/O boards

Author: Allan Willcox <allanwillcox@ozemail.com.au>, Steve D Sharples <steve.sharples@nottingham.ac.uk>, Ian Abbott <abbotti@mev.co.uk>

Status: works

Manufacturer | Device | Name
--- | --- | ---
Amplicon | PCI230 | pci230 or amplc_pci230
Amplicon | PCI230+ | pci230+ or amplc_pci230
Amplicon | PCI260 | pci260 or amplc_pci230
Amplicon | PCI260+ | pci260+ or amplc_pci230

    Configuration options:
      [0] - PCI bus of device (optional).
      [1] - PCI slot of device (optional).
              If bus/slot is not specified, the first available PCI device
              will be used.

    Configuring a "amplc_pci230" will match any supported card and it will
    choose the best match, picking the "+" models if possible.  Configuring
    a "pci230" will match a PCI230 or PCI230+ card and it will be treated as
    a PCI230.  Configuring a "pci260" will match a PCI260 or PCI260+ card
    and it will be treated as a PCI260.  Configuring a "pci230+" will match
    a PCI230+ card.  Configuring a "pci260+" will match a PCI260+ card.

                    PCI230(+)    PCI260(+)
                    ---------    ---------
      Subdevices       3            1
            0          AI           AI
    	1          AO
    	2          DIO

    AI Subdevice:

      The AI subdevice has 16 single-ended channels or 8 differential
      channels.

      The PCI230 and PCI260 cards have 12-bit resolution.  The PCI230+ and
      PCI260+ cards have 16-bit resolution.

      For differential mode, use inputs 2N and 2N+1 for channel N (e.g. use
      inputs 14 and 15 for channel 7).  If the card is physically a PCI230
      or PCI260 then it actually uses a "pseudo-differential" mode where the
      inputs are sampled a few microseconds apart.  The PCI230+ and PCI260+
      use true differential sampling.  Another difference is that if the
      card is physically a PCI230 or PCI260, the inverting input is 2N,
      whereas for a PCI230+ or PCI260+ the inverting input is 2N+1.  So if a
      PCI230 is physically replaced by a PCI230+ (or a PCI260 with a
      PCI260+) and differential mode is used, the differential inputs need
      to be physically swapped on the connector.

      The following input ranges are supported:

        0 => [-10, +10] V
        1 => [-5, +5] V
        2 => [-2.5, +2.5] V
        3 => [-1.25, +1.25] V
        4 => [0, 10] V
        5 => [0, 5] V
        6 => [0, 2.5] V

    AI Commands:

      +=========+==============+===========+============+==========+
      |start_src|scan_begin_src|convert_src|scan_end_src| stop_src |
      +=========+==============+===========+============+==========+
      |TRIG_NOW | TRIG_FOLLOW  |TRIG_TIMER | TRIG_COUNT |TRIG_NONE |
      |TRIG_INT |              |TRIG_EXT(3)|            |TRIG_COUNT|
      |         |              |TRIG_INT   |            |          |
      |         |--------------|-----------|            |          |
      |         | TRIG_TIMER(1)|TRIG_TIMER |            |          |
      |         | TRIG_EXT(2)  |           |            |          |
      |         | TRIG_INT     |           |            |          |
      +---------+--------------+-----------+------------+----------+

      Note 1: If AI command and AO command are used simultaneously, only
              one may have scan_begin_src == TRIG_TIMER.

      Note 2: For PCI230 and PCI230+, scan_begin_src == TRIG_EXT uses
              DIO channel 16 (pin 49) which will need to be configured as
              a digital input.  For PCI260+, the EXTTRIG/EXTCONVCLK input
              (pin 17) is used instead.  For PCI230, scan_begin_src ==
              TRIG_EXT is not supported.  The trigger is a rising edge
              on the input.

      Note 3: For convert_src == TRIG_EXT, the EXTTRIG/EXTCONVCLK input
              (pin 25 on PCI230(+), pin 17 on PCI260(+)) is used.  The
              convert_arg value is interpreted as follows:

                convert_arg == (CR_EDGE | 0) => rising edge
                convert_arg == (CR_EDGE | CR_INVERT | 0) => falling edge
                convert_arg == 0 => falling edge (backwards compatibility)
                convert_arg == 1 => rising edge (backwards compatibility)

      All entries in the channel list must use the same analogue reference.
      If the analogue reference is not AREF_DIFF (not differential) each
      pair of channel numbers (0 and 1, 2 and 3, etc.) must use the same
      input range.  The input ranges used in the sequence must be all
      bipolar (ranges 0 to 3) or all unipolar (ranges 4 to 6).  The channel
      sequence must consist of 1 or more identical subsequences.  Within the
      subsequence, channels must be in ascending order with no repeated
      channels.  For example, the following sequences are valid: 0 1 2 3
      (single valid subsequence), 0 2 3 5 0 2 3 5 (repeated valid
      subsequence), 1 1 1 1 (repeated valid subsequence).  The following
      sequences are invalid: 0 3 2 1 (invalid subsequence), 0 2 3 5 0 2 3
      (incompletely repeated subsequence).  Some versions of the PCI230+ and
      PCI260+ have a bug that requires a subsequence longer than one entry
      long to include channel 0.

    AO Subdevice:

      The AO subdevice has 2 channels with 12-bit resolution.

      The following output ranges are supported:

        0 => [0, 10] V
        1 => [-10, +10] V

    AO Commands:

      +=========+==============+===========+============+==========+
      |start_src|scan_begin_src|convert_src|scan_end_src| stop_src |
      +=========+==============+===========+============+==========+
      |TRIG_INT | TRIG_TIMER(1)| TRIG_NOW  | TRIG_COUNT |TRIG_NONE |
      |         | TRIG_EXT(2)  |           |            |TRIG_COUNT|
      |         | TRIG_INT     |           |            |          |
      +---------+--------------+-----------+------------+----------+

      Note 1: If AI command and AO command are used simultaneously, only
              one may have scan_begin_src == TRIG_TIMER.

      Note 2: scan_begin_src == TRIG_EXT is only supported if the card is
              configured as a PCI230+ and is only supported on later
              versions of the card.  As a card configured as a PCI230+ is
              not guaranteed to support external triggering, please consider
              this support to be a bonus.  It uses the EXTTRIG/ EXTCONVCLK
              input (PCI230+ pin 25).  Triggering will be on the rising edge
              unless the CR_INVERT flag is set in scan_begin_arg.

      The channels in the channel sequence must be in ascending order with
      no repeats.  All entries in the channel sequence must use the same
      output range.

    DIO Subdevice:

      The DIO subdevice is a 8255 chip providing 24 DIO channels.  The DIO
      channels are configurable as inputs or outputs in four groups:

        Port A  - channels  0 to  7
        Port B  - channels  8 to 15
        Port CL - channels 16 to 19
        Port CH - channels 20 to 23

      Only mode 0 of the 8255 chip is supported.

      Bit 0 of port C (DIO channel 16) is also used as an external scan
      trigger input for AI commands on PCI230 and PCI230+, so would need to
      be configured as an input to use it for that purpose.

#### 5.6.23. c6xdigio -- Mechatronic Systems Inc. C6x_DIGIO DSP daughter card

Author: Dan Block

Status: unknown

Manufacturer | Device | Name
--- | --- | ---
Mechatronic Systems Inc. | C6x_DIGIO DSP daughter card | c6xdigio

    This driver will not work with a 2.4 kernel.

#### 5.6.24. cb_das16_cs -- Computer Boards PC-CARD DAS16/16

Author: ds

Status: experimental

Manufacturer | Device | Name
--- | --- | ---
ComputerBoards | PC-CARD DAS16/16 | cb_das16_cs
ComputerBoards | PC-CARD DAS16/16-AO | cb_das16_cs

#### 5.6.25. cb_pcidac -- Measurement Computing PCI Migration series boards

Author: Oliver Gause

Status: works

Manufacturer | Device | Name
--- | --- | ---
ComputerBoards | PCI-DAC6702 | cb_pcidac
ComputerBoards | PCI-DAC6703 | cb_pcidac

    Written to support the PCI-DAC6702. Trivially extended to support
    the PCI-DAC6703, it has just 16 ao channels instead of 8.

    Configuration Options:
        [0] - PCI bus number
        [1] - PCI slot number

    Developed from cb_pcidas64, cb_pcimdas and skel. The register values are
    taken from the register map of Measurement Computing.

    Supports DIO, AO in its present form.

#### 5.6.26. cb_pcidas -- MeasurementComputing PCI-DAS series with the AMCC S5933 PCI controller

Author: Ivan Martinez <imr@oersted.dtu.dk>, Frank Mori Hess <fmhess@users.sourceforge.net>, Brice Dubost <braice@braice.net>

Status: There are many reports of the driver being used with most of the supported cards. Despite no detailed log is maintained, it can be said that the driver is quite tested and stable.

Manufacturer | Device | Name
--- | --- | ---
Measurement Computing | PCI-DAS1602/16 | cb_pcidas
Measurement Computing | PCI-DAS1602/16jr | cb_pcidas
Measurement Computing | PCI-DAS1602/12 | cb_pcidas
Measurement Computing | PCI-DAS1200 | cb_pcidas
Measurement Computing | PCI-DAS1200jr | cb_pcidas
Measurement Computing | PCI-DAS1000 | cb_pcidas
Measurement Computing | PCI-DAS1001 | cb_pcidas
Measurement Computing | PCI_DAS1002 | cb_pcidas

      The boards may be autocalibrated using the comedi_calibrate
      utility.

    Configuration options:
      [0] - PCI bus of device (optional)
      [1] - PCI slot of device (optional)
      If bus/slot is not specified, the first supported
      PCI device found will be used.

    For commands, the scanned channels must be consecutive
    (i.e. 4-5-6-7, 2-3-4,...), and must all have the same
    range and aref.

    AI Triggering:
       For start_src == TRIG_EXT, the A/D EXTERNAL TRIGGER IN (pin 45) is used.
       For 1602 series, the start_arg is interpreted as follows:
         start_arg == 0                   => gated triger (level high)
         start_arg == CR_INVERT           => gated triger (level low)
         start_arg == CR_EDGE             => Rising edge
         start_arg == CR_EDGE | CR_INVERT => Falling edge
       For the other boards the trigger will be done on rising edge

#### 5.6.27. cb_pcidas64 -- MeasurementComputing PCI-DAS64xx, 60XX, and 4020 series with the PLX 9080 PCI controller

Author: Frank Mori Hess <fmhess@users.sourceforge.net>

Status: works

Manufacturer | Device | Name
--- | --- | ---
Measurement Computing | PCI-DAS6402/16 | cb_pcidas64
Measurement Computing | PCI-DAS6402/12 | cb_pcidas64
Measurement Computing | PCI-DAS64/M1/16 | cb_pcidas64
Measurement Computing | PCI-DAS64/M2/16 | cb_pcidas64
Measurement Computing | PCI-DAS64/M3/16 | cb_pcidas64
Measurement Computing | PCI-DAS6402/16/JR | cb_pcidas64
Measurement Computing | PCI-DAS64/M1/16/JR | cb_pcidas64
Measurement Computing | PCI-DAS64/M2/16/JR | cb_pcidas64
Measurement Computing | PCI-DAS64/M3/16/JR | cb_pcidas64
Measurement Computing | PCI-DAS64/M1/14 | cb_pcidas64
Measurement Computing | PCI-DAS64/M2/14 | cb_pcidas64
Measurement Computing | PCI-DAS64/M3/14 | cb_pcidas64
Measurement Computing | PCI-DAS6013 | cb_pcidas64
Measurement Computing | PCI-DAS6014 | cb_pcidas64
Measurement Computing | PCI-DAS6023 | cb_pcidas64
Measurement Computing | PCI-DAS6025 | cb_pcidas64
Measurement Computing | PCI-DAS6030 | cb_pcidas64
Measurement Computing | PCI-DAS6031 | cb_pcidas64
Measurement Computing | PCI-DAS6032 | cb_pcidas64
Measurement Computing | PCI-DAS6033 | cb_pcidas64
Measurement Computing | PCI-DAS6034 | cb_pcidas64
Measurement Computing | PCI-DAS6035 | cb_pcidas64
Measurement Computing | PCI-DAS6036 | cb_pcidas64
Measurement Computing | PCI-DAS6040 | cb_pcidas64
Measurement Computing | PCI-DAS6052 | cb_pcidas64
Measurement Computing | PCI-DAS6070 | cb_pcidas64
Measurement Computing | PCI-DAS6071 | cb_pcidas64
Measurement Computing | PCI-DAS4020/12 | cb_pcidas64

    Configuration options:
       [0] - PCI bus of device (optional)
       [1] - PCI slot of device (optional)

    These boards may be autocalibrated with the comedi_calibrate utility.

    To select the bnc trigger input on the 4020 (instead of the dio input),
    specify a nonzero channel in the chanspec.  If you wish to use an external
    master clock on the 4020, you may do so by setting the scan_begin_src
    to TRIG_OTHER, and using an INSN_CONFIG_TIMER_1 configuration insn
    to configure the divisor to use for the external clock.

    Some devices are not identified because the PCI device IDs are not yet
    known. If you have such a board, please file a bug report at

#### 5.6.28. cb_pcidda -- MeasurementComputing PCI-DDA series

Author: Ivan Martinez <ivanmr@altavista.com>, Frank Mori Hess <fmhess@users.sourceforge.net>

Status: Supports 08/16, 04/16, 02/16, 08/12, 04/12, and 02/12

Manufacturer | Device | Name
--- | --- | ---
Measurement Computing | PCI-DDA08/12 | cb_pcidda
Measurement Computing | PCI-DDA04/12 | cb_pcidda
Measurement Computing | PCI-DDA02/12 | cb_pcidda
Measurement Computing | PCI-DDA08/16 | cb_pcidda
Measurement Computing | PCI-DDA04/16 | cb_pcidda
Measurement Computing | PCI-DDA02/16 | cb_pcidda

    Configuration options:
      [0] - PCI bus of device (optional)
      [1] - PCI slot of device (optional)
      If bus/slot is not specified, the first available PCI
      device will be used.

    Only simple analog output writing is supported.

    So far it has only been tested with:
      - PCI-DDA08/12
    Please report success/failure with other different cards to
    <comedi@comedi.org>.

#### 5.6.29. cb_pcidio -- ComputerBoards' DIO boards with PCI interface

Author: Yoshiya Matsuzaka

Status: experimental

Manufacturer | Device | Name
--- | --- | ---
Measurement Computing | PCI-DIO24 | cb_pcidio
Measurement Computing | PCI-DIO24H | cb_pcidio
Measurement Computing | PCI-DIO48H | cb_pcidio

    This driver has been modified from skel.c of comedi-0.7.70.

    Configuration Options:
      [0] - PCI bus of device (optional)
      [1] - PCI slot of device (optional)
      If bus/slot is not specified, the first available PCI device will
      be used.

    Passing a zero for an option is the same as leaving it unspecified.

#### 5.6.30. cb_pcimdas -- Measurement Computing PCI Migration series boards

Author: Richard Bytheway

Status: experimental

Manufacturer | Device | Name
--- | --- | ---
ComputerBoards | PCIM-DAS1602/16 | cb_pcimdas
ComputerBoards | PCIe-DAS1602/16 | cb_pcimdas

    Written to support the PCIM-DAS1602/16 and PCIe-DAS1602/16.

    Configuration Options:
        [0] - PCI bus number
        [1] - PCI slot number

    Developed from cb_pcidas and skel by Richard Bytheway (mocelet@sucs.org).
    Only supports DIO, AO and simple AI in it's present form.
    No interrupts, multi channel or FIFO AI, although the card looks like it could
    support this.

#### 5.6.31. cb_pcimdda -- Measurement Computing PCIM-DDA06-16

Author: Calin Culianu <calin@ajvar.org>

Status: works

Manufacturer | Device | Name
--- | --- | ---
Measurement Computing | PCIM-DDA06-16 | cb_pcimdda

    All features of the PCIM-DDA06-16 board are supported.  This board
    has 6 16-bit AO channels, and the usual 8255 DIO setup.  (24 channels,
    configurable in banks of 8 and 4, etc.).  This board does not support commands.

    The board has a peculiar way of specifying AO gain/range settings -- You have
    1 jumper bank on the card, which either makes all 6 AO channels either
    5 Volt unipolar, 5V bipolar, 10 Volt unipolar or 10V bipolar.

    Since there is absolutely _no_ way to tell in software how this jumper is set
    (well, at least according  to the rather thin spec. from Measurement Computing
     that comes with the board), the driver assumes the jumper is at its factory
    default setting of +/-5V.

    Also of note is the fact that this board features another jumper, whose
    state is also completely invisible to software.  It toggles two possible AO
    output modes on the board:

      - Update Mode: Writing to an AO channel instantaneously updates the actual
        signal output by the DAC on the board (this is the factory default).
      - Simultaneous XFER Mode: Writing to an AO channel has no effect until
        you read from any one of the AO channels.  This is useful for loading
        all 6 AO values, and then reading from any one of the AO channels on the
        device to instantly update all 6 AO values in unison.  Useful for some
        control apps, I would assume?  If your jumper is in this setting, then you
        need to issue your comedi_data_write()s to load all the values you want,
        then issue one comedi_data_read() on any channel on the AO subdevice
        to initiate the simultaneous XFER.

    Configuration Options:
      [0] PCI bus (optional)
      [1] PCI slot (optional)
      [2] analog output range jumper setting
          0 == +/- 5 V
          1 == +/- 10 V

#### 5.6.32. comedi_bond -- A driver to 'bond' (merge) multiple subdevices from multiple devices together as one.

Author: ds

Status: works

    This driver allows you to 'bond' (merge) multiple comedi subdevices
    (coming from possibly difference boards and/or drivers) together.  For
    example, if you had a board with 2 different DIO subdevices, and
    another with 1 DIO subdevice, you could 'bond' them with this driver
    so that they look like one big fat DIO subdevice.  This makes writing
    applications slightly easier as you don't have to worry about managing
    different subdevices in the application -- you just worry about
    indexing one linear array of channel id's.

    Right now only DIO subdevices are supported as that's the personal itch
    I am scratching with this driver.  If you want to add support for AI and AO
    subdevs, go right on ahead and do so!

    Commands aren't supported -- although it would be cool if they were.

    Configuration Options:
      List of comedi-minors to bond.  All subdevices of the same type
      within each minor will be concatenated together in the order given here.

#### 5.6.33. comedi_parport -- Standard PC parallel port

Author: ds

Status: works in immediate mode

Manufacturer | Device | Name
--- | --- | ---
standard | parallel port | comedi_parport

    A cheap and easy way to get a few more digital I/O lines.  Steal
    additional parallel ports from old computers or your neighbors'
    computers.

    Option list:
     0: I/O port base for the parallel port.
     1: IRQ

    Parallel Port Lines:

    pin     subdev  chan    aka
    ---     ------  ----    ---
    1       2       0       strobe
    2       0       0       data 0
    3       0       1       data 1
    4       0       2       data 2
    5       0       3       data 3
    6       0       4       data 4
    7       0       5       data 5
    8       0       6       data 6
    9       0       7       data 7
    10      1       3       acknowledge
    11      1       4       busy
    12      1       2       output
    13      1       1       printer selected
    14      2       1       auto LF
    15      1       0       error
    16      2       2       init
    17      2       3       select printer
    18-25   ground

    Subdevices 0 is digital I/O, subdevice 1 is digital input, and
    subdevice 2 is digital output.  Unlike other Comedi devices,
    subdevice 0 defaults to output.

    Pins 13 and 14 are inverted once by Comedi and once by the
    hardware, thus cancelling the effect.

    Pin 1 is a strobe, thus acts like one.  There's no way in software
    to change this, at least on a standard parallel port.

    Subdevice 3 pretends to be a digital input subdevice, but it always
    returns 0 when read.  However, if you run a command with
    scan_begin_src=TRIG_EXT, it uses pin 10 as a external triggering
    pin, which can be used to wake up tasks.

#### 5.6.34. comedi_rt_timer -- Command emulator using real-time tasks

Author: ds, fmhess

Status: works

    This driver requires RTAI or RTLinux to work correctly.  It doesn't
    actually drive hardware directly, but calls other drivers and uses
    a real-time task to emulate commands for drivers and devices that
    are incapable of native commands.  Thus, you can get accurately
    timed I/O on any device.

    Since the timing is all done in software, sampling jitter is much
    higher than with a device that has an on-board timer, and maximum
    sample rate is much lower.

    Configuration options:
      [0] - minor number of device you wish to emulate commands for
      [1] - subdevice number you wish to emulate commands for

#### 5.6.35. comedi_test -- generates fake waveforms

Author: Joachim Wuttke <Joachim.Wuttke@icn.siemens.de>, Frank Mori Hess <fmhess@users.sourceforge.net>, ds

Status: works

    This driver is mainly for testing purposes, but can also be used to
    generate sample waveforms on systems that don't have data acquisition
    hardware.

    Configuration options:
      [0] - Amplitude in microvolts for fake waveforms (default 1 volt)
      [1] - Period in microseconds for fake waveforms (default 0.1 sec)

    Generates a sawtooth wave on channel 0, square wave on channel 1, additional
    waveforms could be added to other channels (currently they return flatline
    zero volts).

#### 5.6.36. contec_fit -- Contec F&eIT series modules

Author: Contec Co., Ltd.

Status: works

Manufacturer | Device | Name
--- | --- | ---
Contec | GY | contec_fit
Contec | GY | FIT
Contec | GY | FIT

    Configuration Options:
      [0] - DeviceID of module (optional)
      If DeviceID is not specified, DeviceID 0 will be used.

#### 5.6.37. contec_pci_dio -- Contec PIO1616L digital I/O board

Author: Stefano Rivoir <s.rivoir@gts.it>

Status: works

Manufacturer | Device | Name
--- | --- | ---
Contec | PIO1616L | contec_pci_dio

    Configuration Options:
      [0] - PCI bus of device (optional)
      [1] - PCI slot of device (optional)
      If bus/slot is not specified, the first supported
      PCI device found will be used.

#### 5.6.38. daqboard2000 -- IOTech DAQBoard/2000

Author: Anders Blomdell <anders.blomdell@control.lth.se>

Status: works

Manufacturer | Device | Name
--- | --- | ---
IOTech | DAQBoard/2000 | daqboard2000

    Much of the functionality of this driver was determined from reading
    the source code for the Windows driver.

    The FPGA on the board requires initialization code, which can
    be loaded by comedi_config using the -i
    option.  The initialization code is available from http://www.comedi.org
    in the comedi_nonfree_firmware tarball.

    Configuration options:
      [0] - PCI bus of device (optional)
      [1] - PCI slot of device (optional)
      If bus/slot is not specified, the first supported
      PCI device found will be used.

#### 5.6.39. das08 -- DAS-08 compatible boards

Author: Warren Jasper, ds, Frank Hess

Status: works

Manufacturer | Device | Name
--- | --- | ---
Keithley Metrabyte | DAS08 | isa-das08
ComputerBoards | DAS08 | isa-das08
ComputerBoards | DAS08-PGM | das08-pgm
ComputerBoards | DAS08-PGH | das08-pgh
ComputerBoards | DAS08-PGL | das08-pgl
ComputerBoards | DAS08-AOH | das08-aoh
ComputerBoards | DAS08-AOL | das08-aol
ComputerBoards | DAS08-AOM | das08-aom
ComputerBoards | DAS08/JR-AO | das08/jr-ao
ComputerBoards | DAS08/JR-16-AO | das08jr-16-ao
ComputerBoards | PCI-DAS08 | das08
ComputerBoards | PC104-DAS08 | pc104-das08
ComputerBoards | DAS08/JR/16 | das08jr/16

    This is a rewrite of the das08 and das08jr drivers.

    Options (for ISA cards):
            [0] - base io address

    Options (for pci-das08):
            [0] - bus  (optional)
            [1] = slot (optional)

    The das08 driver doesn't support asynchronous commands, since
    the cheap das08 hardware doesn't really support them.  The
    comedi_rt_timer driver can be used to emulate commands for this
    driver.

#### 5.6.40. das08_cs -- DAS-08 PCMCIA boards

Author: Warren Jasper, ds, Frank Hess

Status: works

Manufacturer | Device | Name
--- | --- | ---
ComputerBoards | PCM-DAS08 | pcm-das08

    This is the PCMCIA-specific support split off from the
    das08 driver.

    Options (for pcm-das08):
            NONE

    Command support does not exist, but could be added for this board.

#### 5.6.41. das16 -- DAS16 compatible boards

Author: Sam Moore, Warren Jasper, ds, Chris Baugher, Frank Hess, Roman Fietze

Status: works

Manufacturer | Device | Name
--- | --- | ---
Keithley Metrabyte | DAS-16 | das-16
Keithley Metrabyte | DAS-16G | das-16g
Keithley Metrabyte | DAS-16F | das-16f
Keithley Metrabyte | DAS-1201 | das-1201
Keithley Metrabyte | DAS-1202 | das-1202
Keithley Metrabyte | DAS-1401 | das-1401
Keithley Metrabyte | DAS-1402 | das-1402
Keithley Metrabyte | DAS-1601 | das-1601
Keithley Metrabyte | DAS-1602 | das-1602
ComputerBoards | PC104-DAS16/JR | pc104-das16jr
ComputerBoards | PC104-DAS16JR/16 | pc104-das16jr/16
ComputerBoards | CIO-DAS16JR/16 | cio-das16jr/16
ComputerBoards | CIO-DAS16/JR | cio-das16/jr
ComputerBoards | CIO-DAS1401/12 | cio-das1401/12
ComputerBoards | CIO-DAS1402/12 | cio-das1402/12
ComputerBoards | CIO-DAS1402/16 | cio-das1402/16
ComputerBoards | CIO-DAS1601/12 | cio-das1601/12
ComputerBoards | CIO-DAS1602/12 | cio-das1602/12
ComputerBoards | CIO-DAS1602/16 | cio-das1602/16
ComputerBoards | CIO-DAS16/330 | cio-das16/330

    A rewrite of the das16 and das1600 drivers.

    Passing a zero for an option is the same as leaving it unspecified.

#### 5.6.42. das16m1 -- CIO-DAS16/M1

Author: Frank Mori Hess <fmhess@users.sourceforge.net>

Status: works

Manufacturer | Device | Name
--- | --- | ---
Measurement Computing | CIO-DAS16/M1 | cio-das16/m1

    This driver supports a single board - the CIO-DAS16/M1.
    As far as I know, there are no other boards that have
    the same register layout.  Even the CIO-DAS16/M1/16 is
    significantly different.

    I was _barely_ able to reach the full 1 MHz capability
    of this board, using a hard real-time interrupt
    (set the TRIG_RT flag in your comedi_cmd and use
    rtlinux or RTAI).  The board can't do dma, so the bottleneck is
    pulling the data across the ISA bus.  I timed the interrupt
    handler, and it took my computer ~470 microseconds to pull 512
    samples from the board.  So at 1 Mhz sampling rate,
    expect your CPU to be spending almost all of its
    time in the interrupt handler.

    This board has some unusual restrictions for its channel/gain list.  If the
    list has 2 or more channels in it, then two conditions must be satisfied:
    (1) - even/odd channels must appear at even/odd indices in the list
    (2) - the list must have an even number of entries.

    irq can be omitted, although the cmd interface will not work without it.

#### 5.6.43. das1800 -- Keithley Metrabyte DAS1800 (& compatibles)

Author: Frank Mori Hess <fmhess@users.sourceforge.net>

Status: works

Manufacturer | Device | Name
--- | --- | ---
Keithley Metrabyte | DAS-1701ST | das-1701st
Keithley Metrabyte | DAS-1701ST-DA | das-1701st-da
Keithley Metrabyte | DAS-1701/AO | das-1701ao
Keithley Metrabyte | DAS-1702ST | das-1702st
Keithley Metrabyte | DAS-1702ST-DA | das-1702st-da
Keithley Metrabyte | DAS-1702HR | das-1702hr
Keithley Metrabyte | DAS-1702HR-DA | das-1702hr-da
Keithley Metrabyte | DAS-1702/AO | das-1702ao
Keithley Metrabyte | DAS-1801ST | das-1801st
Keithley Metrabyte | DAS-1801ST-DA | das-1801st-da
Keithley Metrabyte | DAS-1801HC | das-1801hc
Keithley Metrabyte | DAS-1801AO | das-1801ao
Keithley Metrabyte | DAS-1802ST | das-1802st
Keithley Metrabyte | DAS-1802ST-DA | das-1802st-da
Keithley Metrabyte | DAS-1802HR | das-1802hr
Keithley Metrabyte | DAS-1802HR-DA | das-1802hr-da
Keithley Metrabyte | DAS-1802HC | das-1802hc
Keithley Metrabyte | DAS-1802AO | das-1802ao

    The waveform analog output on the 'ao' cards is not supported.
    If you need it, send me (Frank Hess) an email.

    Configuration options:
      [0] - I/O port base address
      [1] - IRQ (optional, required for timed or externally triggered conversions)
      [2] - DMA0 (optional, requires irq)
      [3] - DMA1 (optional, requires irq and dma0)

#### 5.6.44. das6402 -- Keithley Metrabyte DAS6402 (& compatibles)

Author: Oystein Svendsen <svendsen@pvv.org>

Status: bitrotten

Manufacturer | Device | Name
--- | --- | ---
Keithley Metrabyte | DAS6402 | das6402

    This driver has suffered bitrot.

#### 5.6.45. das800 -- Keithley Metrabyte DAS800 (& compatibles)

Author: Frank Mori Hess <fmhess@users.sourceforge.net>

Status: works, cio-das802/16 untested - email me if you have tested it

Manufacturer | Device | Name
--- | --- | ---
Keithley Metrabyte | DAS-800 | das-800
Keithley Metrabyte | DAS-801 | das-801
Keithley Metrabyte | DAS-802 | das-802
Measurement Computing | CIO-DAS800 | cio-das800
Measurement Computing | CIO-DAS801 | cio-das801
Measurement Computing | CIO-DAS802 | cio-das802
Measurement Computing | CIO-DAS802/16 | cio-das802/16

    Configuration options:
      [0] - I/O port base address
      [1] - IRQ (optional, required for timed or externally triggered conversions)

    	All entries in the channel/gain list must use the same gain and be
    	consecutive channels counting upwards in channel number (these are
    	hardware limitations.)

    	I've never tested the gain setting stuff since I only have a
    	DAS-800 board with fixed gain.

    	The cio-das802/16 does not have a fifo-empty status bit!  Therefore
    	only fifo-half-full transfers are possible with this card.

#### 5.6.46. dmm32at -- Diamond Systems mm32at driver.

Author: Perry J. Piplani <perry.j.piplani@nasa.gov>

Status: experimental

    This driver is for the Diamond Systems MM-32-AT board

    Configuration Options:
      comedi_config /dev/comedi0 dmm32at baseaddr,irq

#### 5.6.47. dt2801 -- Data Translation DT2801 series and DT01-EZ

Author: ds

Status: works

Manufacturer | Device | Name
--- | --- | ---
Data Translation | DT2801 | dt2801
Data Translation | DT2801-A | dt2801
Data Translation | DT2801/5716A | dt2801
Data Translation | DT2805 | dt2801
Data Translation | DT2805/5716A | dt2801
Data Translation | DT2808 | dt2801
Data Translation | DT2818 | dt2801
Data Translation | DT2809 | dt2801
Data Translation | DT01-EZ | dt2801

    This driver can autoprobe the type of board.

    Configuration options:
      [0] - I/O port base address
      [1] - unused
      [2] - A/D reference 0=differential, 1=single-ended
      [3] - A/D range
              0 = [-10,10]
    	  1 = [0,10]
      [4] - D/A 0 range
              0 = [-10,10]
    	  1 = [-5,5]
    	  2 = [-2.5,2.5]
    	  3 = [0,10]
    	  4 = [0,5]
      [5] - D/A 1 range (same choices)

#### 5.6.48. dt2811 -- Data Translation DT2811

Author: ds

Status: works

Manufacturer | Device | Name
--- | --- | ---
Data Translation | DT2811-PGL | dt2811-pgl
Data Translation | DT2811-PGH | dt2811-pgh

    Configuration options:
      [0] - I/O port base address
      [1] - IRQ, although this is currently unused
      [2] - A/D reference
              0 = single-ended
              1 = differential
    	  2 = pseudo-differential (common reference)
      [3] - A/D range
              0 = [-5,5]
    	  1 = [-2.5,2.5]
    	  2 = [0,5]
      [4] - D/A 0 range (same choices)
      [4] - D/A 1 range (same choices)

#### 5.6.49. dt2814 -- Data Translation DT2814

Author: ds

Status: complete

Manufacturer | Device | Name
--- | --- | ---
Data Translation | DT2814 | dt2814

    Configuration options:
      [0] - I/O port base address
      [1] - IRQ

    This card has 16 analog inputs multiplexed onto a 12 bit ADC.  There
    is a minimally useful onboard clock.  The base frequency for the
    clock is selected by jumpers, and the clock divider can be selected
    via programmed I/O.  Unfortunately, the clock divider can only be
    a power of 10, from 1 to 10^7, of which only 3 or 4 are useful.  In
    addition, the clock does not seem to be very accurate.

#### 5.6.50. dt2815 -- Data Translation DT2815

Author: ds

Status: mostly complete, untested

Manufacturer | Device | Name
--- | --- | ---
Data Translation | DT2815 | dt2815

    I'm not sure anyone has ever tested this board.  If you have information
    contrary, please update.

    Configuration options:
      [0] - I/O port base base address
      [1] - IRQ (unused)
      [2] - Voltage unipolar/bipolar configuration
              0 == unipolar 5V  (0V -- +5V)
    	  1 == bipolar 5V  (-5V -- +5V)
      [3] - Current offset configuration
              0 == disabled  (0mA -- +32mAV)
              1 == enabled  (+4mA -- +20mAV)
      [4] - Firmware program configuration
              0 == program 1 (see manual table 5-4)
              1 == program 2 (see manual table 5-4)
              2 == program 3 (see manual table 5-4)
              3 == program 4 (see manual table 5-4)
      [5] - Analog output 0 range configuration
              0 == voltage
              1 == current
      [6] - Analog output 1 range configuration (same options)
      [7] - Analog output 2 range configuration (same options)
      [8] - Analog output 3 range configuration (same options)
      [9] - Analog output 4 range configuration (same options)
      [10] - Analog output 5 range configuration (same options)
      [11] - Analog output 6 range configuration (same options)
      [12] - Analog output 7 range configuration (same options)

#### 5.6.51. dt2817 -- Data Translation DT2817

Author: ds

Status: complete

Manufacturer | Device | Name
--- | --- | ---
Data Translation | DT2817 | dt2817

    A very simple digital I/O card.  Four banks of 8 lines, each bank
    is configurable for input or output.  One wonders why it takes a
    50 page manual to describe this thing.

    The driver (which, btw, is much less than 50 pages) has 1 subdevice
    with 32 channels, configurable in groups of 8.

    Configuration options:
      [0] - I/O port base base address

#### 5.6.52. dt282x -- Data Translation DT2821 series (including DT-EZ)

Author: ds

Status: complete

Manufacturer | Device | Name
--- | --- | ---
Data Translation | DT2821 | dt2821
Data Translation | DT2821-F-16SE | dt2821-f
Data Translation | DT2821-F-8DI | dt2821-f
Data Translation | DT2821-G-16SE | dt2821-f
Data Translation | DT2821-G-8DI | dt2821-g
Data Translation | DT2823 | dt2823
Data Translation | DT2824-PGH | dt2824-pgh
Data Translation | DT2824-PGL | dt2824-pgl
Data Translation | DT2825 | dt2825
Data Translation | DT2827 | dt2827
Data Translation | DT2828 | dt2828
Data Translation | DT21-EZ | dt21-ez
Data Translation | DT23-EZ | dt23-ez
Data Translation | DT24-EZ | dt24-ez
Data Translation | DT24-EZ-PGL | dt24-ez-pgl

    Configuration options:
      [0] - I/O port base address
      [1] - IRQ
      [2] - DMA 1
      [3] - DMA 2
      [4] - AI jumpered for 0=single ended, 1=differential
      [5] - AI jumpered for 0=straight binary, 1=2's complement
      [6] - AO 0 jumpered for 0=straight binary, 1=2's complement
      [7] - AO 1 jumpered for 0=straight binary, 1=2's complement
      [8] - AI jumpered for 0=[-10,10]V, 1=[0,10], 2=[-5,5], 3=[0,5]
      [9] - AO 0 jumpered for 0=[-10,10]V, 1=[0,10], 2=[-5,5], 3=[0,5],
            4=[-2.5,2.5]
      [10]- A0 1 jumpered for 0=[-10,10]V, 1=[0,10], 2=[-5,5], 3=[0,5],
            4=[-2.5,2.5]

#### 5.6.53. dt3000 -- Data Translation DT3000 series

Author: ds

Status: works

Manufacturer | Device | Name
--- | --- | ---
Data Translation | DT3001 | dt3000
Data Translation | DT3001-PGL | dt3000
Data Translation | DT3002 | dt3000
Data Translation | DT3003 | dt3000
Data Translation | DT3003-PGL | dt3000
Data Translation | DT3004 | dt3000
Data Translation | DT3005 | dt3000
Data Translation | DT3004-200 | dt3000

    Configuration Options:
      [0] - PCI bus of device (optional)
      [1] - PCI slot of device (optional)
      If bus/slot is not specified, the first supported
      PCI device found will be used.

    There is code to support AI commands, but it may not work.

    AO commands are not supported.

#### 5.6.54. dt9812 -- Data Translation DT9812 USB module

Author: anders.blomdell@control.lth.se (Anders Blomdell)

Status: in development

Manufacturer | Device | Name
--- | --- | ---
Data Translation | DT9812 | dt9812

    This driver works, but bulk transfers not implemented. Might be a starting point
    for someone else. I found out too late that USB has too high latencies (>1 ms)
    for my needs.

#### 5.6.55. fl512 -- unknown

Author: Anders Gnistrup <ex18@kalman.iau.dtu.dk>

Status: unknown

Manufacturer | Device | Name
--- | --- | ---
unknown | FL512 | fl512

    Digital I/O is not supported.

    Configuration options:
      [0] - I/O port base address

#### 5.6.56. gsc_hpdi -- General Standards Corporation High Speed Parallel Digital Interface rs485 boards

Author: Frank Mori Hess <fmhess@users.sourceforge.net>

Status: only receive mode works, transmit not supported

Manufacturer | Device | Name
--- | --- | ---
General Standards Corporation | PCI-HPDI32 | gsc_hpdi
General Standards Corporation | PMC-HPDI32 | gsc_hpdi

    Configuration options:
       [0] - PCI bus of device (optional)
       [1] - PCI slot of device (optional)

    There are some additional hpdi models available from GSC for which
    support could be added to this driver.

#### 5.6.57. icp_multi -- Inova ICP_MULTI

Author: Anne Smorthit <anne.smorthit@sfwte.ch>

Status: works

Manufacturer | Device | Name
--- | --- | ---
Inova | ICP_MULTI | icp_multi

    The driver works for analog input and output and digital input and output.
    It does not work with interrupts or with the counters.  Currently no support
    for DMA.

    It has 16 single-ended or 8 differential Analogue Input channels with 12-bit
    resolution.  Ranges : 5V, 10V, +/-5V, +/-10V, 0..20mA and 4..20mA.  Input
    ranges can be individually programmed for each channel.  Voltage or current
    measurement is selected by jumper.

    There are 4 x 12-bit Analogue Outputs.  Ranges : 5V, 10V, +/-5V, +/-10V

    16 x Digital Inputs, 24V

    8 x Digital Outputs, 24V, 1A

    4 x 16-bit counters

#### 5.6.58. ii_pci20kc -- Intelligent Instruments PCI-20001C carrier board

Author: Markus Kempf <kempf@matsci.uni-sb.de>

Status: works

Manufacturer | Device | Name
--- | --- | ---
Intelligent Instrumentation | PCI-20001C | ii_pci20kc

    Supports the PCI-20001 C-2a Carrier board, and could probably support
    the other carrier boards with small modifications.  Modules supported

    options for PCI-20006M:
      first:   Analog output channel 0 range configuration
                 0  bipolar 10  (-10V -- +10V)
                 1  unipolar 10  (0V -- +10V)
                 2  bipolar 5  (-5V -- 5V)
      second:  Analog output channel 1 range configuration

    options for PCI-20341M:
      first:   Analog input gain configuration
                 0  1
                 1  10
                 2  100
                 3  200

#### 5.6.59. jr3_pci -- JR3/PCI force sensor board

Author: Anders Blomdell <anders.blomdell@control.lth.se>

Status: works

Manufacturer | Device | Name
--- | --- | ---
JR3 | PCI force sensor board | jr3_pci

      The DSP on the board requires initialization code, which can
      be loaded by placing it in /lib/firmware/comedi.
      The initialization code should be somewhere on the media you got
      with your card. One version is available from http://www.comedi.org
      in the comedi_nonfree_firmware tarball.

      Configuration options:
      [0] - PCI bus number - if bus number and slot number are 0,
                             then driver search for first unused card
      [1] - PCI slot number

#### 5.6.60. ke_counter -- Driver for Kolter Electronic Counter Card

Author: Michael Hillmann

Status: tested

Manufacturer | Device | Name
--- | --- | ---
Kolter Electronic | PCI Counter Card | ke_counter

    Configuration Options:
      [0] - PCI bus of device (optional)
      [1] - PCI slot of device (optional)
      If bus/slot is not specified, the first supported
      PCI device found will be used.

    This driver is a simple driver to read the counter values from
    Kolter Electronic PCI Counter Card.

#### 5.6.61. me4000 -- Meilhaus ME-4000 series boards

Author: gg (Guenter Gebhardt <g.gebhardt@meilhaus.com>)

Status: broken (no support for loading firmware)

Manufacturer | Device | Name
--- | --- | ---
Meilhaus | ME-4650 | me4000
Meilhaus | ME-4670i | me4000
Meilhaus | ME-4680 | me4000
Meilhaus | ME-4680i | me4000
Meilhaus | ME-4680is | me4000

        - Analog Input
        - Analog Output
        - Digital I/O
        - Counter

    Configuration Options:

        [0] - PCI bus number (optional)
        [1] - PCI slot number (optional)

        If bus/slot is not specified, the first available PCI
        device will be used.

    The firmware required by these boards is available in the
    comedi_nonfree_firmware tarball available from

#### 5.6.62. me_daq -- Meilhaus PCI data acquisition cards

Author: Michael Hillmann <hillmann@syscongroup.de>

Status: experimental

Manufacturer | Device | Name
--- | --- | ---
Meilhaus | ME-2600i | me_daq
Meilhaus | ME-2000i | me_daq

        Analog Output

    Configuration options:

        [0] - PCI bus number (optional)
        [1] - PCI slot number (optional)

        If bus/slot is not specified, the first available PCI
        device will be used.

    The 2600 requires a firmware upload, which can be accomplished
    using the -i or --init-data option of comedi_config.
    The firmware can be
    found in the comedi_nonfree_firmware tarball available
    from http://www.comedi.org

#### 5.6.63. mpc624 -- Micro/sys MPC-624 PC/104 board

Author: Stanislaw Raczynski <sraczynski@op.pl>

Status: working

Manufacturer | Device | Name
--- | --- | ---
Micro/sys | MPC-624 | mpc624

        The Micro/sys MPC-624 board is based on the LTC2440 24-bit sigma-delta
        ADC chip.

        Subdevices supported by the driver:
        - Analog In:   supported
        - Digital I/O: not supported
        - LEDs:        not supported
        - EEPROM:      not supported

    Configuration Options:
      [0] - I/O base address
      [1] - convertion rate
                Convertion rate  RMS noise  Effective Number Of Bits
             0      3.52kHz        23uV                17
             1      1.76kHz       3.5uV                20
             2       880Hz         2uV                21.3
             3       440Hz        1.4uV               21.8
             4       220Hz         1uV                22.4
             5       110Hz        750uV               22.9
             6       55Hz         510nV               23.4
             7      27.5Hz        375nV                24
             8      13.75Hz       250nV               24.4
             9      6.875Hz       200nV               24.6
       [2] - voltage range
             0      -1.01V .. +1.01V
             1      -10.1V .. +10.1V

#### 5.6.64. mpc8260cpm -- MPC8260 CPM module generic digital I/O lines

Author: ds

Status: experimental

Manufacturer | Device | Name
--- | --- | ---
Motorola | MPC8260 CPM | mpc8260cpm

    This driver is specific to the Motorola MPC8260 processor, allowing
    you to access the processor's generic digital I/O lines.

    It is apparently missing some code.

#### 5.6.65. multiq3 -- Quanser Consulting MultiQ-3

Author: Anders Blomdell <anders.blomdell@control.lth.se>

Status: works

Manufacturer | Device | Name
--- | --- | ---
Quanser Consulting | MultiQ-3 | multiq3

#### 5.6.66. ni_6527 -- National Instruments 6527

Author: ds

Status: works

Manufacturer | Device | Name
--- | --- | ---
National Instruments | PCI-6527 | ni6527
National Instruments | PXI-6527 | ni6527

#### 5.6.67. ni_65xx -- National Instruments 65xx static dio boards

Author: Jon Grierson <jd@renko.co.uk>, Frank Mori Hess <fmhess@users.sourceforge.net>

Status: testing

Manufacturer | Device | Name
--- | --- | ---
National Instruments | PCI-6509 | ni_65xx
National Instruments | PXI-6509 | ni_65xx
National Instruments | PCI-6510 | ni_65xx
National Instruments | PCI-6511 | ni_65xx
National Instruments | PXI-6511 | ni_65xx
National Instruments | PCI-6512 | ni_65xx
National Instruments | PXI-6512 | ni_65xx
National Instruments | PCI-6513 | ni_65xx
National Instruments | PXI-6513 | ni_65xx
National Instruments | PCI-6514 | ni_65xx
National Instruments | PXI-6514 | ni_65xx
National Instruments | PCI-6515 | ni_65xx
National Instruments | PXI-6515 | ni_65xx
National Instruments | PCI-6516 | ni_65xx
National Instruments | PCI-6517 | ni_65xx
National Instruments | PCI-6518 | ni_65xx
National Instruments | PCI-6519 | ni_65xx
National Instruments | PCI-6520 | ni_65xx
National Instruments | PCI-6521 | ni_65xx
National Instruments | PXI-6521 | ni_65xx
National Instruments | PCI-6528 | ni_65xx
National Instruments | PXI-6528 | ni_65xx

    Based on the PCI-6527 driver by ds.
    The interrupt subdevice (subdevice 3) is probably broken for all boards
    except maybe the 6514.

#### 5.6.68. ni_660x -- National Instruments 660x counter/timer boards

Author: J.P. Mellor <jpmellor@rose-hulman.edu>, Herman.Bruyninckx@mech.kuleuven.ac.be, Wim.Meeussen@mech.kuleuven.ac.be, Klaas.Gadeyne@mech.kuleuven.ac.be, Frank Mori Hess <fmhess@users.sourceforge.net>

Status: experimental

Manufacturer | Device | Name
--- | --- | ---
National Instruments | PCI-6601 | ni_660x
National Instruments | PCI-6602 | ni_660x
National Instruments | PXI-6602 | ni_660x
National Instruments | PXI-6608 | ni_660x
National Instruments | PCI-6624 | ni_660x
National Instruments | PXI-6624 | ni_660x

    Encoders work.  PulseGeneration (both single pulse and pulse train)
    works. Buffered commands work for input but not output.

#### 5.6.69. ni_670x -- National Instruments 670x

Author: Bart Joris <bjoris@advalvas.be>

Status: unknown

Manufacturer | Device | Name
--- | --- | ---
National Instruments | PCI-6703 | ni_670x
National Instruments | PCI-6704 | ni_670x

    Commands are not supported.

#### 5.6.70. ni_at_a2150 -- National Instruments AT-A2150

Author: Frank Mori Hess

Status: works

Manufacturer | Device | Name
--- | --- | ---
National Instruments | AT-A2150C | at_a2150c
National Instruments | AT-2150S | at_a2150s

    If you want to ac couple the board's inputs, use AREF_OTHER.

    Configuration options:
      [0] - I/O port base address
      [1] - IRQ (optional, required for timed conversions)
      [2] - DMA (optional, required for timed conversions)

#### 5.6.71. ni_at_ao -- National Instruments AT-AO-6/10

Author: ds

Status: should work

Manufacturer | Device | Name
--- | --- | ---
National Instruments | AT-AO-6 | at-ao-6
National Instruments | AT-AO-10 | at-ao-10

    Configuration options:
      [0] - I/O port base address
      [1] - IRQ (unused)
      [2] - DMA (unused)
      [3] - analog output range, set by jumpers on hardware (0 for -10 to 10V bipolar, 1 for 0V to 10V unipolar)

#### 5.6.72. ni_atmio -- National Instruments AT-MIO-E series

Author: ds

Status: works

Manufacturer | Device | Name
--- | --- | ---
National Instruments | AT-MIO-16E-1 | ni_atmio
National Instruments | AT-MIO-16E-2 | ni_atmio
National Instruments | AT-MIO-16E-10 | ni_atmio
National Instruments | AT-MIO-16DE-10 | ni_atmio
National Instruments | AT-MIO-64E-3 | ni_atmio
National Instruments | AT-MIO-16XE-50 | ni_atmio
National Instruments | AT-MIO-16XE-10 | ni_atmio
National Instruments | AT-AI-16XE-10 | ni_atmio

    The driver has 2.6 kernel isapnp support, and
    will automatically probe for a supported board if the
    I/O base is left unspecified with comedi_config.
    However, many of
    the isapnp id numbers are unknown.  If your board is not
    recognized, please send the output of 'cat /proc/isapnp'
    (you may need to modprobe the isa-pnp module for
    /proc/isapnp to exist) so the
    id numbers for your board can be added to the driver.

    Otherwise, you can use the isapnptools package to configure
    your board.  Use isapnp to
    configure the I/O base and IRQ for the board, and then pass
    the same values as
    parameters in comedi_config.  A sample isapnp.conf file is included
    in the etc/ directory of Comedilib.

    Comedilib includes a utility to autocalibrate these boards.  The
    boards seem to boot into a state where the all calibration DACs
    are at one extreme of their range, thus the default calibration
    is terrible.  Calibration at boot is strongly encouraged.

    To use the extended digital I/O on some of the boards, enable the
    8255 driver when configuring the Comedi source tree.

    External triggering is supported for some events.  The channel index
    (scan_begin_arg, etc.) maps to PFI0 - PFI9.

    Some of the more esoteric triggering possibilities of these boards
    are not supported.

#### 5.6.73. ni_atmio16d -- National Instruments AT-MIO-16D

Author: Chris R. Baugher <baugher@enteract.com>

Status: unknown

Manufacturer | Device | Name
--- | --- | ---
National Instruments | AT-MIO-16 | atmio16
National Instruments | AT-MIO-16D | atmio16d

#### 5.6.74. ni_daq_700 -- National Instruments PCMCIA DAQCard-700 DIO only

Author: Fred Brooks <nsaspook@nsaspook.com>, based on ni_daq_dio24 by Daniel Vecino Castel <dvecino@able.es>

Status: works

Manufacturer | Device | Name
--- | --- | ---
National Instruments | PCMCIA DAQ-Card-700 | ni_daq_700

    The daqcard-700 appears in Comedi as a single digital I/O subdevice with
    16 channels.  The channel 0 corresponds to the daqcard-700's output
    port, bit 0; channel 8 corresponds to the input port, bit 0.

    Direction configuration: channels 0-7 output, 8-15 input (8225 device
    emu as port A output, port B input, port C N/A).

    IRQ is assigned but not used.

#### 5.6.75. ni_daq_dio24 -- National Instruments PCMCIA DAQ-Card DIO-24

Author: Daniel Vecino Castel <dvecino@able.es>

Status: ?

Manufacturer | Device | Name
--- | --- | ---
National Instruments | PCMCIA DAQ-Card DIO-24 | ni_daq_dio24

    This is just a wrapper around the 8255.o driver to properly handle
    the PCMCIA interface.

#### 5.6.76. ni_labpc -- National Instruments Lab-PC (& compatibles)

Author: Frank Mori Hess <fmhess@users.sourceforge.net>

Status: works

Manufacturer | Device | Name
--- | --- | ---
National Instruments | Lab-PC-1200 | labpc-1200
National Instruments | Lab-PC-1200AI | labpc-1200ai
National Instruments | Lab-PC+ | lab-pc+
National Instruments | PCI-1200 | ni_labpc

    Tested with lab-pc-1200.  For the older Lab-PC+, not all input ranges
    and analog references will work, the available ranges/arefs will
    depend on how you have configured the jumpers on your board
    (see your owner's manual).

    Kernel-level ISA plug-and-play support for the lab-pc-1200
    boards has not
    yet been added to the driver, mainly due to the fact that
    I don't know the device id numbers.  If you have one
    of these boards,
    please file a bug report at https://bugs.comedi.org/
    so I can get the necessary information from you.

    The 1200 series boards have onboard calibration dacs for correcting
    analog input/output offsets and gains.  The proper settings for these
    caldacs are stored on the board's eeprom.  To read the caldac values
    from the eeprom and store them into a file that can be then be used by
    comedilib, use the comedi_calibrate program.

    Configuration options - ISA boards:
      [0] - I/O port base address
      [1] - IRQ (optional, required for timed or externally triggered conversions)
      [2] - DMA channel (optional)

    Configuration options - PCI boards:
      [0] - bus (optional)
      [1] - slot (optional)

    The Lab-pc+ has quirky chanlist requirements
    when scanning multiple channels.  Multiple channel scan
    sequence must start at highest channel, then decrement down to
    channel 0.  The rest of the cards can scan down like lab-pc+ or scan
    up from channel zero.  Chanlists consisting of all one channel
    are also legal, and allow you to pace conversions in bursts.

#### 5.6.77. ni_labpc_cs -- National Instruments Lab-PC (& compatibles)

Author: Frank Mori Hess <fmhess@users.sourceforge.net>

Status: works

Manufacturer | Device | Name
--- | --- | ---
National Instruments | DAQCard-1200 | daqcard-1200

    Thanks go to Fredrik Lingvall for much testing and perseverance in
    helping to debug daqcard-1200 support.

    The 1200 series boards have onboard calibration dacs for correcting
    analog input/output offsets and gains.  The proper settings for these
    caldacs are stored on the board's eeprom.  To read the caldac values
    from the eeprom and store them into a file that can be then be used by
    comedilib, use the comedi_calibrate program.

    Configuration options:
      none

    The daqcard-1200 has quirky chanlist requirements
    when scanning multiple channels.  Multiple channel scan
    sequence must start at highest channel, then decrement down to
    channel 0.  Chanlists consisting of all one channel
    are also legal, and allow you to pace conversions in bursts.

#### 5.6.78. ni_mio_cs -- National Instruments DAQCard E series

Author: ds

Status: works

Manufacturer | Device | Name
--- | --- | ---
National Instruments | DAQCard-AI-16XE-50 | ni_mio_cs
National Instruments | DAQCard-AI-16E-4 | ni_mio_cs
National Instruments | DAQCard-6062E | ni_mio_cs
National Instruments | DAQCard-6024E | ni_mio_cs
National Instruments | DAQCard-6036E | ni_mio_cs

    See the notes in the ni_atmio.o driver.

#### 5.6.79. ni_pcidio -- National Instruments PCI-DIO32HS, PCI-DIO96, PCI-6533, PCI-6503

Author: ds

Status: works

Manufacturer | Device | Name
--- | --- | ---
National Instruments | PCI-DIO-32HS | ni_pcidio
National Instruments | PXI-6533 | ni_pcidio
National Instruments | PCI-DIO-96 | ni_pcidio
National Instruments | PCI-DIO-96B | ni_pcidio
National Instruments | PXI-6508 | ni_pcidio
National Instruments | PCI-6503 | ni_pcidio
National Instruments | PCI-6503B | ni_pcidio
National Instruments | PCI-6503X | ni_pcidio
National Instruments | PXI-6503 | ni_pcidio
National Instruments | PCI-6533 | ni_pcidio
National Instruments | PCI-6534 | ni_pcidio

    The DIO-96 appears as four 8255 subdevices.  See the 8255
    driver notes for details.

    The DIO32HS board appears as one subdevice, with 32 channels.
    Each channel is individually I/O configurable.  The channel order
    is 0=A0, 1=A1, 2=A2, ... 8=B0, 16=C0, 24=D0.  The driver only
    supports simple digital I/O; no handshaking is supported.

    DMA mostly works for the PCI-DIO32HS, but only in timed input mode.

    The PCI-DIO-32HS/PCI-6533 has a configurable external trigger. Setting
    scan_begin_arg to 0 or CR_EDGE triggers on the leading edge. Setting
    scan_begin_arg to CR_INVERT or (CR_EDGE | CR_INVERT) triggers on the
    trailing edge.

    This driver could be easily modified to support AT-MIO32HS and
    AT-MIO96.

    The PCI-6534 requires a firmware upload after power-up to work, the
    firmware data and instructions for loading it with comedi_config
    it are contained in the
    comedi_nonfree_firmware tarball available from http://www.comedi.org

#### 5.6.80. ni_pcimio -- National Instruments PCI-MIO-E series and M series (all boards)

Author: ds, John Hallen, Frank Mori Hess, Rolf Mueller, Herbert Peremans, Herman Bruyninckx, Terry Barnaby

Status: works

Manufacturer | Device | Name
--- | --- | ---
National Instruments | PCI-MIO-16XE-50 | ni_pcimio
National Instruments | PCI-MIO-16XE-10 | ni_pcimio
National Instruments | PXI-6030E | ni_pcimio
National Instruments | PCI-MIO-16E-1 | ni_pcimio
National Instruments | PCI-MIO-16E-4 | ni_pcimio
National Instruments | PCI-6014 | ni_pcimio
National Instruments | PCI-6040E | ni_pcimio
National Instruments | PXI-6040E | ni_pcimio
National Instruments | PCI-6030E | ni_pcimio
National Instruments | PCI-6031E | ni_pcimio
National Instruments | PCI-6032E | ni_pcimio
National Instruments | PCI-6033E | ni_pcimio
National Instruments | PCI-6071E | ni_pcimio
National Instruments | PCI-6023E | ni_pcimio
National Instruments | PCI-6024E | ni_pcimio
National Instruments | PCI-6025E | ni_pcimio
National Instruments | PXI-6025E | ni_pcimio
National Instruments | PCI-6034E | ni_pcimio
National Instruments | PCI-6035E | ni_pcimio
National Instruments | PCI-6052E | ni_pcimio
National Instruments | PCI-6110 | ni_pcimio
National Instruments | PCI-6111 | ni_pcimio
National Instruments | PCI-6220 | ni_pcimio
National Instruments | PXI-6220 | ni_pcimio
National Instruments | PCI-6221 | ni_pcimio
National Instruments | PXI-6221 | ni_pcimio
National Instruments | PCI-6224 | ni_pcimio
National Instruments | PXI-6224 | ni_pcimio
National Instruments | PCI-6225 | ni_pcimio
National Instruments | PXI-6225 | ni_pcimio
National Instruments | PCI-6229 | ni_pcimio
National Instruments | PCI-6250 | ni_pcimio
National Instruments | PXI-6250 | ni_pcimio
National Instruments | PCI-6251 | ni_pcimio
National Instruments | PXI-6251 | ni_pcimio
National Instruments | PCIe-6251 | ni_pcimio
National Instruments | PXIe-6251 | ni_pcimio
National Instruments | PCI-6254 | ni_pcimio
National Instruments | PXI-6254 | ni_pcimio
National Instruments | PCI-6259 | ni_pcimio
National Instruments | PXI-6259 | ni_pcimio
National Instruments | PCIe-6259 | ni_pcimio
National Instruments | PXIe-6259 | ni_pcimio
National Instruments | PCI-6280 | ni_pcimio
National Instruments | PXI-6280 | ni_pcimio
National Instruments | PCI-6281 | ni_pcimio
National Instruments | PXI-6281 | ni_pcimio
National Instruments | PCI-6284 | ni_pcimio
National Instruments | PXI-6284 | ni_pcimio
National Instruments | PCI-6289 | ni_pcimio
National Instruments | PXI-6289 | ni_pcimio
National Instruments | PCI-6711 | ni_pcimio
National Instruments | PXI-6711 | ni_pcimio
National Instruments | PCI-6713 | ni_pcimio
National Instruments | PXI-6713 | ni_pcimio
National Instruments | PXI-6071E | ni_pcimio
National Instruments | PCI-6070E | ni_pcimio
National Instruments | PXI-6070E | ni_pcimio
National Instruments | PXI-6052E | ni_pcimio
National Instruments | PCI-6036E | ni_pcimio
National Instruments | PCI-6731 | ni_pcimio
National Instruments | PCI-6733 | ni_pcimio
National Instruments | PXI-6733 | ni_pcimio
National Instruments | PCI-6143 | ni_pcimio
National Instruments | PXI-6143 | ni_pcimio

    These boards are almost identical to the AT-MIO E series, except that
    they use the PCI bus instead of ISA (i.e., AT).  See the notes for
    the ni_atmio.o driver for additional information about these boards.

    Autocalibration is supported on many of the devices, using the
    comedi_calibrate (or comedi_soft_calibrate for m-series) utility.
    M-Series boards do analog input and analog output calibration entirely
    in software. The software calibration corrects
    the analog input for offset, gain and
    nonlinearity.  The analog outputs are corrected for offset and gain.
    See the comedilib documentation on comedi_get_softcal_converter() for
    more information.

    By default, the driver uses DMA to transfer analog input data to
    memory.  When DMA is enabled, not all triggering features are
    supported.

    Digital I/O may not work on 673x.

    Note that the PCI-6143 is a simultaineous sampling device with 8 convertors.
    With this board all of the convertors perform one simultaineous sample during
    a scan interval. The period for a scan is used for the convert time in a
    Comedi cmd. The convert trigger source is normally set to TRIG_NOW by default.

    The RTSI trigger bus is supported on these cards on
    subdevice 10. See the comedilib documentation for details.

    Information (number of channels, bits, etc.) for some devices may be
    incorrect.  Please check this and submit a bug if there are problems
    for your device.

    SCXI is probably broken for m-series boards.

#### 5.6.81. ni_tio -- National Instruments general purpose counters

Author: J.P. Mellor <jpmellor@rose-hulman.edu>, Herman.Bruyninckx@mech.kuleuven.ac.be, Wim.Meeussen@mech.kuleuven.ac.be, Klaas.Gadeyne@mech.kuleuven.ac.be, Frank Mori Hess <fmhess@users.sourceforge.net>

Status: works

    This module is not used directly by end-users.  Rather, it
    is used by other drivers (for example ni_660x and ni_pcimio)
    to provide support for NI's general purpose counters.  It was
    originally based on the counter code from ni_660x.c and
    ni_mio_common.c.

#### 5.6.82. ni_tiocmd -- National Instruments general purpose counters command support

Author: J.P. Mellor <jpmellor@rose-hulman.edu>, Herman.Bruyninckx@mech.kuleuven.ac.be, Wim.Meeussen@mech.kuleuven.ac.be, Klaas.Gadeyne@mech.kuleuven.ac.be, Frank Mori Hess <fmhess@users.sourceforge.net>

Status: works

    This module is not used directly by end-users.  Rather, it
    is used by other drivers (for example ni_660x and ni_pcimio)
    to provide command support for NI's general purpose counters.
    It was originally split out of ni_tio.c to stop the 'ni_tio'
    module depending on the 'mite' module.

#### 5.6.83. pcl711 -- Advantech PCL-711 and 711b, ADLINK ACL-8112

Author: ds, Janne Jalkanen <jalkanen@cs.hut.fi>, Eric Bunn <ebu@cs.hut.fi>

Status: mostly complete

Manufacturer | Device | Name
--- | --- | ---
Advantech | PCL-711 | pcl711
Advantech | PCL-711B | pcl711b
ADLINK | ACL-8112HG | acl8112hg
ADLINK | ACL-8112DG | acl8112dg

    Since these boards do not have DMA or FIFOs, only immediate mode is
    supported.

#### 5.6.84. pcl724 -- Advantech PCL-724, PCL-722, PCL-731 ADLINK ACL-7122, ACL-7124, PET-48DIO

Author: Michal Dobes <dobes@tesnet.cz>

Status: untested

Manufacturer | Device | Name
--- | --- | ---
Advantech | PCL-724 | pcl724
Advantech | PCL-722 | pcl722
Advantech | PCL-731 | pcl731
ADLINK | ACL-7122 | acl7122
ADLINK | ACL-7124 | acl7124
ADLINK | PET-48DIO | pet48dio

    This is driver for digital I/O boards PCL-722/724/731 with 144/24/48 DIO
    and for digital I/O boards ACL-7122/7124/PET-48DIO with 144/24/48 DIO.
    It need 8255.o for operations and only immediate mode is supported.
    See the source for configuration details.

#### 5.6.85. pcl725 -- Advantech PCL-725 (& compatibles)

Author: ds

Status: unknown

Manufacturer | Device | Name
--- | --- | ---
Advantech | PCL-725 | pcl725

#### 5.6.86. pcl726 -- Advantech PCL-726 & compatibles

Author: ds

Status: untested

Manufacturer | Device | Name
--- | --- | ---
Advantech | PCL-726 | pcl726
Advantech | PCL-727 | pcl727
Advantech | PCL-728 | pcl728
ADLINK | ACL-6126 | acl6126
ADLINK | ACL-6128 | acl6128

    Interrupts are not supported.

        Options for PCL-726:
         [0] - IO Base
         [2]...[7] - D/A output range for channel 1-6:
                   0: 0-5V, 1: 0-10V, 2: +/-5V, 3: +/-10V,
    	       4: 4-20mA, 5: unknown (external reference)

        Options for PCL-727:
         [0] - IO Base
         [2]...[13] - D/A output range for channel 1-12:
                   0: 0-5V, 1: 0-10V, 2: +/-5V,
    	       3: 4-20mA

        Options for PCL-728 and ACL-6128:
         [0] - IO Base
         [2], [3] - D/A output range for channel 1 and 2:
                   0: 0-5V, 1: 0-10V, 2: +/-5V, 3: +/-10V,
    	       4: 4-20mA, 5: 0-20mA

        Options for ACL-6126:
         [0] - IO Base
         [1] - IRQ (0=disable, 3, 5, 6, 7, 9, 10, 11, 12, 15) (currently ignored)
         [2]...[7] - D/A output range for channel 1-6:
                   0: 0-5V, 1: 0-10V, 2: +/-5V, 3: +/-10V,
    	       4: 4-20mA

#### 5.6.87. pcl730 -- Advantech PCL-730 (& compatibles)

Author: José Luis Sánchez (jsanchezv@teleline.es)

Status: untested

Manufacturer | Device | Name
--- | --- | ---
Advantech | PCL-730 | pcl730
ICP | ISO-730 | iso730
ICP | [ADLINK] ACL-7130 | acl7130

    Interrupts are not supported.
    The ACL-7130 card have an 8254 timer/counter not supported by this driver.

#### 5.6.88. pcl812 -- Advantech PCL-812/PG, PCL-813/B, ADLINK ACL-8112DG/HG/PG, ACL-8113, ACL-8216, ICP DAS A-821PGH/PGL/PGL-NDA, A-822PGH/PGL, A-823PGH/PGL, A-826PG, ICP DAS ISO-813

Author: Michal Dobes <dobes@tesnet.cz>

Status: works (I hope. My board fire up under my hands and I cann't test all features.)

Manufacturer | Device | Name
--- | --- | ---
Advantech | PCL-812 | pcl812
Advantech | PCL-812PG | pcl812pg
Advantech | PCL-813 | pcl813
Advantech | PCL-813B | pcl813b
ADLINK | ACL-8112DG | acl8112dg
ADLINK | ACL-8112HG | acl8112hg
ADLINK | ACL-8113 | acl-8113
ADLINK | ACL-8216 | acl8216
ICP | ISO-813 | iso813
ICP | A-821PGH | a821pgh
ICP | A-821PGL | a821pgl
ICP | A-821PGL-NDA | a821pclnda
ICP | A-822PGH | a822pgh
ICP | A-822PGL | a822pgl
ICP | A-823PGH | a823pgh
ICP | A-823PGL | a823pgl
ICP | A-826PG | a826pg

    This driver supports insn and cmd interfaces. Some boards support only insn
    becouse their hardware don't allow more (PCL-813/B, ACL-8113, ISO-813).
    Data transfer over DMA is supported only when you measure only one
    channel, this is too hardware limitation of these boards.

    Options for PCL-812:
      [0] - IO Base
      [1] - IRQ  (0=disable, 2, 3, 4, 5, 6, 7; 10, 11, 12, 14, 15)
      [2] - DMA  (0=disable, 1, 3)
      [3] - 0=trigger source is internal 8253 with 2MHz clock
            1=trigger source is external
      [4] - 0=A/D input range is +/-10V
            1=A/D input range is +/-5V
            2=A/D input range is +/-2.5V
            3=A/D input range is +/-1.25V
            4=A/D input range is +/-0.625V
            5=A/D input range is +/-0.3125V
      [5] - 0=D/A outputs 0-5V  (internal reference -5V)
            1=D/A outputs 0-10V (internal reference -10V)
            2=D/A outputs unknow (external reference)

    Options for PCL-812PG, ACL-8112PG:
      [0] - IO Base
      [1] - IRQ  (0=disable, 2, 3, 4, 5, 6, 7; 10, 11, 12, 14, 15)
      [2] - DMA  (0=disable, 1, 3)
      [3] - 0=trigger source is internal 8253 with 2MHz clock
            1=trigger source is external
      [4] - 0=A/D have max +/-5V input
            1=A/D have max +/-10V input
      [5] - 0=D/A outputs 0-5V  (internal reference -5V)
            1=D/A outputs 0-10V (internal reference -10V)
            2=D/A outputs unknow (external reference)

    Options for ACL-8112DG/HG, A-822PGL/PGH, A-823PGL/PGH, ACL-8216, A-826PG:
      [0] - IO Base
      [1] - IRQ  (0=disable, 2, 3, 4, 5, 6, 7; 10, 11, 12, 14, 15)
      [2] - DMA  (0=disable, 1, 3)
      [3] - 0=trigger source is internal 8253 with 2MHz clock
            1=trigger source is external
      [4] - 0=A/D channels are S.E.
            1=A/D channels are DIFF
      [5] - 0=D/A outputs 0-5V  (internal reference -5V)
            1=D/A outputs 0-10V (internal reference -10V)
            2=D/A outputs unknow (external reference)

    Options for A-821PGL/PGH:
      [0] - IO Base
      [1] - IRQ  (0=disable, 2, 3, 4, 5, 6, 7)
      [2] - 0=A/D channels are S.E.
            1=A/D channels are DIFF
      [3] - 0=D/A output 0-5V  (internal reference -5V)
            1=D/A output 0-10V (internal reference -10V)

    Options for A-821PGL-NDA:
      [0] - IO Base
      [1] - IRQ  (0=disable, 2, 3, 4, 5, 6, 7)
      [2] - 0=A/D channels are S.E.
            1=A/D channels are DIFF

    Options for PCL-813:
      [0] - IO Base

    Options for PCL-813B:
      [0] - IO Base
      [1] - 0= bipolar inputs
            1= unipolar inputs

    Options for ACL-8113, ISO-813:
      [0] - IO Base
      [1] - 0= 10V bipolar inputs
            1= 10V unipolar inputs
            2= 20V bipolar inputs
            3= 20V unipolar inputs

#### 5.6.89. pcl816 -- Advantech PCL-816 cards, PCL-814

Author: Juan Grigera <juan@grigera.com.ar>

Status: works

Manufacturer | Device | Name
--- | --- | ---
Advantech | PCL-816 | pcl816
Advantech | PCL-814B | pcl814b

    PCL 816 and 814B have 16 SE/DIFF ADCs, 16 DACs, 16 DI and 16 DO.
    Differences are at resolution (16 vs 12 bits).

    The driver support AI command mode, other subdevices not written.

    Analog output and digital input and output are not supported.

    Configuration Options:
      [0] - IO Base
      [1] - IRQ	(0=disable, 2, 3, 4, 5, 6, 7)
      [2] - DMA	(0=disable, 1, 3)
      [3] - 0, 10=10MHz clock for 8254
                1= 1MHz clock for 8254

#### 5.6.90. pcl818 -- Advantech PCL-818 cards, PCL-718

Author: Michal Dobes <dobes@tesnet.cz>

Status: works

Manufacturer | Device | Name
--- | --- | ---
Advantech | PCL-818L | pcl818l
Advantech | PCL-818H | pcl818h
Advantech | PCL-818HD | pcl818hd
Advantech | PCL-818HG | pcl818hg
Advantech | PCL-818 | pcl818
Advantech | PCL-718 | pcl718

    All cards have 16 SE/8 DIFF ADCs, one or two DACs, 16 DI and 16 DO.
    Differences are only at maximal sample speed, range list and FIFO
    support.
    The driver support AI mode 0, 1, 3 other subdevices (AO, DI, DO) support
    only mode 0. If DMA/FIFO/INT are disabled then AI support only mode 0.
    PCL-818HD and PCL-818HG support 1kword FIFO. Driver support this FIFO
    but this code is untested.
    A word or two about DMA. Driver support DMA operations at two ways:
    1) DMA uses two buffers and after one is filled then is generated
       INT and DMA restart with second buffer. With this mode I'm unable run
       more that 80Ksamples/secs without data dropouts on K6/233.
    2) DMA uses one buffer and run in autoinit mode and the data are
       from DMA buffer moved on the fly with 2kHz interrupts from RTC.
       This mode is used if the interrupt 8 is available for allocation.
       If not, then first DMA mode is used. With this I can run at
       full speed one card (100ksamples/secs) or two cards with
       60ksamples/secs each (more is problem on account of ISA limitations).
       To use this mode you must have compiled  kernel with disabled
       "Enhanced Real Time Clock Support".
       Maybe you can have problems if you use xntpd or similar.
       If you've data dropouts with DMA mode 2 then:
        a) disable IDE DMA
        b) switch text mode console to fb.

       Options for PCL-818L:
        [0] - IO Base
        [1] - IRQ	(0=disable, 2, 3, 4, 5, 6, 7)
        [2] - DMA	(0=disable, 1, 3)
        [3] - 0, 10=10MHz clock for 8254
                  1= 1MHz clock for 8254
        [4] - 0,  5=A/D input  -5V.. +5V
              1, 10=A/D input -10V..+10V
        [5] - 0,  5=D/A output 0-5V  (internal reference -5V)
              1, 10=D/A output 0-10V (internal reference -10V)
    	  2    =D/A output unknow (external reference)

       Options for PCL-818, PCL-818H:
        [0] - IO Base
        [1] - IRQ	(0=disable, 2, 3, 4, 5, 6, 7)
        [2] - DMA	(0=disable, 1, 3)
        [3] - 0, 10=10MHz clock for 8254
                  1= 1MHz clock for 8254
        [4] - 0,  5=D/A output 0-5V  (internal reference -5V)
              1, 10=D/A output 0-10V (internal reference -10V)
    	  2    =D/A output unknow (external reference)

       Options for PCL-818HD, PCL-818HG:
        [0] - IO Base
        [1] - IRQ	(0=disable, 2, 3, 4, 5, 6, 7)
        [2] - DMA/FIFO  (-1=use FIFO, 0=disable both FIFO and DMA,
                          1=use DMA ch 1, 3=use DMA ch 3)
        [3] - 0, 10=10MHz clock for 8254
                  1= 1MHz clock for 8254
        [4] - 0,  5=D/A output 0-5V  (internal reference -5V)
              1, 10=D/A output 0-10V (internal reference -10V)
       	  2    =D/A output unknow (external reference)

       Options for PCL-718:
        [0] - IO Base
        [1] - IRQ	(0=disable, 2, 3, 4, 5, 6, 7)
        [2] - DMA	(0=disable, 1, 3)
        [3] - 0, 10=10MHz clock for 8254
                  1= 1MHz clock for 8254
        [4] -     0=A/D Range is +/-10V
    	      1=             +/-5V
    	      2=             +/-2.5V
    	      3=             +/-1V
    	      4=             +/-0.5V
    	      5=  	     user defined bipolar
    	      6=	     0-10V
    	      7=	     0-5V
     	      8=	     0-2V
    	      9=	     0-1V
    	     10=	     user defined unipolar
        [5] - 0,  5=D/A outputs 0-5V  (internal reference -5V)
              1, 10=D/A outputs 0-10V (internal reference -10V)
    	      2=D/A outputs unknow (external reference)
        [6] - 0, 60=max  60kHz A/D sampling
              1,100=max 100kHz A/D sampling (PCL-718 with Option 001 installed)

#### 5.6.91. pcm3724 -- Advantech PCM-3724

Author: Drew Csillag <drew_csillag@yahoo.com>

Status: tested

Manufacturer | Device | Name
--- | --- | ---
Advantech | PCM-3724 | pcm724

    This is driver for digital I/O boards PCM-3724 with 48 DIO.
    It needs 8255.o for operations and only immediate mode is supported.
    See the source for configuration details.

    Copy/pasted/hacked from pcm724.c

#### 5.6.92. pcm3730 -- PCM3730

Author: Blaine Lee

Status: unknown

Manufacturer | Device | Name
--- | --- | ---
Advantech | PCM-3730 | pcm3730

    Configuration options:
      [0] - I/O port base

#### 5.6.93. pcmad -- Winsystems PCM-A/D12, PCM-A/D16

Author: ds

Status: untested

Manufacturer | Device | Name
--- | --- | ---
Winsystems | PCM-A/D12 | pcmad12
Winsystems | PCM-A/D16 | pcmad16

    This driver was written on a bet that I couldn't write a driver
    in less than 2 hours.  I won the bet, but never got paid.  =(

    Configuration options:
      [0] - I/O port base
      [1] - unused
      [2] - Analog input reference
              0 = single ended
              1 = differential
      [3] - Analog input encoding (must match jumpers)
              0 = straight binary
              1 = two's complement

#### 5.6.94. pcmda12 -- A driver for the Winsystems PCM-D/A-12

Author: Calin Culianu <calin@ajvar.org>

Status: works

Manufacturer | Device | Name
--- | --- | ---
Winsystems | PCM-D/A-12 | pcmda12

    A driver for the relatively straightforward-to-program PCM-D/A-12.
    This board doesn't support commands, and the only way to set its
    analog output range is to jumper the board.  As such,
    comedi_data_write() ignores the range value specified.

    The board uses 16 consecutive I/O addresses starting at the I/O port
    base address.  Each address corresponds to the LSB then MSB of a
    particular channel from 0-7.

    Note that the board is not ISA-PNP capable and thus
    needs the I/O port comedi_config parameter.

    Note that passing a nonzero value as the second config option will
    enable "simultaneous xfer" mode for this board, in which AO writes
    will not take effect until a subsequent read of any AO channel.  This
    is so that one can speed up programming by preloading all AO registers
    with values before simultaneously setting them to take effect with one
    read command.

    Configuration Options:
      [0] - I/O port base address
      [1] - Do Simultaneous Xfer (see description)

#### 5.6.95. pcmmio -- A driver for the PCM-MIO multifunction board

Author: Calin Culianu <calin@ajvar.org>

Status: works

Manufacturer | Device | Name
--- | --- | ---
Winsystems | PCM-MIO | pcmmio

    A driver for the relatively new PCM-MIO multifunction board from
    Winsystems.  This board is a PC-104 based I/O board.  It contains
    four subdevices:
      subdevice 0 - 16 channels of 16-bit AI
      subdevice 1 - 8 channels of 16-bit AO
      subdevice 2 - first 24 channels of the 48 channel of DIO (with edge-triggered interrupt support)
      subdevice 3 - last 24 channels of the 48 channel DIO (no interrupt support for this bank of channels)

      Some notes:

      Synchronous reads and writes are the only things implemented for AI and AO,
      even though the hardware itself can do streaming acquisition, etc.  Anyone
      want to add asynchronous I/O for AI/AO as a feature?  Be my guest...

      Asynchronous I/O for the DIO subdevices *is* implemented, however!  They are
      basically edge-triggered interrupts for any configuration of the first
      24 DIO-lines.

      Also note that this interrupt support is untested.

      A few words about edge-detection IRQ support (commands on DIO):

      * To use edge-detection IRQ support for the DIO subdevice, pass the IRQ
        of the board to the comedi_config command.  The board IRQ is not jumpered
        but rather configured through software, so any IRQ from 1-15 is OK.

      * Due to the genericity of the comedi API, you need to create a special
        comedi_command in order to use edge-triggered interrupts for DIO.

      * Use comedi_commands with TRIG_NOW.  Your callback will be called each
        time an edge is detected on the specified DIO line(s), and the data
        values will be two sample_t's, which should be concatenated to form
        one 32-bit unsigned int.  This value is the mask of channels that had
        edges detected from your channel list.  Note that the bits positions
        in the mask correspond to positions in your chanlist when you
        specified the command and *not* channel id's!

     *  To set the polarity of the edge-detection interrupts pass a nonzero value
        for either CR_RANGE or CR_AREF for edge-up polarity, or a zero
        value for both CR_RANGE and CR_AREF if you want edge-down polarity.

    Configuration Options:
      [0] - I/O port base address
      [1] - IRQ (optional -- for edge-detect interrupt support only, leave out if you don't need this feature)

#### 5.6.96. pcmuio -- A driver for the PCM-UIO48A and PCM-UIO96A boards from Winsystems.

Author: Calin Culianu <calin@ajvar.org>

Status: works

Manufacturer | Device | Name
--- | --- | ---
Winsystems | PCM-UIO48A | pcmuio48
Winsystems | PCM-UIO96A | pcmuio96

    A driver for the relatively straightforward-to-program PCM-UIO48A and
    PCM-UIO96A boards from Winsystems.  These boards use either one or two
    (in the 96-DIO version) WS16C48 ASIC HighDensity I/O Chips (HDIO).
    This chip is interesting in that each I/O line is individually
    programmable for INPUT or OUTPUT (thus comedi_dio_config can be done
    on a per-channel basis).  Also, each chip supports edge-triggered
    interrupts for the first 24 I/O lines.  Of course, since the
    96-channel version of the board has two ASICs, it can detect polarity
    changes on up to 48 I/O lines.  Since this is essentially an (non-PnP)
    ISA board, I/O Address and IRQ selection are done through jumpers on
    the board.  You need to pass that information to this driver as the
    first and second comedi_config option, respectively.  Note that the
    48-channel version uses 16 bytes of IO memory and the 96-channel
    version uses 32-bytes (in case you are worried about conflicts).  The
    48-channel board is split into two 24-channel comedi subdevices.
    The 96-channel board is split into 4 24-channel DIO subdevices.

    Note that IRQ support has been added, but it is untested.

    To use edge-detection IRQ support, pass the IRQs of both ASICS
    (for the 96 channel version) or just 1 ASIC (for 48-channel version).
    Then, use use comedi_commands with TRIG_NOW.
    Your callback will be called each time an edge is triggered, and the data
    values will be two sample_t's, which should be concatenated to form one
    32-bit unsigned int.  This value is the mask of channels that had
    edges detected from your channel list.  Note that the bits positions
    in the mask correspond to positions in your chanlist when you specified
    the command and *not* channel id's!

    To set the polarity of the edge-detection interrupts pass a nonzero value for
    either CR_RANGE or CR_AREF for edge-up polarity, or a zero value for both
    CR_RANGE and CR_AREF if you want edge-down polarity.

    In the 48-channel version:

    On subdev 0, the first 24 channels channels are edge-detect channels.

    In the 96-channel board you have the collowing channels that can do edge detection:

    subdev 0, channels 0-24  (first 24 channels of 1st ASIC)
    subdev 2, channels 0-24  (first 24 channels of 2nd ASIC)

    Configuration Options:
      [0] - I/O port base address
      [1] - IRQ (for first ASIC, or first 24 channels)
      [2] - IRQ for second ASIC (pcmuio96 only - IRQ for chans 48-72 .. can be the same as first irq!)

#### 5.6.97. poc -- Generic driver for very simple devices

Author: ds

Status: unknown

Manufacturer | Device | Name
--- | --- | ---
Keithley Metrabyte | DAC-02 | dac02
Advantech | PCL-733 | pcl733
Advantech | PCL-734 | pcl734

    This driver is indended to support very simple ISA-based devices,

    Configuration options:
      [0] - I/O port base

#### 5.6.98. quatech_daqp_cs -- Quatech DAQP PCMCIA data capture cards

Author: Brent Baccala <baccala@freesoft.org>

Status: works

Manufacturer | Device | Name
--- | --- | ---
Quatech | DAQP-208 | daqp
Quatech | DAQP-308 | daqp

#### 5.6.99. rtd520 -- Real Time Devices PCI4520/DM7520

Author: Dan Christian

Status: Works. Only tested on DM7520-8. Not SMP safe.

Manufacturer | Device | Name
--- | --- | ---
Real Time Devices | DM7520HR-1 | rtd520
Real Time Devices | DM7520HR-8 | rtd520
Real Time Devices | PCI4520 | rtd520
Real Time Devices | PCI4520-8 | rtd520

    Configuration options:
      [0] - PCI bus of device (optional)
              If bus/slot is not specified, the first available PCI
              device will be used.
      [1] - PCI slot of device (optional)

#### 5.6.100. rti800 -- Analog Devices RTI-800/815

Author: ds

Status: unknown

Manufacturer | Device | Name
--- | --- | ---
Analog Devices | RTI-800 | rti800
Analog Devices | RTI-815 | rti815

    Configuration options:
      [0] - I/O port base address
      [1] - IRQ
      [2] - A/D reference
              0 = differential
              1 = pseudodifferential (common)
              2 = single-ended
      [3] - A/D range
              0 = [-10,10]
              1 = [-5,5]
              2 = [0,10]
      [4] - A/D encoding
              0 = two's complement
              1 = straight binary
      [5] - DAC 0 range
              0 = [-10,10]
              1 = [0,10]
      [6] - DAC 0 encoding
              0 = two's complement
              1 = straight binary
      [7] - DAC 1 range (same as DAC 0)
      [8] - DAC 1 encoding (same as DAC 0)

#### 5.6.101. rti802 -- Analog Devices RTI-802

Author: Anders Blomdell <anders.blomdell@control.lth.se>

Status: works

Manufacturer | Device | Name
--- | --- | ---
Analog Devices | RTI-802 | rti802

    Configuration Options:
        [0] - i/o base
        [1] - unused
        [2] - dac#0  0=two's comp, 1=straight
        [3] - dac#0  0=bipolar, 1=unipolar
        [4] - dac#1 ...
        ...
        [17] - dac#7 ...

#### 5.6.102. s526 -- Sensoray 526 driver

Author: Richie Everett Wang <everett.wang@everteq.com>

Status: experimental

Manufacturer | Device | Name
--- | --- | ---
Sensoray | 526 | s526

    Encoder works
    Analog input works
    Analog output works
    PWM output works
    Commands are not supported yet.

    Configuration Options:

    comedi_config /dev/comedi0 s526 0x2C0,0x3

#### 5.6.103. s626 -- Sensoray 626 driver

Author: Richie Everett Wang &lt;everett.wang&#64;everteq.com&gt;

Status: experimental

Manufacturer | Device | Name
--- | --- | ---
Sensoray | 626 | s626

    Configuration options:
      [0] - PCI bus of device (optional)
      [1] - PCI slot of device (optional)
      If bus/slot is not specified, the first supported
      PCI device found will be used.

    INSN_CONFIG instructions:
      analog input:
       none

      analog output:
       none

      digital channel:
       s626 has 3 dio subdevices (2,3 and 4) each with 16 i/o channels
       supported configuration options:
       INSN_CONFIG_DIO_QUERY
       COMEDI_INPUT
       COMEDI_OUTPUT

      encoder:
       Every channel must be configured before reading.

       Example code

       insn.insn=INSN_CONFIG;   //configuration instruction
       insn.n=1;                //number of operation (must be 1)
       insn.data=&initialvalue; //initial value loaded into encoder
                                //during configuration
       insn.subdev=5;           //encoder subdevice
       insn.chanspec=CR_PACK(encoder_channel,0,AREF_OTHER); //encoder_channel
                                                            //to configure

       comedi_do_insn(cf,&insn); //executing configuration

#### 5.6.104. serial2002 -- Driver for serial connected hardware

Author: Anders Blomdell

Status: in development

#### 5.6.105. skel -- Skeleton driver, an example for driver writers

Author: ds

Status: works

    This driver is a documented example on how Comedi drivers are
    written.

    Configuration Options:
      none

#### 5.6.106. ssv_dnp -- SSV Embedded Systems DIL/Net-PC

Author: Robert Schwebel <robert@schwebel.de>

Status: unknown

Manufacturer | Device | Name
--- | --- | ---
SSV Embedded Systems | DIL/Net-PC 1486 | dnp-1486

#### 5.6.107. unioxx5 -- Driver for Fastwel UNIOxx-5 (analog and digital i/o) boards.

Author: Kruchinin Daniil (asgard) <asgard@etersoft.ru>

Status: unknown

Manufacturer | Device | Name
--- | --- | ---
Fastwel | UNIOxx-5 | unioxx5
Fastwel | UNIOxx-5 | unioxx5

     This card supports digital and analog I/O. It written for g01
     subdevices only.
     channels range: 0 .. 23 dio channels
     and 0 .. 11 analog modules range
     During attaching unioxx5 module displays modules identifiers
     (see dmesg after comedi_config) in format:
     | [module_number] module_id |

#### 5.6.108. usbdux -- Driver for USB-DUX-D of INCITE Technology Limited

Author: Bernd Porr <tech@linux-usb-daq.co.uk>

Status: Stable

Manufacturer | Device | Name
--- | --- | ---
ITL | USB-DUX-D | usbdux

    The following subdevices are available
      - Analog input
        subdevice: 0
        number of channels: 8
        max data value: 4095
        ranges:
          all channels:
            range = 0 : [-4.096 V,4.096 V]
            range = 1 : [-2.048 V,2.048 V]
            range = 2 : [0 V,4.096 V]
            range = 3 : [0 V,2.048 V]
        command:
          start: now|int
          scan_begin: timer (contains the sampling interval. min is 125us / chan)
          convert: now
          scan_end: count
          stop: none|count
      - Analogue output:
        subdevice: 1
        number of channels: 4
        max data value: 4095
        ranges:
          all channels:
            range = 0 : [-4.096 V,4.096 V]
            range = 1 : [0 V,4.096 V]
        command:
          start: now|int
          scan_begin: timer (contains the sampling interval. min is 1ms.)
          convert: now
          scan_end: count
          stop: none|count
      - Digital I/O
        subdevice: 2
        number of channels: 8
      - Counter
        subdevice: 3
        number of channels: 4
        max data value: 65535
        Pin assignments on the D-connector:
          0=/CLK0, 1=UP/DOWN0, 2=RESET0, 4=/CLK1, 5=UP/DOWN1, 6=RESET1
      - PWM
        subdevice: 4
        number of channels: 8 or 4 + polarity output for H-bridge
                                 (see INSN_CONFIG_PWM_SET_H_BRIDGE where
                                  the first byte is the value and the
                                  second the polarity)
        max data value: 512

    Configuration options
      The device requires firmware which is usually
      uploaded automatically by udev/hotplug at the moment
      the driver module is loaded.
      In case udev/hotplug is not enabled you need to upload
      the firmware with comedi_config -i usbdux_firmware.bin.
      The firmware is usually installed under /lib/firmware
      or can be downloaded form http://www.linux-usb-daq.co.uk.

#### 5.6.109. usbduxfast -- Driver for USB-DUX-FAST of INCITE Technology Limited

Author: Bernd Porr <tech@linux-usb-daq.co.uk>

Status: stable

Manufacturer | Device | Name
--- | --- | ---
ITL | USB-DUX-FAST | usbduxfast

    The device has one subdevice for analogue input.
      - subdevice: 0
        number of channels: 16
        max data value: 4096
        ranges:
          all channelss:
            range = 0 : [-0.75 V,0.75 V]
            range = 1 : [-0.5 V,0.5 V]
        command:
          The channel-list allows 1,2,3 and 16 channels.
          start: now|ext|int (external trigger via pin at HD-D connector)
          scan_begin: follow|timer|ext
          convert: timer|ext (contains the sampling interval. Min interval
                              for single channel acquisition is 33us
                              and for multiplexed acquisition 300us)
          scan_end: count
          stop: none|count

    Configuration options:
      The device requires firmware which is usually
      uploaded automatically by udev/hotplug at the moment
      the driver module is being loaded.
      In case udev/hotplug is not enabled you need to upload
      the firmware with comedi_config -i usbduxfast_firmware.bin
      The firmware is usually installed under /lib/firmware
      or can be downloaded form http://www.linux-usb-daq.co.uk.

#### 5.6.110. usbduxsigma -- Driver for USB-DUX-SIGMA of INCITE Technology Limited

Author: Bernd Porr <tech@linux-usb-daq.co.uk>

Status: Stable

Manufacturer | Device | Name
--- | --- | ---
ITL | USB-DUX-SIGMA | usbduxsigma

    The following subdevices are available
      - Analog input
        subdevice: 0
        number of channels: 16
        max data value: 16777215 (0xfffff, 24bits)
        ranges:
          all channels: [-1.325 V,1.325 V]
        command:
          start: now|int
          scan_begin: timer (contains the sampling interval. min 250us)
          convert: now
          scan_end: count
          stop: none|count
      - Analog output
        subdevice: 1
        number of channels: 4
        max data value: 255
        ranges:
          all channels: [0 V,2.5 V]
        command:
          start: now|int
          scan_begin: timer (contains the sampling interval. min 1ms)
          convert: now
          scan_end: count
          stop: none|count
      - Digital I/O
        subdevice: 2
        number of channels: 24 (first 8 bits on the D connector, 16 bits int.)
      - PWM
        subdevice: 3
        number of channels: 8 or 4 + polarity output for H-bridge
                                 (see INSN_CONFIG_PWM_SET_H_BRIDGE where
                                  the first byte is the value and the
                                  second the polarity)
        max data value: 512

    Configuration options:
      The device requires firmware which is usually
      uploaded automatically by udev/hotplug at the moment
      the driver module is loaded.
      In case udev/hotplug is not enabled you need to upload
      the firmware with comedi_config -i usbdux_firmware.bin.
      The firmware is usually installed under /lib/firmware
      or can be downloaded form http://www.linux-usb-daq.co.uk.

Prev | Up | Next
5.5. Language bindings | Home | 6. Writing a Comedi driver