pcb-rnd knowledge pool


QR code and code128 barcode support for PCB layouts now in pcb-rnd

qr by Erich S. Heinzle (VK5HSE) on 2017-04-06

Tags: howto, parametric footprint, footprint, qr, qr code, qr-code, import, silk, artwork, barcode, code, id, menufile

node source



Abstract: Demonstrate how to use qr(), the parametric footprint for generating QR code.

  As part of the extensible parametric footprint support in the gEDA PCB fork, pcb-rnd , support for QR-codes and code128 barcodes on pcb layouts has been implemented.

The necessary awk scripts can be obtained from the EDAkrill repository, http://repo.hu/projects/edakrill/

Installation of the qrencode library on the machine running pcb-rnd is required.

A QR-code can be instantiated with a footprint attribute like:

 qr(hello world, 37.00mil)


 code128(hello world, 0.001m)

embedded in a netlist exported from a schematic. The dimension refers to the pixel size.

Of note, parametric footprints scripts are able to parse the usual dimension suffixes, i.e. mm, mil, dmil, cmil, in, um

Alternatively, and somewhat simpler, is to simply use the "i" element insertion dialogue within the layout editor to provide the text and pixel dimensions for insertion as a QR-code, i.e.

The QR-code text and pixel size can be selected, along with either high or low level error coding:

After this, the QR-code can be placed on the layout, like any footprint element:

and here's the QR-code with a bit of zoom applied...

Similarly, a code128 format barcode can be instantiated with a footprint attribute like:

  code128(hello world, 1000.00um)


  code128(hello world, 0.1cm)

or by instantiating the "i" insert element dialogue, i.e.

after the height, barcode bar width and text are defined, the element can be placed on the layout:

Like any footprint element, the text label can be resized and moved.

A footprint created this way can be saved from the buffer either before placement, or after copying into the buffer, if a standalone footprint is required, i.e. for importing into KiCad or frequent use.

Of note, the pairs of awk scripts that implement the qr() and code128() parametric footprints need to be placed in pcb-rnd's


directory, and can serve as templates for your own modifications or alternative parametric footprint types which will automatically show up in the element insertion dialogue on restarting pcb-rnd, if placed in this directory.

Over time, additional user contributed awk scripts for parametric footprints will also be available on edakrill , the new platform and  format agnostic EDA repository.