GPIBee Manual

Firmware Version: V1.3


Table of Contents


1. Introduction

GPIBee is a compact, multi-interface GPIB controller designed for laboratory, industrial, and automated test environments. It combines Ethernet 🌐, USB 🔌, and UART communication with full GPIB  bus control, discovery mechanisms, a built-in web interface, and an internal SCPI command system. The device automatically selects the most suitable communication mode and provides consistent behavior across all interfaces.

GPIBee supports modern workflows while remaining compatible with legacy GPIB instruments. It offers flexible connectivity, robust protocol handling, and a powerful configuration interface accessible through Ethernet, USB, or SCPI.

GPIBee is intentionally designed to remain isolated from external network resources. It operates without a gateway, does not issue DNS queries, and never initiates connections to outside servers.

2. Interfaces

2.1 Ethernet Interface 🌐

When connected to a network, GPIBee operates as a LAN-based GPIB controller. Two protocols are available:

The Ethernet interface supports DHCP with fallback to a static IP, static addressing without DHCP, mDNS, SSDP, and full GPIB subaddressing. Network parameters such as hostname, IP address, subnet mask, and timing are fully configurable.

Supported link modes:

2.2 USB Interfaces 🔌

GPIBee provides three selectable USB modes. Only one mode is active at a time.

USB supports both High-Speed (480 Mbps) and Full-Speed (12 Mbps) operation. A forcing to 12 Mbps operation is possible.

2.2.1 USB Network Mode 🌐

The device enumerates as a USB Ethernet adapter (using USB CDC NCM class). An IP address is automatically assigned to the host PC by the integrated DHCP server, and GPIBee becomes reachable via:

This mode works independently of whether GPIB instruments are connected or not.

2.2.2 USB UART Mode 📡

A virtual serial port is exposed, providing the ++ protocol over UART. Baud rate and parity settings are ignored and not relevant for this virtual UART, simplifying integration with embedded systems.

2.2.3 USBTMC Mode 🔧

GPIBee behaves like the classic USBGPIB V2 adapter:

2.3 Summarized overview of interface features

Interface Protocol Supports more than one GPIB device Subaddressing SRQ signalling
Clearing Triggering Status byte reading GoToLocal
Ethernet VXI-11 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️

++ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
USB Network (VXI-11) ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️

USBTMC ⚠️
only with special internal SCPI command
✔️ ✔️ ✔️ ✔️ ✔️ ✔️

UART ++ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️

3. Features

3.1 GPIB Features

GPIBee implements a complete GPIB controller with:

3.2 Network and USB Features 🌐 🔌

3.3 Hardware and Compatibility

3.4 Web Interface 🌐

The integrated web interface provides:

4. Power Supply 🔋

GPIBee can be powered via USB or Power over Ethernet. Power selection is independent of the communication interface.

Scenario Power Source
USB only USB supplies power
Ethernet with PoE PoE switch or injector
Ethernet without PoE USB provides +5 V power

USB current draw: max 150 mA, the typical idle current is approximately 80 mA.

5. Indicators and Controls

5.1 LED Indicators 💡

5.2 Button Functions🔘

A button on the bottom side of GPIBee provides:

6. Startup Behavior ⚙

After power-on, GPIBee checks for Ethernet connectivity. It waits for a configurable time (default 4 seconds). If no network is detected, it switches to USB mode.

When entering USB mode any of the 3 selected USB interface will enumerate on the PC:

When the device is in USB mode, plugging in the Ethernet cable will make it switch back to Ethernet operation again.

7. How to connect to GPIBee

7.1 Web Interface Access 🌐

IP Address Assignment

Depending on the interface used, GPIBee appears under different default IP addresses:

Discovery (applies to Ethernet and usb network mode)

GPIBee announces itself via:

This allows automatic visibility in environments such as the Windows Network Explorer. However, you can always connect directly using the IP address.

Opening the Web interface

Simply enter the device IP into your browser:

http://192.168.178.3

or, depending on your setup:

http://192.168.2.1
http://<DHCP-assigned-address>

7.2. VXI-11

GPIBee supports VXI‑11 over both USB network mode and Ethernet mode. It implements:

Most VISA implementations will automatically detect GPIBee.

VISA Resource String Format

Use the standard VXI‑11 VISA resource format:

TCPIP0::<IP>::instX::INSTR

Example:

TCPIP0::192.168.3.2::inst0::INSTR

Instance Names and GPIB Address Mapping

The instance name (instX) selects which GPIB device you want to access.

