We're happy to announce a set of major new releases of the following sigrok projects: libsigrok 0.4.0, libsigrokdecode 0.4.0, sigrok-cli 0.6.0, and PulseView 0.3.0.

The tarballs are available for download from sigrok.org/download, as usual.

A lot of work has gone into each of those releases, with many new supported devices, many more protocol decoders, various new GUI features, and lots more. See below for details.

libsigrok

Let's start with the most interesting part for most people, newly supported devices in this release:

Logic analyzers: AKIP-9101, BeagleLogic, LeCroy LogicStudio, mcupro Logic16 clone, Pipistrello OLS, SysClk LWLA1016

AKIP-9101, BeagleLogic, LeCroy LogicStudio, mcupro Logic16 clone, Pipistrello OLS, SysClk LWLA1016 Oscilloscopes: Rigol/Agilent DS1000Z series, Yokogawa DLM2000 series, Yokogawa DL9000 series, Hung-Chang DSO-2100, GW Instek GDS-800

Rigol/Agilent DS1000Z series, Yokogawa DLM2000 series, Yokogawa DL9000 series, Hung-Chang DSO-2100, GW Instek GDS-800 Multimeters: Agilent U1241A/B, Agilent U1242A/B, Brymen BM25x series, MASTECH MS8250B, Metrahit 16T/16U/KMM2002, PeakTech 3415, Tenma 72-7730/72-7732/72-9380A, Testo 435-4, UNI-T UT372, UNI-T UT71A/B/C/D/E, Velleman DVM4100, Voltcraft VC-870/VC-920/VC-940/VC-960

Agilent U1241A/B, Agilent U1242A/B, Brymen BM25x series, MASTECH MS8250B, Metrahit 16T/16U/KMM2002, PeakTech 3415, Tenma 72-7730/72-7732/72-9380A, Testo 435-4, UNI-T UT372, UNI-T UT71A/B/C/D/E, Velleman DVM4100, Voltcraft VC-870/VC-920/VC-940/VC-960 Programmable power supplies: Fluke/Philips PM2800 series, HP 663xx series, Manson HCS-3xxx series, Motech LPS-30x series, Rigol DP800 series, Korad KAxxxxP series (a.k.a Velleman LABPS3005D and others)

Fluke/Philips PM2800 series, HP 663xx series, Manson HCS-3xxx series, Motech LPS-30x series, Rigol DP800 series, Korad KAxxxxP series (a.k.a Velleman LABPS3005D and others) AC/DC sources: Agilent N5700A series (DC sources), Chroma 61600 series (AC sources), Chroma 62000 series (DC sources)

Agilent N5700A series (DC sources), Chroma 61600 series (AC sources), Chroma 62000 series (DC sources) Electronic loads: Maynuo M97 (and compatibles)

Maynuo M97 (and compatibles) LCR meters: DER EE DE-5000

DER EE DE-5000 Scales: KERN EW 6200-2NM

KERN EW 6200-2NM BeagleBone Black capes: BayLibre ACME (revA and revB)

Pretty much every existing hardware driver has also received numerous fixes and improvements.

The fx2lafw driver specifically now supports (together with the already-released sigrok-firmware-fx2lafw >= 0.1.3) the new "official" sigrok USB VID/PID pairs you can use in purely FX2-based logic analyzers. For details see this blog post.

There are also a few new input modules (raw_analog, trace32_ad) and output modules (wav, srzip).

One of the bigger new features are the language bindings for libsigrok (based on Doxygen + SWIG): You can now use libsigrok functionality in C++, Python, Ruby, and Java. The C++ bindings are already used by PulseView (see below), and the Python bindings are used by the (still in development) sigrok-meter frontend. Let us know if you're using some of the bindings for your own projects!

There have also been an unusually huge set of random new features and facilities, bugfixes, documentation fixes, portability fixes, build system improvements, and so on.

The API has changed quite a bit since the last major release, you can read up all the details in the API docs.

See the NEWS file for a much more detailed list of changes, or browse the git history for even more details.

libsigrokdecode

Let's start with the newly supported protocol decoders as well:

adns5020: Bidirectional command and data over an SPI-like protocol

Bidirectional command and data over an SPI-like protocol am230x: Aosong AM230x/DHTxx/RHTxx humidity/temperature sensor

Aosong AM230x/DHTxx/RHTxx humidity/temperature sensor arm_etmv3: Decode ETM instruction trace packets

Decode ETM instruction trace packets arm_itm: Trace data from Cortex-M / ARMv7m ITM module

Trace data from Cortex-M / ARMv7m ITM module arm_tpiu: Filter TPIU formatted trace data into separate streams

Filter TPIU formatted trace data into separate streams eeprom24xx: 24xx series I²C EEPROM protocol

24xx series I²C EEPROM protocol em4100: EM4100 100-150kHz RFID protocol

