New protocol decoder: wiegand

libsigrokdecode recently gained support for yet another protocol decoder: wiegand.

This PD supports the Wiegand interface protocol, often used in electronic entry systems, card swipe systems, some RFID systems and such.

As usual, we have a bunch of example files in the sigrok-dumps repository, and a few test-cases in the sigrok-test repo.

The decoder was contributed by Sean Burford, thanks a lot!


PCE PCE-322A support

libsigrok now supports the PCE PCE-322A sound level meter.

This is a USB-based sound level meter with various settings such frequency weighting (A or C), a frequency range of 31.5 Hz to 8 kHz, an internal memory store, an built-in RTC, and others.

The device protocol is documented in the sigrok wiki, as usual.

The driver was contributed by George Hopkins, thanks a lot!


New protocol decoder: em4100

libsigrokdecode now supports another protocol decoder, em4100.

The EM4100 protocol for certain 100-150kHz RFID tags is layered on top of one of three possible modulation schemes: Manchester, Biphase, or PSK.

Currently the PD only supports Manchester, the other ones can be added later though.

The decoder also works for some compatible RFID tag types such as EM4102 and FK4100.

As usual we have a few example files in our sigrok-dumps repo, and some test-cases is the sigrok-test repo.

The protocol decoder was contributed by Benjamin Larsson, thanks a lot!


New protocol decoder: timing

libsigrokdecode now supports another protocol decoder: timing. This has been supported for a while already actually (and is part of libsigrokdecode 0.4.0), but hasn't seen an official announce yet, so here goes.

The PD works on a single logic channel and shows (for all transitions) the time between a transition and the next one.

As usual we have a few test-cases in our sigrok-test repo to ensure there are no regressions later on as the backend code and/or PD change.

The decoder was contributed by Baruch Even, thanks a lot!


Major sigrok releases: libsigrok, libsigrokdecode, sigrok-cli, PulseView

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, 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.


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
  • Oscilloscopes: 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
  • 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)
  • AC/DC sources: Agilent N5700A series (DC sources), Chroma 61600 series (AC sources), Chroma 62000 series (DC sources)
  • Electronic loads: Maynuo M97 (and compatibles)
  • LCR meters: DER EE DE-5000
  • Scales: 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.


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

  • adns5020: Bidirectional command and data over an SPI-like protocol
  • am230x: Aosong AM230x/DHTxx/RHTxx humidity/temperature sensor
  • arm_etmv3: Decode ETM instruction trace packets
  • arm_itm: Trace data from Cortex-M / ARMv7m ITM module
  • arm_tpiu: Filter TPIU formatted trace data into separate streams
  • eeprom24xx: 24xx series I²C EEPROM protocol
  • em4100: EM4100 100-150kHz RFID protocol
  • jitter: Retrieves the timing jitter between two digital signals
  • max7219: 8-digit LED display driver
  • mdio: Half-duplex sync serial bus for MII management (MAC/PHY)
  • modbus: Modbus RTU protocol for industrial applications
  • mrf24j40: IEEE 802.15.4 2.4 GHz RF tranceiver chip
  • nrf24l01: 2.4GHz transceiver chip
  • pwm: Analog level encoded in duty cycle percentage
  • qi: Async serial protocol for Qi charger receivers
  • rfm12: HopeRF RFM12 wireless transceiver control protocol
  • sdcard_sd: Secure Digital card (SD mode) low-level protocol
  • spdif: Serial bus for connecting digital audio devices
  • stepper_motor: Absolute position and movement speed from step/dir
  • swd: Two-wire protocol for debug access to ARM CPUs
  • tca6408a: Texas Instruments TCA6408A 8-bit I²C I/O expander
  • timing: Calculate time between edges
  • usb_power_delivery: 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.


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.


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!


libserialport 0.1.1 released!

We're happy to announce that libserialport 0.1.1 has been released!

libserialport is a portable, LGPLv3+ shared library written in C which allows users to talk to serial port devices on various OSes (including Linux, Windows, Mac OS X, FreeBSD, and Android).

The 0.1.1 release is compatible with 0.1.0 in that no existing APIs have been changed or removed; new ones have been added, however:

  • sp_get_port_description(): Obtain a user friendly port description.
  • sp_get_port_transport(): Obtain the underlying transport type.
  • sp_get_port_usb_bus_address(): Obtain the USB bus number & device address.
  • sp_get_port_usb_vid_pid(): Obtain the USB VID and PID.
  • sp_get_port_usb_manufacturer(): Obtain the USB manufacturer string.
  • sp_get_port_usb_product(): Obtain the USB product string.
  • sp_get_port_usb_serial(): Obtain the USB serial number string.
  • sp_get_port_bluetooth_address(): Obtain the Bluetooth MAC address.
  • sp_blocking_read_next(): Read bytes from the specified serial port, returning as soon as any data is available.