Instance Meaning
inst0 Internal SCPI interface (GPIBee itself)
inst1 GPIB device at primary address 1
inst22 GPIB device at primary address 22

The internal SCPI interface (inst0) allows reading firmware version, configuring settings, and controlling GPIBee (See chapter Interal SCPI interface).

Subaddressing Support

GPIBee supports full IEEE‑488.2 subaddressing.

A subaddressed device is accessed using:

inst<primary>_<secondary>

or:

inst<primary>,<secondary>

Examples:

  • inst1_0 → Primary 1, Secondary 0
  • inst1,0 → Primary 1, Secondary 0
  • inst5_97 → Primary 5, Secondary 1 (because 97 maps to 1)

Supported secondary address ranges:

  • 0 - 30
  • 96 - 126 (mapped to 0 - 30 for compatibility with alternative definitions of subaddress ranges)

Instance Name Flexibility

The prefix inst is conventional but not mandatory.

You may also use items like:

gpib22
gpib1_0
hpib22,1
examplename22

However, some VISA implementations only accept the inst prefix (e.g. R&S Visa), so using instX is recommended for maximum compatibility.

Instead of an underscore _ to seperate primary and secondary address also a comma ,can be used .

Recommended VISA Implementations

For reliable VXI‑11 operation, use a full VISA stack like:

  • R&S VISA (lightweight, robust)
  • NI VISA (widely used, comprehensive)
  • Keysight VISA
  • Others with full VXI‑11 support

Note: During GPIBee development, several issues were identified in pyvisa‑py, especially around lock handling, abort channel support, and SRQ handling. Most basic operations work, but advanced VXI‑11 features may not.

Interactive VISA Tools

Most VISA packages include a diagnostic tool:

  • R&S VISA Tester
  • NI MAX
  • Keysight Connection Expert

These tools:

  • Auto‑discover VXI‑11 devices
  • Allow interactive SCPI communication
  • Are ideal for initial bring‑up and troubleshooting

7.3. USBTMC

GPIBee implements a USBTMC interface similar to UsbGPIB‑V2, providing a 1:1 connection between the PC and a single GPIB device.

Autodetection

USBTMC devices are automatically detected by:

Resource Naming and AutoID

The USBTMC resource name can be configured via:

GPIBee includes an optional AutoID mechanism:

This is extremely helpful when swapping instruments, but should only be used with instruments that support the *IDN? query. Older instruments will still be operation, but startup with an error being set and might create a beep sound.

Multi‑Device Access via USBTMC

USBTMC does not support multiple logical channels. Composite USB devices are not reliably supported by all VISA stacks (e.g., Keysight VISA).

To allow multi‑device access, GPIBee provides an internal SCPI command to switch the active GPIB address. This enables sequential access to multiple devices, but:

Recommendation: Prefer USB Network Mode for Multi‑Device Use

For full multi‑device capability with independent logical channels, use:

This provides:

This is the recommended primary connection method for most users.

8. Firmware Update Procedure 🔧

    1. Enter bootloader mode - see section Button Functions.
    2. GPIBee appears as a USB mass-storage device (similar to a USB Flash drive). Both Orange and Green LED flash continously alternating to indicate that firmware update mode was entered.
    3. Copy the firmware file GPIBee.GFW to the drive.
    4. Wait approximately 10 seconds; the device restarts automatically.

The programmed Firmware version can anytime be checked via:

8.1. Firmware version syntax

The firmware version consists out of 3 parts: V1.2.2604151622

1Major firmware version
2Minor firmware version
2604151622Build version (auto incremented every time the firmware is newly compiled)

9. Internal SCPI Command Reference 📝

The Internal SCPI command is used when accessing GPIB address 0. This is the GPIB controllers address and allows changing settings, reading the ID information and triggering e.g. a reset to factory defaults and rebooting.

In case of USBTMC, a special command has to be executed to talk to this internal SCPI device. While the USBTMC Vendor defined messages are implemented, most VISA implementations don't enable those. The normal device dependent message pipe can be used instead, after executing a control in transfer with:

A PyVisa command equivalent is:

dev.control_in(0xa1, 180, 0, 0, 1);

The vendor mode can be left by either calling SCPI function SYST:COMM:USBTMC:EXITV or by executing a control in transfer with:

PyVisa example:

dev.control_in(0xa1, 180, 1, 0, 1);

All other protocol modes can access this when addressing primary GPIB address 0, without any custom commands required.

9.1 General Characteristics

Most settings modify non-volatile memory. A reboot or power cycle is recommended after changes to make them active.

GPIB address 0 is reserved for the controller and is used to access this internal SCPI interface.

