Linux-GPIB 4.3.7 Documentation
Prev |  | Next

# 4. Supported Hardware

## 4.1. Supported Hardware Matrix

Table 2. Linux-GPIB Supported Hardware Matrix

make | model | kernel driver module | board_type (for gpib.conf)
--- | --- | --- | ---
Agilent (HP) | 82341C | hp_82341.ko | hp_82341
Agilent (HP) | 82341D | hp_82341.ko | hp_82341
Agilent (HP) | 82350A | agilent_82350b.ko | agilent_82350b
Agilent | 82350B | agilent_82350b.ko | agilent_82350b
Agilent | 82351A | agilent_82350b.ko | agilent_82350b
Agilent | 82357A | agilent_82357a.ko | agilent_82357a
Agilent | 82357B | agilent_82357a.ko | agilent_82357a
Beiming Technologies | F82357 | agilent_82357a.ko | agilent_82357a
Beiming Technologies | S82357 | agilent_82357a.ko | agilent_82357a
Capital Equipment Corporation | PC-488 | pc2_gpib.ko | pcII
Capital Equipment Corporation | PCI-488 | cec_gpib.ko | cec_pci
Capital Equipment Corporation | CEC-488 | tnt4882.ko | ni_pci
CONTEC | GP-IB(PC) | pc2_gpib.ko | pcIIa
Frank Mori Hess | fmh_gpib_core | fmh_gpib.ko | fmh_gpib, fmh_gpib_unaccel
Hameg | HO80 | pc2_gpib.ko | pcII
Hameg | HO80-2 | ines_gpib.ko | ines_isa
Hewlett Packard | HP82335 | hp82335.ko | hp82335
Hewlett Packard | HP27209 | hp82335.ko | hp82335
Ines | GPIB-HS-NT | ines_gpib.ko | ines_isa
Ines | GPIB for Compact PCI | ines_gpib.ko | ines_pci, ines_pci_unaccel
Ines | GPIB for PCI | ines_gpib.ko | ines_pci, ines_pci_unaccel
Ines | GPIB for PCMCIA | ines_gpib.ko | ines_pcmcia, ines_pcmcia_unaccel
Ines | GPIB PC/104 | ines_gpib.ko | ines_isa
Iotech | GP488B | pc2_gpib.ko | pcIIa
Keithley | KPCI-488 | cec_gpib.ko | cec_pci
Keithley | KUSB-488 | ni_usb_gpib.ko | ni_usb_b
Keithley | KUSB-488A | ni_usb_gpib.ko | ni_usb_b
Keithley | MBC-488 | pc2_gpib.ko | pcII
Keysight (Agilent) | 82350B PCI | agilent_82350b.ko | agilent_82350b
Keysight (Agilent) | 82351A PCIe | agilent_82350b.ko | agilent_82350b
Keysight (Agilent) | 82357B USB | agilent_82357a.ko | agilent_82357a
Measurement Computing (Computer Boards) | CPCI-GPIB | cb7210.ko | cbi_pci, cbi_pci_unaccel
Measurement Computing (Computer Boards) | ISA-GPIB | cb7210.ko | cbi_isa, cbi_isa_unaccel
Measurement Computing (Computer Boards) | ISA-GPIB/LC | cb7210.ko | cbi_isa_unaccel
Measurement Computing (Computer Boards) | ISA-GPIB-PC2A | pc2_gpib.ko | pcIIa (nec7210 chip), pcIIa_cb7210 (cb7210 chip)
Measurement Computing (Computer Boards) | PCI-GPIB/1M | cb7210.ko | cbi_pci, cbi_pci_unaccel
Measurement Computing (Computer Boards) | PCI-GPIB/300K | cb7210.ko | cbi_pci_unaccel
Measurement Computing (Computer Boards) | PCMCIA-GPIB | cb7210.ko | cbi_pcmcia, cbi_pcmcia_unaccel
Measurement Computing (Computer Boards) | USB-488 | ni_usb_gpib.ko | ni_usb_b
National Instruments | AT-GPIB (with NAT4882 chip) | tnt4882.ko | ni_nat4882_isa, ni_nat4882_isa_accel
National Instruments | AT-GPIB (with NEC7210 chip) | tnt4882.ko | ni_nec_isa, ni_nec_isa_accel
National Instruments | AT-GPIB/TNT | tnt4882.ko | ni_isa, ni_isa_accel
National Instruments | GPIB-USB-B | ni_usb_gpib.ko | ni_usb_b
National Instruments | GPIB-USB-HS | ni_usb_gpib.ko | ni_usb_b
National Instruments | GPIB-USB-HS+ | ni_usb_gpib.ko | ni_usb_b
National Instruments | PCI-GPIB | tnt4882.ko | ni_pci
National Instruments | PCIe-GPIB | tnt4882.ko | ni_pci
National Instruments | PCI-GPIB+ | tnt4882.ko | ni_pci
National Instruments | PCM-GPIB | tnt4882.ko | ni_pci
National Instruments | PXI-GPIB | tnt4882.ko | ni_pci
National Instruments | PCII | pc2_gpib.ko | pcII
National Instruments | PCIIa | pc2_gpib.ko | pcIIa
National Instruments | PCII/IIa | pc2_gpib.ko | pcII or pcII_IIa (depending on board switch)
National Instruments | PCMCIA-GPIB | tnt4882.ko | ni_pcmcia, ni_pcmcia_accel
lpvo self-made adapter | lpvo self-made | lpvo_usb_gpib.ko | lpvo_usb_gpib
GPIO bitbang | GPIO | gpib_bitbang.ko | gpib_bitbang
Quancom | PCIGPIB-1 | ines_gpib.ko (Ines iGPIB 72010 chip) or cb7210.ko (Measurement Computing cb7210 chip) | ines_pci or ines_pci_unaccel (Ines iGPIB 72010 chip), cbi_pci_unaccel (Measurement Computing cb7210 chip)
xyphro | UsbGpib | xyphro_ugc.ko | xyphro_ugc