On Linux, the libudev requirement has been dropped, the library now has no additional requirements on all platforms.

FreeBSD has gained serial port enumeration support.

Additionally, there have been quite a number of bugfixes for various issues. Please read the NEWS file (and/or the git log) for details.
The tarball (libserialport-0.1.1.tar.gz) can be downloaded from, as usual.

If you notice any bugs, please report them at, thanks!


Korad KAxxxxP series support

We're happy to announce that libsigrok now supports the Korad KAxxxxP series of programmable power supplies, including the popular Korad KA3005P.

These are all 1-channel lab power supplies with various different max. voltage and current properties.

Velleman also resells them under the name PS3005D and LABPS3005D, as does Farnell/Tenma using their usual model names of 72-xxxx. See the Korad KAxxxxP series wiki page for details. If you know of other vendors who resell these devices, please let us know.

The protocol used by the power supplies is documented on our wiki page, together with various quirks and bugs in the device firmware and/or vendor documentation.

If you own a not-yet-supported device from this series, you can easily add support by telling the libsigrok driver about the "ID" that the power supply returns upon the "*IDN?" command, e.g. like this. Please send us a patch if you do so!

The driver was contributed by Hannu Vuolasaho, thanks a lot!


New protocol decoder: USB request

libsigrokdecode has received support for another, quite interesting protocol decoder recently: usb_request.

This PD stacks on top of the usb_packet decoder, which in turn stacks on top of usb_signalling.

It decodes USB transactions / requests from the packets received from the usb_packet decoder:

 $ sigrok-cli -i \
   -P usb_signalling:dp=DP:dm=DM,usb_packet,\
 BULK in: [ 00 01 00 00 ] : ACK
 BULK in: [ 00 01 00 00 ] : ACK
 BULK in: [ 00 01 00 00 ] : ACK

As usual, there are a bunch of sample files in sigrok-dumps, and some test-cases in the sigrok-test repo. Further files and test-cases are welcome!

In addition to emitting annotations (for displaying in GUIs), the PD also supports (currently) one SRD_OUTPUT_BINARY output type named "pcap".

This will emit the decoded data in the widely-used PCAP format, which you can then further process in other tools such as Wireshark:

 $ sigrok-cli -i -P usb_signalling:dp=DP:dm=DM,usb_packet,\
   usb_request -B usb_request=pcap > foo.pcap

Of course you could also pipe the PCAP data directly into Wireshark as well:

 $ sigrok-cli -i -P usb_signalling:dp=DP:dm=DM,usb_packet,\
   usb_request -B usb_request=pcap | wireshark -k -i -

The protocol decoder was contributed by Stefan Brüns, thanks a lot!

LeCroy LogicStudio support

libsigrok now supports yet another new device. This time: the LeCroy LogicStudio.

This is a 16-channel logic analyzer with up to 1GHz sampling rate (depending on the number of channels used).

The device features a Xilinx Spartan-6 XC6SLX16, and a Cypress FX2 that takes care of the USB data transfer.

There's also an interesting mix of triggering facilities that the device supports, see the protocol docs for details.

In order to use the logic analyzer you need the respective firmware/bitstream files, which you can extract from the vendor software using the sigrok-fwextract-lecroy-logicstudio script from our sigrok-util repository.

The driver was contributed by Tilman Sauerbeck, thanks a lot!


New logo: Works with sigrok

We've created a new sigrok-related logo that manufacturers or resellers of devices can use to advertise sigrok-compatible products: the "Works with sigrok" logo.

If you're developing or selling logic analyzers, oscilloscopes, multimeters, or any of the other supported device types, you can use this logo under the following conditions:

  • Your device must be fully supported in the current git master version of libsigrok.
  • The protocols used by your device must be publicly documented.
  • If your device requires additional files at runtime, redistribution of these must be permitted.
  • You must not imply any endorsement of your product by us.

See the Advertising sigrok compatible products wiki page for details.

We're happy to announce that the first user of the new logo is Hobby Components, who are selling FX2-based logic analyzer devices.

What's more, they're now also pre-configuring their FX2-based 8-channel logic analyzers (e.g. the Hobby Components HCTEST0006) to contain the new official sigrok VID/PID pairs for fx2lafw, so their devices will show up as "sigrok FX2 LA (8ch)" in e.g. PulseView and (only) work with our fully open-source firmware and software stack.



Subscribe to The ever-expanding world of sigrok RSS