9.2 Identification Commands

*IDN?

Returns the manufacturer name, instrument name, serial number, and firmware version separated by commas.

*IDN?
XYPHROLABS,GPIBee,LJN9K,V1.2.2604151253

9.3 System Commands

SYSTem:REBoot

Reboots GPIBee (similar to a power-cycle). Rebooting is very quick, but due to network identification or as function of delaytime settings it can take several seconds to be responsive again.
You will need to terminate the connection and set up a new connection to be able to talk to GPIBee again.

Example call: SYST:REB

SYSTem:PRESet

Resets all non-volatile settings to factory defaults (same as pressing the button 5 times quickly).
A reboot or power cycle afterwards is strongly recommended to activate the settings.

Example call: SYST:PRES

9.4 Ethernet Configuration Commands

SYSTem:COMMunicate:LAN:IPADdress

Sets the Ethernet interface IP address. Only private network IP addresses are allowed. Invalid addresses are rejected (e.g. network address or broadcast address).

A private address if from any of those ranges:

Example call: SYST:COMM:LAN:IPAD "192.168.1.150"

SYSTem:COMMunicate:LAN:IPADdress?

Returns the currently set IP address.

Example reply: "192.168.1.2"

SYSTem:COMMunicate:LAN:SUBNet

Sets the subnet mask. The smallest allowed mask is /29 (255.255.255.248). Invalid masks are rejected.

Example call: SYST:COMM:LAN:SUBNET "255.255.255.0"

SYSTem:COMMunicate:LAN:SUBNet?

Returns the currently set subnet mask.

Example reply: "255.255.255.0"

SYSTem:COMMunicate:LAN:DHCP

Enables or disables the DHCP client. Accepts ON/OFF or 1/0.

Example call: SYST:COMM:LAN:DHCP OFF

SYSTem:COMMunicate:LAN:DHCP?

Returns ON or OFF.

Example replt : ON (The DHCP client is active)

SYSTem:COMMunicate:LAN:DHCP:TIMEout

Sets the DHCP timeout (1–15 seconds). After timeout, static IP settings are used.

Example call: SYST:COMM:LAN:DHCP:TIME 5 (selects 5 seconds fallback time to the set static IP)

SYSTem:COMMunicate:LAN:DHCP:TIMEout?

Returns the timeout value.

Example reply: 4 (4 seconds fallback time is selected)

SYSTem:COMMunicate:LAN:MDNS

Enables or disables mDNS. Affects both Ethernet and USB Network mode.

Example call: SYST:COMM:LAN:MDNS OFF (Turns MDNS off)

SYSTem:COMMunicate:LAN:MDNS?

Returns ON or OFF.

Example reply: ON (MDNS is turned on)

SYSTem:COMMunicate:LAN:SSDP

Enables or disables SSDP discovery. Affects both Ethernet and USB Network mode.

Example call: SYST:COMM:LAN:SSDP OFF

SYSTem:COMMunicate:LAN:SSDP?

Returns ON or OFF.

Example reply: ON (SSDP is on)

SYSTem:COMMunicate:LAN:HOSTname

Sets the hostname. Supports {UID} substitution. Automatically sanitized.

Example call: SYST:COMM:LAN:HOST GPIBee-{UID}

SYSTem:COMMunicate:LAN:HOSTname?

Returns the hostname template.

Example reply: "GPIBee-{UID}"

SYSTem:COMMunicate:LAN:PPprot

Enables or disables the ++ protocol on TCP port 1234.

Example call: SYST:COMM:LAN:PP ON

SYSTem:COMMunicate:LAN:PPprot?

Returns ON or OFF.

Example reply: ON (++ protocol server on TCP/IP port 1234 is enabled)

9.5 USB Configuration Commands

SYSTem:COMMunicate:USB:PROTocol

Selects the USB protocol mode: USBTMC, NET, or UART.

Example calls:

SYST:COMM:USB:PROT NET select USB network mode
SYST:COMM:USB:PROT USBTMC select USBTMC mode
SYST:COMM:USB:PROT UART select UART ++ protocol mode

SYSTem:COMMunicate:USB:PROTocol?

Returns the selected mode.

Example reply: NET (USB Network mode is selected)

SYSTem:COMMunicate:USB:FALLback

Sets the fallback timeout before switching from Ethernet to USB.

Example call: SYST:COMM:USB:FALL 5 (selects 5 seconds USB fallback time)

SYSTem:COMMunicate:USB:FALLback?

Returns the fallback timeout.

Example reply: 4 (4 seconds USBfallbacktime is active)

