Supported Hardware

Supported Hardware Matrix

Table 2. Linux-GPIB Supported Hardware Matrix

makemodelkernel driver moduleboard_type (for gpib.conf)
Agilent (HP)82341Chp_82341.kohp_82341
Agilent (HP)82341Dhp_82341.kohp_82341
Agilent (HP)82350Aagilent_82350b.koagilent_82350b
Agilent82350Bagilent_82350b.koagilent_82350b
Agilent82351Aagilent_82350b.koagilent_82350b
Agilent82357Aagilent_82357a.koagilent_82357a
Agilent82357Bagilent_82357a.koagilent_82357a
Beiming TechnologiesF82357agilent_82357a.koagilent_82357a
Beiming TechnologiesS82357agilent_82357a.koagilent_82357a
Capital Equipment CorporationPC-488pc2_gpib.kopcII
Capital Equipment CorporationPCI-488cec_gpib.kocec_pci
Capital Equipment CorporationCEC-488tnt4882.koni_pci
CONTECGP-IB(PC)pc2_gpib.kopcIIa
Frank Mori Hessfmh_gpib_corefmh_gpib.kofmh_gpib, fmh_gpib_unaccel
HamegHO80pc2_gpib.kopcII
HamegHO80-2ines_gpib.koines_isa
Hewlett PackardHP82335hp82335.kohp82335
Hewlett PackardHP27209hp82335.kohp82335
InesGPIB-HS-NTines_gpib.koines_isa
InesGPIB for Compact PCIines_gpib.koines_pci, ines_pci_unaccel
InesGPIB for PCIines_gpib.koines_pci, ines_pci_unaccel
InesGPIB for PCMCIAines_gpib.koines_pcmcia, ines_pcmcia_unaccel
InesGPIB PC/104ines_gpib.koines_isa
IotechGP488Bpc2_gpib.kopcIIa
KeithleyKPCI-488cec_gpib.kocec_pci
KeithleyKUSB-488ni_usb_gpib.koni_usb_b
KeithleyKUSB-488Ani_usb_gpib.koni_usb_b
KeithleyMBC-488pc2_gpib.kopcII
Keysight (Agilent)82350B PCIagilent_82350b.koagilent_82350b
Keysight (Agilent)82351A PCIeagilent_82350b.koagilent_82350b
Keysight (Agilent)82357B USBagilent_82357a.koagilent_82357a
Measurement Computing (Computer Boards)CPCI-GPIBcb7210.kocbi_pci, cbi_pci_unaccel
Measurement Computing (Computer Boards)ISA-GPIBcb7210.kocbi_isa, cbi_isa_unaccel
Measurement Computing (Computer Boards)ISA-GPIB/LCcb7210.kocbi_isa_unaccel
Measurement Computing (Computer Boards)ISA-GPIB-PC2Apc2_gpib.kopcIIa (nec7210 chip), pcIIa_cb7210 (cb7210 chip)
Measurement Computing (Computer Boards)PCI-GPIB/1Mcb7210.kocbi_pci, cbi_pci_unaccel
Measurement Computing (Computer Boards)PCI-GPIB/300Kcb7210.kocbi_pci_unaccel
Measurement Computing (Computer Boards)PCMCIA-GPIBcb7210.kocbi_pcmcia, cbi_pcmcia_unaccel
Measurement Computing (Computer Boards)USB-488ni_usb_gpib.koni_usb_b
National InstrumentsAT-GPIB (with NAT4882 chip)tnt4882.koni_nat4882_isa, ni_nat4882_isa_accel
National InstrumentsAT-GPIB (with NEC7210 chip)tnt4882.koni_nec_isa, ni_nec_isa_accel
National InstrumentsAT-GPIB/TNTtnt4882.koni_isa, ni_isa_accel
National InstrumentsGPIB-USB-Bni_usb_gpib.koni_usb_b
National InstrumentsGPIB-USB-HSni_usb_gpib.koni_usb_b
National InstrumentsGPIB-USB-HS+ni_usb_gpib.koni_usb_b
National InstrumentsPCI-GPIBtnt4882.koni_pci
National InstrumentsPCIe-GPIBtnt4882.koni_pci
National InstrumentsPCI-GPIB+tnt4882.koni_pci
National InstrumentsPCM-GPIBtnt4882.koni_pci
National InstrumentsPXI-GPIBtnt4882.koni_pci
National InstrumentsPCIIpc2_gpib.kopcII
National InstrumentsPCIIapc2_gpib.kopcIIa
National InstrumentsPCII/IIapc2_gpib.kopcII or pcII_IIa (depending on board switch)
National InstrumentsPCMCIA-GPIBtnt4882.koni_pcmcia, ni_pcmcia_accel
self-made (see note)http://lpvo.fe.uni-lj.si/gpiblpvo_usb_gpib.kolpvo_usb_gpib
GPIO bitbangGPIOgpib_bitbang.kogpib_bitbang
QuancomPCIGPIB-1ines_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)

Board-Specific Notes

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).

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.

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).

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.

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)

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.

GPIO bitbang adapter

WARNING: this driver is incomplete and its behavior does not conform to the IEEE 488 standards.

This is a simple GPIO bitbang driver that currently only works on Raspberry Pi platforms. For information on the GPIO to GPIB pinouts as well as limitations see the source code at:

  linux-gpib-kernel/drivers/gpib/gpio/gpib_bitbang.c

Two pin maps between gpio and gpib are currently supported: elektronomikon and gpib4pi-1.1. For schematics, boards and information on driver IC's see http://elektronomikon.org and lightside-instruments gpib4pi

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 IC's when they are not installed the module parameter sn7516x_used must be set to zero:

  modprobe gpib_bitbang sn7516x_used=0
To set the pin_map for the Lightside instruments gpib4pi-1.1 board
  modprobe gpib_bitbang pin_map="gpib4pi-1.1"

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.

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 the end of the discussion on bug ticket #82.