EM4100 100-150kHz RFID protocol jitter: Retrieves the timing jitter between two digital signals

Retrieves the timing jitter between two digital signals max7219: 8-digit LED display driver

8-digit LED display driver mdio: Half-duplex sync serial bus for MII management (MAC/PHY)

Half-duplex sync serial bus for MII management (MAC/PHY) modbus: Modbus RTU protocol for industrial applications

Modbus RTU protocol for industrial applications mrf24j40: IEEE 802.15.4 2.4 GHz RF tranceiver chip

IEEE 802.15.4 2.4 GHz RF tranceiver chip nrf24l01: 2.4GHz transceiver chip

2.4GHz transceiver chip pwm: Analog level encoded in duty cycle percentage

Analog level encoded in duty cycle percentage qi: Async serial protocol for Qi charger receivers

Async serial protocol for Qi charger receivers rfm12: HopeRF RFM12 wireless transceiver control protocol

HopeRF RFM12 wireless transceiver control protocol sdcard_sd: Secure Digital card (SD mode) low-level protocol

Secure Digital card (SD mode) low-level protocol spdif: Serial bus for connecting digital audio devices

Serial bus for connecting digital audio devices stepper_motor: Absolute position and movement speed from step/dir

Absolute position and movement speed from step/dir swd: Two-wire protocol for debug access to ARM CPUs

Two-wire protocol for debug access to ARM CPUs tca6408a: Texas Instruments TCA6408A 8-bit I²C I/O expander

Texas Instruments TCA6408A 8-bit I²C I/O expander timing: Calculate time between edges

Calculate time between edges usb_power_delivery: USB Power Delivery protocol

USB Power Delivery protocol usb_request: USB (low-speed and full-speed) transaction/request protocol

And with that, we now support a total of 60 different protocol decoders. There are some more in the pipeline for the next releases, and we get contributed decoders on a pretty regular basis these days, which is awesome! If you're working on additional PDs, please send patches our way!

Apart from new decoders, there have also been a number of improvements and bugfixes for existing PDs as well.

The usb_request PD is especially noteworthy, since it not only allows you to decode higher-level USB requests, but it can also export the decoded data in the PCAP format, which you can further process/analyze in other tools such as Wireshark. See this blog post for details.

There have also been the usual set of random new features, bugfixes, documentation fixes, portability fixes, build system improvements, and so on. Only minor API changes have gone into this release, though.

See the NEWS file for a much more detailed list of changes, or browse the git history for even more details.

sigrok-cli

The sigrok-cli command-line utility hasn't seen too many new features in this release. There have been various bugfixes and fixes for memory leaks and compiler warnings and such, as well as some command-line option parsing robustness improvements.

The new --get and -T|--transform-module options have been added.

See the NEWS file for a more detailed list of changes, or browse the git history for even more details.

PulseView

The PulseView GUI has seen a pretty large set of improvements compared to the last release.

It is now based on the new libsigrokcxx C++ library (the libsigrok C++ bindings), supports Qt4 or Qt5, and is written in C++11 now (obsoleting some of the Boost functionality used previously in favor of std:: equivalents).

Various new or improved features have been added:

Support for vertical scaling of analog or logic traces

A "Save selection range as..." feature

Some settings now survive a restart (last open/save directory location, window size/position, last used device)

Pinch-zoom support, always-zoom-to-fit support, "sticky scrolling" support, etc.

Trace group support (for dragging multiple traces around as a group)

...and many, many more GUI and usability improvements...

There are Import and Export menus now, which allow you to import/export data from/to various file formats (all formats supported in libsigrokcxx).

The decoder annotation display code has received some substancial performance improvements.

Various portability improvements have been added as well, greatly increasing the usability of PulseView e.g. on Windows, Android, or Mac OS X.

There have also been a large number of random new features, bugfixes, documentation fixes, portability fixes, build system improvements, and so on.

See the NEWS file for a much more detailed list of changes, or browse the git history for even more details.

The future

As you can imagine there's basically no end to our TODO list for sigrok; as always we want to support more hardware, more input/output modules, more protocol decoders, and so on. Your contributions are highly welcome!

There are also a bunch of regressions and/or known bugs and missing features we'll be working on for the next minor bugfix release. If you notice any issues that haven't been reported yet, please file a bug.

We also have a number of larger tasks on our list, such as a new protocol decoder backend which will improve the performance of most PDs by quite a bit (10x or 20x speedup is easily possible for some PDs). We're also investigating a more generic flow-graph based framework which will tie all "blocks" we currently have (and others we'll add) more tightly together in a flexible manner, e.g. hardware drivers, input modules, output modules, transform modules, protocol decoders, etc.

Thanks a lot to everyone who has contributed to any of the sigrok projects to make these releases happen! This wouldn't have been possible without the help of the numerous contributors!