SYSTem:COMMunicate:USB:FORCEfullspeed

Forces USB Full-Speed mode (12 Mbps).

Example-call: SYST:COMM:USB:FORCE OFF (No forcing to 12MBps active)

SYSTem:COMMunicate:USB:FORCEfullspeed?

Returns ON or OFF.

Example reply: OFF (Full speed forcing is inactive)

SYSTem:COMMunicate:USBNET:IPADdress

Set the IP address for USB network mode. The USB network mode subnet mask is fixed to /31 subnet, i.e. 255.255.255.248.

The IP address is automatically corrected, such that no network address (.0, .8, ...) or broadcast address (.7, .15, ...) is specified and that a private network address is used.
A private network address is from any of those ranges:

Example call: SYST:COMM:USBNET:IPAD "192.168.5.2"

SYSTem:COMMunicate:USBNET:IPADdress?

Returns the currently set IP address for USB network mode.

Example reply: "192.168.3.2"

SYSTem:COMMunicate:USBTMC:NAME

Sets the USBTMC serial number template. The USBTMC serial number is used by VISA implementations in parts of the VISA ressource string.

GPIBee will substitute automatically the following items:

The provided text will be automatically sanitized to result in a legal serial number string.

All substitution keys can accept a specification of the maximum length. {IDN} would for example typically get substituted with the full instruments *IDN? reply. If you write {:5IDN}, a maximum 5 characters will be substituted. Any number from 0 to 126 is valid for this length limitation.
This feature can be used with all substitution keys.

Note: GPIBee will only issue a *IDN? query during usbtmc startup whenever any of the substitution keys {IDN}, {IDN0}, {IDN1}, {IDN2}, {IDN3} is present. When none of the keys is present, no query will be made.

It is highly recommended to encapsulate the parameter in double quotes.

Example call: SYST:COMM:USBTMC:NAME "GPIBee-{ADDR}-{UID}"

SYSTem:COMMunicate:USBTMC:NAME?

Returns the USBTMC serial number template.

Example call: GPIBee-{ADDR}-{UID}

SYSTem:COMMunicate:USBTMC:DELAY

Sets the USBTMC startup delay in seconds.

Example call: SYST:COMM:USBTMC:DELAY 2

SYSTem:COMMunicate:USBTMC:DELAY?

Returns the USBTMC startup delay.

Example reply: 4 (A delay of 4 seconds is active)

SYSTem:COMMunicate:USBTMC:EXITVendormode

Exits USBTMC vendor mode and returns to normal GPIB device communication.

Example call:SYST:COMM:USBTMC:EXITV

SYSTem:COMMunicate:USBTMC:ADDRess

Selects the current GPIB target address (primary or primary+secondary). Pass one or 2 number. The first number is the primary address, the optional second is the secondary address.

Example to select primary address 5:
SYST:COMM:USBTMC:ADDR 5
Example to select primary address 1, secondary address 0 (=96):
SYST:COMM:USBTMC:ADDR 1,0

SYSTem:COMMunicate:USBTMC:ADDRess?

Returns the selected GPIB address.

Example reply: 5 (primary address 5 is active)
Example reply: 1,0 (primary address 5, secondary address 0 (=96) is active) 

SYSTem:COMMunicate:USBTMC:AUTOidRETry

Defines how often a *IDN? query should be tried in case AUTOid feature is active. Defaults to 0.
After every try GPIBee waits 1 second to ensure the instrument is responsive. So when setting this parameter to e.g. 5, the whole procedure can take up to 5 seconds in case the instrument is not immediately responsive after power-up.

The maximum allowed value is 0, the minimum (and default) value is 0.

Example to define 5 retries.

SYST:COMM:USBTMC:AUTORET 5

SYSTem:COMMunicate:USBTMC:AUTOidRETry?

Reads back the currently set AUTOid retry count setting

Example reply: 5 (max 5 retries are defined)

SYSTem:COMMunicate:USBTMC:SCANSTARTaddr

During startup in USBTMC mode, GPIBee scans for available GPIB devices on the bus. This setting defines what is the first primary device address which is checked for presence. The default value is 1. Valid numbers are 1 to 30.
No matter which setting is selected, the full GPIB primary and secondary address range will be checked - this just defines what the first checked address is.

With 1 as setting (default), the primary addresses are checked in this order: 1,2,3, ... 29,30 (followed by a scan for secondary addresses)
With e.g. 5 as setting, the primary addresses are checked in this order: 5,6,7,...29,30,1,2,3,4 (followed by a scan for secondary addresses)

