Skip to the content
2 layers78.1 × 71.4 mmG2U, the printed circuit board in 3D

GPIB to USB adapter for the Solatron meter.

Size
78.1 × 71.4 mm
Copper layers
2
Thickness
1.6 mm
Parts
38
Nets
45
Pads
124
Tracks, vias
239, 0
Pours
1
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
9 Mar 2026
Updated
7 May 2026

Overview

G2U is an open-source printed circuit board by Acramonics, from the Acramonics/SolatronG2U repository on GitHub, published under the CC0-1.0 licence. It is a 2-layer board of 78.1 × 71.4 mm with 38 parts on 45 nets, routed with 239 tracks and 0 vias.

Its parts include 32 resistors and 1 connector. It belongs with the interfaces and adapters boards and the AVR (ATmega, ATtiny) boards of this library.

README

README.md

G2U

Andrew Martin, acramonics, 2026

G2U is a PCB for a GPIB to USB adapter using an Arduino Nano 3.

GPIB is a vendor-neutral interface for controlling equipment and logging data. While rather outdated, and largely replaced by USB and Ethernet, some equipment still uses it and there are many second hand devices (such as multimeters) that use it including the well-regarded Solartron 7150+.

A video on GPIB (also known as IEEE-488) is on YouTube and details are on Wikipedia.

Hardware

The original circuit and software was by Rudolf Reuter and modified by @TheHWCave. Rudolf's blog, where this was described, doesn't seem to be available any more (as of March 2026), but @TheHWCave provides a detailed description of the circuit on YouTube (see the screenshots in the SourceImages directory). He builds it on stripboard and uses an Arduino breakout board, so I decided to create a PCB instead. He was unable to obtain a PCB-mounted Centronics-style (Series 57) 24-pin connector. These are now easily available from AliExpress (at about £2.50 with free postage if you spend more than £8.00), and I have used a PCB-mounted male connector that can plug straight into the back of the hardware, so you don't need to worry about cables.

There is another page with a discussion of creating a GPIB/USB interface, but note that this uses different pin assignments and different software.

Software

@TheHWCave provides the code for the Arduino Nano 3 and a logger script on GitHub.

He provides an update video which explains how to address a problem with the Arduino losing its software when the USB us disconnected, but the GPIB connection is still present. The GPIB seems to provide some partial power to the Arduino and he provides instructions on setting a brown-out fuse in software.

I provide a summary of all the necessary information on this page.

The PCB

As is often the case with my PCBs, you will require my ACRM_KiCad_Libs to provide the footprint for the 24-pin male Centronics-style connector. You will need a version from March 2026 or later.

Bill of Materials

  • Arduino ATmega Nano 3.x with USB (ideally USB-C) [1 off]
  • 6K2 0.25W resistors (R1-R16) [16 off]
  • 120R 0.25W resistors (R17-R32) [16 off]
  • Centronics-style 24P 'Series 57' male connector [1 off]

The PCB is 78.05mm x 71.40mm so you will need a plastic case to accomodate this. The Centronics-style connector projects from the board so will need a suitable cutout. The USB connector is set back on the board, so it's not easy to plug a cable in and out once the board is in the case, but, since the GPIB sockets are usually at the back of equipment, the expectation is that the board and the cable will be left plugged in.

Ardunio to GPIB connections

This table is expanded from a table shown in @TheHWCave's video (see the screenshot in the SourceImages directory) and shows which connections from the Arduino go to which pins on the GPIB. The Arduino pins are shown with the pin number (from 1-30) and the position on the left (L) or right (R) column of pins - both counting from the top.

Arduino LineArduino PinGPIB PinFunctionATmega328P
A019/R12---1DIO1(PC0/ADC0)
A120/R11---2DIO2(CP1/ADC1)
A221/R10---3DIO3(PC2/ADC2)
A322/R9---4DIO4(PC3/ADC3)
A423/R8---13DIO5(PC4/ADC4)
A524/R7---14DIO6(PC5/ADC5)
D1013/L13---15DIO7(PB2)
D1114/L14---16DIO8(PB3(MOSI))
D811/L11---5EIO(PB0)
D710/L10---6DAV(PD7)
D69/L9---7NRFD(PD6)
D58/L8---8NDAC(PD5)
D47/L7---9IFC(PD4)
D36/L6---10SRQ(PD3)
D25/L5---11ATN(PD2)
D912/L12---17REN(PB1)
GND4/L4---12,18-24GND
GND29/R2---12,18-24GND
+5V27/R4+5V
D1/TX11/L1NC
RX02/L2NC
RESET3/L3NC
D1215/L15NC
VIN30/R1NC
RESET228/R3NC
A726/R5NC
A625/R6NC
AREF18/R13NC
+3V317/R14NC
D1316/R15NC