## 4.2. Board-Specific Notes

### 4.2.1. Agilent (HP) 82341

After power-up, the Agilent 82341 boards require a firmware upload before they can be used. This can be accomplished using the "--init-data" option of gpib_config. The firmware data for the boards can be found at this repository. Note the C and D versions use different firmware data.

If you specify a non-zero base address in gpib.conf, the driver will assume you are trying to configure a 82341C. Otherwise, the driver will use the kernel's ISAPNP support to attempt to configure an 82341D.

The 82341 does not support detection of an end-of-string character in hardware, it only automatically detects the when the EOI line is asserted. Thus if you use the REOS flag for a read, the board's fifos will not be used for the transfer. This will greatly reduce the maximum transfer rate for your board (which may or may not be noticeable depending on the device you are talking to).

### 4.2.2. Agilent 82350A/B and 82351A

The Agilent 82350A/B and 82351A boards do not support detection of an end-of-string character during reads in hardware, they can only detect assertion of the EOI line. Thus if you use the REOS flag for a read, the boards' fifos will not be used for the transfer. This will greatly reduce the maximum transfer rate for your board (which may or may not be noticeable depending on the device you are talking to).

After power-up, the 82350A boards require a firmware upload before they can be used. This can be accomplished using the "--init-data" option of gpib_config. The firmware data for the 82350A can be found at this repository. The 82350B and 82351A do not require a firmware upload.

### 4.2.3. Agilent 82357A/B

The Agilent 82357A and 82357B require a firmware upload (before gpib_config is run) to become functional after being plugged in. The linux-gpib tarball contains udev rules for automatically running the fxload program to upload the firmware (and to run gpib_config after the firmware is uploaded). However, the actual firmware data itself must be obtained seperately. It can be found at this repository.

The 82357A/B have a few limitation due to their firmware code:

- They cannot be run as a device, but must be the system controller.

- They cannot be assigned a secondary address.

- They cannot do 7 bit compares when looking for an end-of-string character (they always compare all 8 bits).

### 4.2.4. Beiming F/S82357

Linux-gpib support requires a minimum firmware version of 1.10 for the F82357 and version 1.20 for the S82357. These devices have on-board firmware and do not require a firmware upload before becoming functional afer plug-in. The on-board firmware can be re-flashed; contact the manufacturer for firmware and re-flash procedure.

Limitations:

- These devices can only be used as system controllers.

- They can only do 8-bit end-of-string (EOS) compares.

### 4.2.5. fmh_gpib_core

fmh_gpib_core is a GPIB chip written in VHDL suitable for programming into a FPGA. The code for the chip may be found at https://github.com/fmhess/fmh_gpib_core. It supports a cb7210.2 style register interface with some extensions. More specifically, the driver is for the hardware layout specified in src/example/fmh_gpib_top.vhd file in the fmh_gpib_core repository.

The driver obtains its hardware information (base addresses, interrupt, dma, etc.) from the device tree. It expects to find two i/o memory resources, an interrupt, and a dma channel. One i/o memory resource is called "gpib_control_status" which contains the 8 bit cb7210.2 registers. The other i/o memory resource is called "dma_fifos" and contains 16 bit registers for the fifos and transfer counter. The dma channel the chip is wired to is specified with the standard "dmas" and "dma-names" fields, with a dma-name of "rxtx". So, the device tree entry for a chip connected to channel 2 of dma controller "dmac" might look something like:

    fmh_gpib_0: fmh_gpib@0x00049800 {
                    compatible = "fmhess,fmh_gpib_core";
                    reg = < 0x00049600 0x00000080
                            0x00049800 0x00000008 >;
                    reg-names = "gpib_control_status", "dma_fifos";
                    interrupt-parent = < &intc >;
                    interrupts = < 0 57 4 >;
                    dmas = < &dmac 2 >;
                    dma-names = "rxtx";
                }; //end fmh_gpib@0x00049800 (fmh_gpib_0)