Example to start scanning with GPIB address 5:
SYST:COMM:USBTMC:SCANSTARTaddr 5

SYSTem:COMMunicate:USBTMC:SCANSTARTaddr?

Reads back the currently set start address for scanning.

Example reply: 5 (Starts scanning with primary address 5)

9.6 VXI-11 Configuration Commands

SYSTem:COMMunicate:VXI11:PRESENCEcheck

Selects if GPIBee should check during VXI--11 link creation for presence of the requested GPIB device.
If disabled, GPIBee will not check during link creation (=connection) if the requested GPIB device is present. This will result in faster connections if a connection is created during situations where a lot of GPIB traffic is ongoing from other VXI-11 connections.

Example calls:

SYST:COMM:VXI11:PRESENCE ON to turn the presence check on
SYST:COMM:VXI11:PRESENCE OFF to turn the presence check off

SYSTem:COMMunicate:VXI11:PRESENCEcheck?

Returns if the presence check during link creation is turned on or off.

Example reply: ON (GPIB presence check is enabled)

SYSTem:COMMunicate:VXI11:MINimumIOTimeOut

Some existing VISA libraries (e.g. PyVisa-py VXI-11) or Software might set too low IO timeout limits. This setting gives the ability to set a minimum IO timeout, which is applied if the IO timeout of VXI-11 functions is lower than this value.
The parameter sets the minimum IO timeout in units of milliseconds.
It is not recommended to set this number too high, because VISA implementations apply also timeouts on the socket communication with a small margin - even though this would only be noticed when a timeout actually occurs.

Example calls:

SYST:COMM:VXI11:MINIOTO 10 Sets the minimum IO timeout limit to 10ms.

SYSTem:COMMunicate:VXI11:MINimumIOTimeOut?

Returns The currently set minimum timeout in units of milliseconds.

Example reply: 10 (A minimum timeout of 10 ms is active)

SYSTem:COMMunicate:VXI11:MAXimumIOTimeOut

The VXI-11 specification reserves a generous amount of 32 bit IO timeout value in units of milliseconds. This means theoretically an IO timeout could be set to even > 71000 minutes.
To limit the risk of setting accidentally too high IO timeouts this setting will limit any IO timeout setting to the one specified here.

Example calls:

SYST:COMM:VXI11:MAXIOTO 60000 Sets the maximum IO timeout limit to 60000ms = 60s.

SYSTem:COMMunicate:VXI11:MAXimumIOTimeOut?

Returns The currently set maximum IO timeout in units of milliseconds.

Example reply: 60000 (A maximum IO timeout of 10 ms is active)

9.7 GPIB commands

SYSTem:COMMunicate:GPIB:PRESENT?

Checks whether a GPIB device is present at a given address.

Example calls:
SYST:COMM:GPIB:PRESENT? 5 (checks if a primary address 5 device is present)
SYST:COMM:GPIB:PRESENT? 5,3 (checks if a primary address 5, secondary address 3 (=99) device is present)

Example-reply: 1 Device is present
Example-reply: 0 Device is not present

SYSTem:COMMunicate:GPIB:SCAN?

Scan for all available GPIB devices. It can scan for primary address only, but also for devices exposing secondary addresses.

Optional parameter: scan_secondary: Provide either 1 or ON to scan also for secondary addresses, provide 0 or OFF to scan for primary addresses only.

A comma separated list will be returned with the GPIB addresses. Secondary address are shown in format "1:0" with the first number being the primary address and the second being the secondary address.

The scan duration of a full primary+secondary scan is about 2.5 seconds. Ensure that you set the timeout accordingly as the reply is only sent after scan finalization.
The scan duration of a primary address only scan is about only 120ms.

Example calls:
SYST:COMM:GPIB:SCAN? Scans for primary GPIB addresses only.
SYST:COMM:GPIB:SCAN? 0 Scans for primary GPIB addresses only.
SYST:COMM:GPIB:SCAN? 1 Scans for primary + secondary GPIB addresses - This scans the full set of possible GPIB addresses.

Example-reply: 4,22,28GPIB devices with primary addresses 4, 22 and 28 are connected.
Example-reply: "1:0","1:1",22 GPIB devices with 1:0,  1:1 and primary only addresses 22 are connected.

SYSTem:COMMunicate:GPIB:T1TIME

Set the T1 talker delay in units of nanoseconds. T1 delay is the time between Applying a data word on DIO1..8 lines to signalling with DAV taken low that the data is available and is majorly defined by the settling time of your GPIB infrastructure.

The supported numeric range is 350ns to 2000ns. Numbers outside of that range will be saturated to those limits.