Note that each GND pin in the GPIB connector is paired with one of the data lines in a twisted pair. Pin 12 is connected to the cable shield. See GPIB on WikiPedia. In this application, this is rather irrelevant as everything is connected to a common ground.

The Brown-Out Fuse

As described above, @TheHWCave provides an update video which explains how to set the 'brown-out fuse' on the Arduino to prevent it losing its software.

The 'extended fuse byte' has three bits that set the Brown-Out Detector voltage level ('BODLEVEL'). When the voltage falls below this, the chip is disabled.

Extended Fuse ByteBit NoDefault Value
-71
-61
-51
-41
-31
BODLEVEL221 (unset)
BODLEVEL111 (unset)
BODLEVEL001 (unset)

The values for the BODLEVEL bits are as follows:

BODLEVEL 2:0 FusesHex (*)Min VTyp VMax VUnits
1110x07OffOffOff
1100x061.71.82.0V
1010x052.52.72.9V
1000x044.14.34.5V
0110x03ReservedReservedReserved
0100x02ReservedReservedReserved
0010x01ReservedReservedReserved
0000x00ReservedReservedReserved

(*) Since bits 3 to 7 are not used, these can all be set to zero and the Hex values reflect that.

By default the fuse is set to #FF, the BODLEVEL bits are therefore set to binary 111 which means the brown-out fuse is switched off.