### 4.2.6. Self-made usb-gpib adapter

This usb-gpib adapter can be assembled following the project from the Laboratory of Photovoltaics and Optoelectronics at the Faculty of Electrical Engineering, University of Ljubljana. It is available at http://lpvo.fe.uni-lj.si/gpib . The adapter allows the control of GPIB devices with some limitations: it can only be the system controller; multicontroller and device operations are not supported (as yet). The linux-gpib driver 'lpvo_usb_gpib', written at the Department of Physics of University of Florence (Italy), is currently under development. It offers basic capabilities like ibrd(), ibwrt(), WaitSRQ() and others. Requests for unsupported features are flagged by a diagnostic message to syslog.

### 4.2.7. GPIO bitbang adapter

This is a simple GPIO bitbang driver that currently only works on Raspberry Pi platforms. It has the following limitations:

- It cannot be run as a device, but must be the system controller.

- If the SN7516x driver chips are not used the fan out is limited to a maximum of 4 devices.

- Parallel poll is not supported.

- Setting T1 delay (ibconfig(board, IbcTIMING, T1_delay)) is not implemented. The high interrupt latency on the RPi platforms with Linux does not permit to ensure even a 2 microsecond T1 delay.

Three pin maps between gpio and gpib are currently supported: "elektronomikon", "gpib4pi-1.1" and "yoga". The pin_maps are configured via the pin_map module parameter. By default support for the elekronomikon pin_map with SN75160/161 driver IC's is enabled. i.e. the default module parameter settings are pin_map=elektonomikon and sn7516x_used=1. To disable support for the SN75160/161 IC's when they are not installed the module parameter sn7516x_used must be set to zero:

        modprobe gpib_bitbang sn7516x_used=0

For schematics, boards and information on driver IC's see

- elektronomikon

  This is the default pinmap. The activity led on the adapter is enabled.

- gpib4pi-1.1

  To set the pin_map for the Lightside instruments gpib4pi-1.1 board

      	  modprobe gpib_bitbang pin_map="gpib4pi-1.1"

  The activity led on the adapter is enabled.

- yoga

  To set the pin_map for the yoga board

      	  modprobe gpib_bitbang pin_map="yoga"

  For the yoga board the sn7516x_used option is ignored. The status led on the adapter is enabled as the activity led.

### 4.2.8. xyphro compact usb to GPIB adapter

This driver is experimental. The standard adapter as shipped uses the normal linux usbtmc driver. Special firmware is required for this device to work with the linux-gpib driver. The project page has information on the hardware and the link for the firmware binary for the linux-gpib firmware. In order to flash the linux-gpib firmware, dowload the LinuxGpib.bin file (in the SW/binaries directory). With the adapter plugged in to a usb port press the reset button for about 5 secs. The device will then enumerate as a usb mass storage device. If you don't have an automounter enabled mount the device (in this case /dev/sda, see the output of dmesg for the appropriate dev):

    # mkdir -p /mnt/usbgpib
    # mount /dev/sda /mnt/usbgpib

Then execute the following commmand (possibly replacing usbgpib with the automounted directory):

    # dd if=LinuxGpib.bin of=/mnt/usbgpib/FLASH.BIN bs=512 conv=notrunc \
      oflag=direct,sync

You can always reflash the standard usbtmc firmware if required. After disconnecting and reconnecting the adapter on the usb side you can verify whether the operation of flashing the LinuxGpib firmware was successful by checking the output of:

    $ lsusb -d 03eb: -v

To see whether

     bInterfaceClass =  255 Vendor Specific Class

In which case you are all set to use the adapter with linux-gpib.

### 4.2.9. National Instruments GPIB-USB-B

The USB-B requires a firmware upload (before gpib_config is run) to become functional after being plugged in. The linux-gpib tarball contains udev rules for automatically running the fxload program to upload the firmware (and to run gpib_config after the firmware is uploaded). However, the actual firmware must be obtained separately. It can be found at this repository.

### 4.2.10. National Instruments GPIB-USB-HS and GPIP-USB-HS+

Unlike the USB-B, the USB-HS does not require a firmware upload to become functional after being plugged in. Most GPIB-USB-HS+ also do not require firmware upload, however some exceptions have been identified. If your GPIB-USB-HS+ initially comes up with a USB product id of 0x761e it will require a one-time firmware upload which permanently changes the product id to the usual 0x7618 for a GPIB-USB-HS+. Currently this can be done by plugging the adapter into a Windows computer which has the NI driver software installed. Alternatively, you may use the hsplus_load utility to initialize the adapter under Linux.

The linux-gpib tarball contains udev rules which will automatically run gpib_config after the device is plugged in.

Beware of inexpensive NI GPIB-USB-HS clones. While they work on Windows most will not and cannot be made to work with linux-gpib. See this post on bug ticket #82.

Prev | Home | Next
gpib_config |  | GPIB utility programme