Tuning the T1 delay helps in cases where the instruments are very old or the cable infrastructure is big, but increasing the delay decreases the maximum data rate.

The setting is stored in non volatile configuration memory, but also applied immediately after it is set, without a need to reboot.

Example calls:

SYST:COMM:GPIB:T1TIME 350 Sets the T1 time to 350ns (quickest possible setting).
SYST:COMM:GPIB:T1TIME 1100 Sets the T1 time to 1100ns.

SYSTem:COMMunicate:GPIB:T1TIME?

Readout the current T1 time setting. The returned number is the T1 time in units of nanoseconds.

Example call: SYST:COMM:GPIB:T1TIME?

Example reply: 500 The current active T1 time is 500ns.

10. ++ Protocol reference 📝

The ++ protocol is a simple, text-based control protocol that allows access to multiple GPIB instruments through a single interface.

GPIBee exposes the ++ protocol in two ways:

You can connect using any terminal program, either to the virtual COM port or to the TCP/IP port.
Any commands sent to GPIBee must be terminated with CR, LF, or CRLF.

You can send commands to the GPIB controller. All commands start with ++ ASCII characters.
Any data starting without ++ will be transmitted to the selected GPIB device address.

Any data transmitted to the GPIB device have to be escaped, i.e.:

This escaping is to ensure that GPIB controller commands can be differentiated from GPIB data to write to the instrument.

Data read from the GPIB device will not be escaped, thus it is transmitted fully transparent back without modification.

Below is a short example session showing how to communicate with a GPIB instrument using the ++ protocol.
This works the same whether you connect via a terminal to the USB UART COM port or to TCP port 1234 over Ethernet or USB Network mode.
++addr 5
++auto 1
++read

Explanation:

++addr 5
Selects the GPIB device at primary address 5.

++auto 1
Enables automatic read-after-write, so the instrument’s response is returned immediately after each command.

++read
Manually triggers a GPIB read (useful when auto-read is off).

For reading it is recommended to read using eoi parameter if the instrument is asserting EOI or to read with termination parameter ASCII code (e.g. 10 or 13) to ensure a quick response without timeout delays.

10.1 GPIB controller command list

++addr

Set or query target GPIB address used for consecutive GPIB transfers
Parameters: [<primary> [<secondary>]].
Ranges:
(default: primary=1, no secondary).

primary=0 is a special internal SCPI interface (see previous chapter for command details).

++auto

Turn on automatic read after write or query auto state. 

Parameters: [<automode>]. 1 for autoread with eoi, 0 for disabled (default).

++clr

Assert interface clear line (IFC) for a short time.

Parameters: None

++eoi

Enable or disable EOI generation on writes or query state.

Parameters: [<eoi_enabled>]. 1 for enabled (default), 0 for disabled.

++eos

Select appending of termination characters on writes or query state.

Parameters: [<eos_mode>]

++eot_enable

Enable addition of an ASCII character when reads terminated with EOI - or query enabling state.

Parameters [<eot_enable>]

++eot_char

Set the ASCII character used for eot function (see eot_enable) or query current character.

Parameters: [<char decimal value>]. Allowed range: 0..255

++ifc

Execute a selective device clear (SDC) to the current selected target GPIB address.

Parameters: None

++loc

Execute a goto local (GTL) to the current selected target GPIB address.

Parameters: None.

This enables frontpanel control again as the instrument goes back to local mode (same effect as pressing the Local button on the instrument).

++mode

Select device mode (controller or device) or query mode.

Parameters: [<mode>]

++read

Read from the current GPIB device.

Parameters: [termination]

See read_tmo_ms for timeout handling.

++read_tmo_ms

Set or query the timeout in units of ms for GPIB reads.
The timeout relates not to the overall transfer duration, but to the time between consecutive data bytes received.

Parameters: [timeout_ms]. Valid range: 1..3000. Default: 500

++savecfg

Select or query if the configuration is automatically saved on changes.

Parameters: [<save_enabled>]. 1=enabled, 0=disabled (default).

++spoll

Execute a serial poll to either the current device or a selected one.

Parameters: [<primary> [<secondary>]]

If no parameter is specified the current device will be polled.

++srq

Read srq line state.

++trg

Create a trigger to the current device or a group of devices.

Parameters: [address1 [address2, ...]].

Up to 15 GPIB addresses can be specified. If none is given only the current device will be triggered.

++ver

Read the firmware version.

++rst

Reset the device. This leads to a reboot.

The connection has to be build up again afterwards.

++help

Return help information about all commands.


11. Open source acknowledgements