@TheHWCave selects a BODLEVEL of 4.1V (minimal) so sets the fuse to binary 100 (#04) for 4.1V cutoff.

Instructions on how to do this are provided below.

Software Installation

You will need:

  • A USB cable to connect your computer to your Arduino Nano
  • An ICSP programmer with a 6-pin header adapter to connect to the Nano. There are instructions online to use another Arduino for this purpose or you can buy a standalone programmer such as the USBASP programmers available from Amazon (amongst other places).

You will need the software available from https://github.com/TheHWcave/GPIB-to-USB

Using this is explained in the video at https://www.youtube.com/watch?v=RaLirRvSngk

Step 1: The Arduino IDE

Install the Arduino IDE as described on the Arduino Web Site

Step 2: Configure the IDE for the Arduino Nano ATmega chip you are using [OPTIONAL]

Different Arduinos use different chips which have different signature bytes and this needs to match the programmer:

ChipByte 0x000Byte 0x001Byte 0x002
ATmega3280x1E0x950x14
ATmega328P0x1E0x950x0F
ATmega328PB0x1E0x950x16

If the configuration doesn't match your chip then, for example, the Arduino IDE may call AVRDude (used to set the fuse) expecting to find an ATmega328P, but AVRDude finds an ATmega328PB and stops.

The configuration can be set in a configuration file or by manually re-running the failed command, but correcting for the appropriate chip. (See instructions below.)

If using Linux, the easest thing to do is create configuration file: ~/.avrduderc containing:

text
part parent "m328"
    id                  = "m328p";
    desc                = "ATmega328P";
    signature           = 0x1e 0x95 0x14;
    ocdrev              = 1;
;

setting the id, desc and signature as required depending on what ATmega chip you have with signature bytes set as per the table above.

Alternatively you can allow AVRDude from the IDE to fail and then run the fixed command manually as described below.

Step 3: Setting the Brown-Out Fuse

I will write a more detailed version when I have verified this on a couple of Arduino Nano boards. This is largely in note form!

As described above, you will need a second Arduino, or an ICSP programmer spported by the Arduino IDE, to set the fuse. The IDE runs the AVRDude software to perform the programming of the Brown-Out Fuse.

To set the fuse from the Arduino IDE, proceed as follows --- to be written

See:

Set the IDE to run in verbose mode so you can see what it is doing as described here

If you have configured the IDE properly, then it should work with no errors. If you haven't then the AVRDude software will fail since the chip's signature doesn't match what the software expected. The workaround for this is described in @TheHWCave's video at https://www.youtube.com/watch?v=DAS1KVU_FaA and summarized below.

If AVRDude fails, simply copy the failed command from the upload window and run it from the command line instead, correcting the errornous chip type. For example, assuming the Arduino IDE is configured for an ATmega328P and your Nano has an ATmega328PM and assuming that the IDE is installed in a directory pointed to by the environment variable $ARDUINO (e.g. $HOME/arduino-1.8.9), you might see the failed command to be:

text
$ARDUINO/hardware/tools/avr/bin/avrdude \
   -C$ARDUINO/hardware/tools/avr/etc/avrdude.conf \
   -v -patmega328p \
   -cusbasp -Pusb -e -Ulock:w:0x3F:m -Uefuse:w:0xF4:m \
   -Uhfuse:w:0xDA:m -Ulfuse:w:0xFF:m

and you would modify this to

text
$ARDUINO/hardware/tools/avr/bin/avrdude \
   -C$ARDUINO/hardware/tools/avr/etc/avrdude.conf \
   -v -patmega328pb \
   -cusbasp -Pusb -e -Ulock:w:0x3F:m -Uefuse:w:0xF4:m \
   -Uhfuse:w:0xDA:m -Ulfuse:w:0xFF:m

(note the change in the 3rd line) and run it from the command line

Step 4: Restoring the bootloader

Setting the fuse erases the memory, so you then need to restore the bootloader.

Instructions on doing this from the IDE are described here

Alternatively, you can do it from the command line using AVRDude:

text
~/arduino-1.8.9/hardware/tools/avr/bin/avrdude \
   -C~/arduino-1.8.9/hardware/tools/avr/etc/avrdude.conf \
   -v -patmega328pb \
   -cusbasp -Pusb -Uflash:w:./optiboot_atmega328.hex

This also allows the latest bootloader to be downloaded and installed. See

(The latest, as of March 2026, is https://github.com/Optiboot/optiboot/releases/download/v8.0/package_optiboot_optiboot-additional_index.json)

Step 5: Installing the Arduino software

You can then remove the in-circuit programmer and upload the GPIB-to-USB software sketch in the normal way from the Arduino IDE through the USB cable and with the newly installed boot loader.

To be written.

Future plans

In future, I may do an SMD version to minimize the size and weight!

Parts

38
QtyValueFootprintReferences
16120RResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR17, R18, R19, R20, R21, R22, R23, R24, R25, R26, R27, R28, R29, R30, R31, R32
166K2Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15, R16
1Arduino_Nano_v3.xModule:Arduino_NanoA1
1Conn_02x12_Counter_Clockwise_ShieldedACRM:Connector_CentronicsMale-2x12_P2.16mm_P4.29_HorizontalJ1

The 34 most common of 38 parts.

Similar boards

  • 2 layers85 × 115 mmOSO BOOK C1, the printed circuit board in 3D

    OSO BOOK C1

    joeycastillo/The-Open-Book

    For details on how to build, test and use Open Book, I've made documentation available here.

    38 parts8.1kCC-BY-SA-4.0
  • 2 layers38.1 × 12.7 mmVrs io 1, the printed circuit board in 3D

    Vrs io 1

    rusefi/rusefi

    rusefi - GPL internal combustion engine control unit

    38 parts1.2k
  • 2 layers136 × 84 mmMacropad, the printed circuit board in 3D

    Macropad

    hackclub/OnBoard

    💡 Join 1,000 teenagers and make your first PCB with a $100 grant!

    38 parts915
  • 2 layers126.4 × 15.2 mmV5ProbeTop, the printed circuit board in 3D

    V5ProbeTop

    Architeuthis-Flux/JumperlessV5

    The next generation jumperless breadboard

    38 parts332
  • 2 layers66 × 25.4 mmArdmover Empfangsspule Yann, the printed circuit board in 3D

    Ardmover Empfangsspule Yann

    Ardumower/ardumower

    Develop an open source robotic lawn mower (HW+SW reference platform)

    38 parts282
  • 2 layers17.8 × 17.8 mmAltmode friend, the printed circuit board in 3D

    Altmode friend

    CRImier/MyKiCad

    My KiCad boards. Can't be bothered uploading individually anymore, so here you go.

    38 parts253GPL-3.0
  • 2 layers51.4 × 61 mmWifi gb cart, the printed circuit board in 3D

    Wifi gb cart

    Staacks/wifi-game-boy-cartridge

    A WiFi cartridge for the original Game Boy.

    38 parts242
  • 2 layers125 × 97.2 mmBattoota, the printed circuit board in 3D

    Battoota

    AlaaSaadAbdo/battoota

    Keyboards

    38 parts188

Questions

How big is the G2U PCB?

It measures 78.1 × 71.4 mm and has 2 copper layers, 1.6 mm thick.

What parts does the G2U use?

38 parts. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the G2U KiCad files?

From the Acramonics/SolatronG2U repository on GitHub, at the commit this page was made from: the board is kicad/G2U.kicad_pcb and its schematic kicad/G2U.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the G2U design in my own project?

Its repository publishes it under the CC0-1.0 licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).