New major release of various sigrok components

Hi everyone! We're very happy to be able to announce a major new, coordinated release of:

There have been a lot of improvements in pretty much all parts of the code, including more supported hardware, more protocol decoders, more features, various bugfixes, better portability, improved GUIs, and lots more. Many thanks to all the contributors who helped to make this happen!


Starting with the libsigrok 0.3.0 release, all libsigrok drivers that talk to serial ports are using the cross-platform LGPL3+ libserialport library now (which has its first release, 0.1.0, today). This also helps to improve the Windows support for sigrok.

The library was written by Martin Ling (thanks a lot!) and supports a number of OSes, including Linux, Mac OS X, Windows, and others. Supported features include port enumeration, opening/closing ports, setting port parameters (baud rate, parity, and so on), reading/writing/flushing data, etc. etc. You can take a look at the API docs for more details.

Note: libserialport is completely independent of sigrok, i.e. it can be used by various other open-source projects without any problems, too.


The most interesting libsigrok changes for users will likely be the new hardware support, so here goes:

There have also been a number of other (infrastructure) changes and improvements, though:

  • We added support for channel groups (multiple channels of the device, that share some properties and are configured together).
  • There's a generic SCPI backend now that drivers can use, supporting various transports: serial ports, USBTMC, TCP/RAW, TCP/Rigol, VXI, and librevisa.
  • The session file format (*.sr) has changed and its version was bumped to 2.
  • There's improved Windows support now for serial port and USB based devices, though it's partially still experimental! Please checkout the current list of known Windows issues, since there are some problems e.g. with the popular FX2 based devices (bug #343) and the Openbench Logic Sniffer (bug #205). Feedback, bug reports and patches are highly welcome!
  • Various API improvements were also done, to allow for some of the new features and to ease future extendability. You can take a look at the API docs for more details.
  • And of course there was a huge amount of bugfixing, as usual.

See the NEWS file for the full list of changes.


Same deal for libsigrokdecode, most people will probably want to know which new protocol decoders are supported:

  • guess_bitrate: Guess the bitrate/baudrate of a signal
  • ir_nec: NEC infrared remote control protocol
  • ir_rc5: RC-5 infrared remote control protocol
  • midi: Musical Instrument Digital Interface
  • parallel: Parallel synchronous bus decoder
  • rgb_led_spi: RGB LED string decoder (SPI)
  • xfp: 10 Gigabit Small Form Factor Pluggable Module
  • z80: Zilog Z80 microprocessor disassembly

The protocol decoder backend has also received a bunch of new features and facilities in this release:

  • Support for annotation rows (groups of annotation classes to be shown together).
  • The new OUTPUT_BINARY facility allows PDs to output decoded data in various (file) formats (e.g. I²S output in WAV format, USB output in PCAP format for Wireshark, LCD controller output in PNG format for viewing, and so on).
  • The new OUTPUT_META facility allows PDs to report certain data points or events to the frontend, which can be used for various post-processing and statistics purposes (e.g. simple counts, average/mean values, min/max values, and more).
  • The protocol decoder API has changed, the API version is bumped to 2. Decoders using the old PD API no longer work with this library release.
  • A large amount of PD fixes have been done to improve the usability of all PDs when used with GUIs (long/short annotations for zoom-dependent display, corrected annotation sample numbers, use of annotation rows, and so on).
  • Various API improvements were also performed to allow for all the new features. You can take a look at the API docs for more details.
  • And of course all PDs and the library code have received quite a few bugfixes, as usual.

See the NEWS file for the full list of changes.


sigrok-cli (a command-line sigrok frontend) now depends on both libsigrok >= 0.3.0 and libsigrokdecode >= 0.3.0 and supports all the new features of the libraries, including channel groups, PD annotation rows, the new *.sr file format, plus the usual bunch of bugfixes.

The following changes have been performed for the command-line options:

  • The -g | --channel-group option was added.
  • The -M option (for PD meta output type support) was added.
  • The -B option (for PD binary output type support) was added.
  • The -p | --probes option was renamed to to -C | --channels.

There were also a bunch of improvements related to the (experimental) sigrok-cli Windows installer. You can download an (experimental) nightly build here: sigrok-cli-NIGHTLY-installer.exe. Any feedback, bug reports, or patches are highly welcome!

See the NEWS file for the full list of changes.


PulseView (a Qt based sigrok GUI for logic analyzers, oscilloscopes and MSOs) has also received quite a huge amount of improvements and new features (thanks a lot to Joel Holdsworth!):

  • Support for protocol decoding (via libsigrokdecode) has been added, including support for annotation rows, multiple decoders in the same GUI window, support for stacking protocol decoders (e.g. I²C -> RTC8564, UART -> MIDI, or SPI -> SDcard) and lots more.
  • Support for loading and saving sigrok session (*.sr) files has been added.
  • Initial support for analog data sources (specifically oscilloscopes, e.g. the Rigol DS1052E) has been added.
  • The Windows installer has received a bunch of fixes and improvements, too. You can download an (experimental) nightly build here: pulseview-NIGHTLY-installer.exe. Any feedback, bug reports, or patches are highly welcome!
  • And of course there were quite a number of bugfixes, as usual.

See the NEWS file for the full list of changes.


This release of sigrok-firmware-fx2lafw, the open-source firmware for FX2-based logic analyzers, is only a minor bugfix release. It basically only fixes one bug which lead to the data pins not being tri-stated after an acquisition, but rather being driven.

See the NEWS file for the full list of changes.


Have fun analyzing your signals!