GPIBee builds on a small number of excellent open-source software components.
Their contributions are gratefully acknowledged:

Software
Description and usage
scpi-parser A lightweight SCPI command parsing library made by Jan Breuer. GPIBee uses it to interpret all internal SCPI commands.

scpi-parser license information:
BSD 2-Clause License

Copyright (c) 2012-2018, Jan Breuer
All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:

* Redistributions of source code must retain the above copyright notice, this
  list of conditions and the following disclaimer.

* Redistributions in binary form must reproduce the above copyright notice,
  this list of conditions and the following disclaimer in the documentation
  and/or other materials provided with the distribution.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
mongoose A robust and easy-to-integrate networking stack that provides all network functionality, including the embedded web interface.

License information:
Mongoose is used under an official commercial license from Cesanta.

All other SW modules - including the complete GPIB implementation, the USB stack and class drivers, and the VXI-11 server - are fully custom developments created from scratch for GPIBee.

12. Release information

The Information Column shows fixes and feature additions in order of implementation.

Version
Information
V1.3
  • Improved GPIB write timing by asserting data lines a bit earlier in time.
    Note: Capacitive load effects are taken into account by a closed loop linestate method.
  • Fixed an VXI-11 issue: When creating a new link during an active GPIB transfer, GPIBee crashed (i.e. it got unresponsive. It did not really crash, but it was a defined debug loop called in incorrect sequence).
  • Added a new SCPI command and webinterface parameter to enable or disable GPIB presence check during link creation (default: on). In V1.2 the presence check was always enabled. When the feature is enabled, it will only create a link when the GPIB device is also present in the system.
  • Fixed: SSDP payload contained a generic info instead of device/OS information. Adjusted it to transmit now GPIBee/1.3 (for this version, next versions of course contain their actual firmware version number).
  • USB network NCM mode: Added setting of the USB serial number to include the actual GPIBee device serial number instead of a generic 012345 text.
  • Fixed: Any TCPIP data sent from GPIBee (http, VXI-11 replies, etc...) contained bogus 14 data bytes after the TCPIP payload.
  • Fixed: Timeout handling on VXI-11 writes and read targeting GPIB addresses was wrong and wrapping occured.

  • New feature: Added webserver /lxi/identification XML file delivery with a dynamically created XML file. Due to that devices can be discovered e.g. by lxi-tools.
  • Skipping GPIB presence check in VXI-11 link creation when it was called with lock timeout deactivated.
  • Feature: Implemented V4 program version GETADDR pormapper call & reply format.
  • Fixed: When lock timeout was 0 or no device locking requested, IO activity and link creation always returned a "locked by another link" error.
  • New feature: Implemented IO timeout limits. This allows to set a minimum and maximum limit for IO timeouts to avoid accidental long waiting times or help with wrong VISA implementations. The settings are exposed via webinterface (Settings -> VXI-11 section) or internal SCPI (e.g. SYSTem:COMMunicate:VXI11:MINimumIOTimeOut) functions.
  • Fixed: Renamed instances of the text VXI11 to VXI-11 in this document and web-interface.

  • Changed: Entering and leaving the vendor mode using the normal device dependent message path is now realized with newly defined custom control in transaction. Please see updated documentation. This replaces pulse indicator request. The main reason is, that NI VISA issues Pulse indicator requests during the connecting sequence with any USBTMC device.
  • Fixed: Sometimes when plugging in the Ethernet cable when USB network mode was active, it did not switch back to Ethernet mode.

  • Fixed: internal SCPI function SYSTem:COMMunicate:GPIB:PRESENT? returned always "INVALID ADDRESS" when only a primary address was provided as parameter.
  • Extended this documents TOC a bit with internal SCPI command groups

  • New feature: Added a function to scan for available GPIB addresses (SYSTem:COMMunicate:GPIB:SCAN?)
  • Added a check if device_write data length is higher as the reported maxRecvSize during create_link and returning a parameter error in this case. This error condition will never occur during normal use, but can happen when custom VXI11 clients are developed or malfunctioning.

  • Fix: NI Max Auto detection procedure of legacy non 488.2 devices resulted in an infinite scan time.
  • Fix: Exclusive lock (VXI-11 functions DEVICE_LOCK and DEVICE_UNLOCK) were not working correctly.
  • Fix: Create_link did not handle lock_device flag correctly.
  • Fix: The waitforlock bit in the flags field of VXI-11 function calls was never checked -> Also when it was 0 a waitforlock was active.
  • Fix: On Windows 10 GPIBee did not enumerate properly in network mode. Reason was, that Windows 10 requires a BOS descriptor for proper detection of USB CDC NCM devices.
  • Documentation: Added description on how to connect to GPIBee (Chapter 7) and VXI-11 instance name conventions
  • Feature: Template strings for ethernet hostname, but more important USBTMC serial number (=visa resource name) now accept a max. length setting. E.g. write {:5IDN} to insert only up to 5 characters of the {IDN} autoid response. This is an optional feature. Writing just {IDN} to get the full response is still possible. This feature applies to all possible template keys.
  • Feature: Introduced {IDN0}, {IDN1}, {IDN2}, {IDN3} usbtmc serial number templatesfor USBTMC identifies which return respective parts of the instruments *IDN? response (Manufacturer name, Instrument name, Serial number, Version).
  • Extension: The usbtmc serial number template also accepts underscores now.
  • Extension: Increased the maximum length of the usbtmc serial number to 126 characters, which is the maximum length possible according to USB specification.
  • Removed AutoID enable setting. AutoID get's now enabled automatically when an {IDNx} string is specified in the usbtmc serial number template. There is no need to have a redundant additional enable/disable setting.

  • New feature - fast temporary entering of USB network mode: When pressing the button once, GPIBee will enter USB network mode. This is useful to get quick and easy access to the internal webserver for changing settings. After changing the settings you can press the button again and you are back to the previous operation mode (USBTMC, USB UART mode or ethernet).

  • Fix: Lock errors were reported: When transactions were done on non locked link when WAIT_LOCK flag was 0 and Lock time was 0 an unexpected lock error was reported instead of iotimeout considered.
  • Fix: VXI-11 DEVICE_READ did not report a lock error when it was locked exclusively by another link.
  • Fix: The wrong flags field bit was interpreted for WAIT_LOCK.

  • Fix: In USBTMC mode, the device did not react on button presses while waiting for a GPIB device to be connected.
  • Extension: Extended USBTMC serial number length template to 126 characters.
    NOTE:This change will lead to the effect, that all non volatile settings will be reset to default after firmware programming.
  • Extension: USBTMC - Added the ability to define the first address for startup device scan (see SYSTem:COMMunicate:USBTMC:SCANSTARTaddr)
  • Extension: USBTMC - Added the ability to retry autoid *IDN? query (see SYSTem:COMMunicate:USBTMC:AUTOidRETry)
  • Improved range checking on all GPIBee settings over Webinterface and SCPI commands.
  • Improved GPIB write timing
  • Implemented T1 time setting to create compatibility to big GPIB infrastructures with long cable or old instruments. Exposed it in web interface settings and internal SCPI interface (SYSTem:COMMunicate:GPIB:T1TIME).
  • Fix: VXI-11 and webinterface function DEVICE_REMOTE had deasserted REN globally instead of executing local lockout.
  • Feature: When in USBTMC mode, GPIBee automatically disconnects now when no GPIB device is connected to it or all connected GPIB devices are turned off.
V1.2
  • Integrated a manual into the integrated webinterface for consistency of documentation vs. implementation.
  • Integrated USB CDC NCM network interface over USB with the main intention to enable VXI-11 usage over a direct USB connection
  • Added USB and network ++ protocol mode
  • Resorted Settings page items for easier association of setting to the corresponding USB mode
  • Adjusted internal SCPI commands slightly to reflect their usage in a better way
Indicative read data transfer speed of this version:
Conditions: CMU200 file read using MMEM:DATA? with a 1m long GPIB cable, reading a 1.3 MBytes big file.
Ethernet was measured on a real congested network, not a direct connection
Interface and mode
Read transfer rate
USBTMC mode (480Mbps USB High speed) 517 KBytes/s
USBTMC mode (12Mbps USB Full speed) 362 KBytes/s
USB network mode (VXI-11) 345 KBytes/s
Ethernet VXI-11 330 KBytes/s
Future version will increase the speed in VXI-11 modes (means to do so are known) - for now the focus is functional correct operation.
V1.1
  • Exchanged the previously used LWIP software stack with Mongoose stack.
  • Added GPIB address setting to USBTMC operation mode via internal SCPI commands to enable multi device support for USBTMC.
V1.0
  • First version released for betatesting

13. Contact information

No software is entirely free of defects, and GPIBee is surely no exception. If you encounter crashes, unexpected behavior, or anything that simply feels off, we genuinely appreciate hearing about it.
Your feedback is highly valued and helps to improve the product and address issues that might otherwise go unnoticed.

You are welcome to send any reports, suggestions, or questions directly to Xyphro@gmail.com