New protocol decoders: ad5626, ad79x0, adxl345, ltc242x, ltc26x7

libsigrokdecode now supports a few additional protocol decoders: ad5626, ad79x0, adxl345, ltc242x, and ltc26x7.

This is a set of decoders (that stack upon the SPI or I²C decoders) that were contributed by Analog Devices Inc.:

  • ad5626: Analog Devices AD5626 12-bit nanoDAC
  • ad79x0: Analog Devices AD7910/AD7920 12-bit ADC
  • adxl345: Analog Devices ADXL345 3-axis accelerometer
  • ltc242x: Linear Technology LTC2421/LTC2422 1-/2-channel 20-bit ADC
  • ltc26x7: Linear Technology LTC26x7 16-/14-/12-bit rail-to-rail DACs

Some example traces are available in the sigrok-dumps repo and some test-cases in the sigrok-test repo, as usual.

The decoders were contributed by Teo Perisanu of Analog Devices, thanks a lot!

PulseView 0.4.2 released!

We're happy to announce the new PulseView 0.4.2 release!

This is quite a major release with loads of new features and bugfixes.

We provide various binary builds for Linux (AppImage), Windows (.exe installer) and Mac OS X (DMG) for the release version over at the Downloads page (in addition to the usual nightly builds).

Major new features and improvements:

  • PulseView session setups can now be saved/restored to and from *.pvs files.
  • Translation support was added to the GUI elements (and a first translation, German, is available). Please check the wiki for details on how you can contribute further translations.
  • There's a new protocol decoder selection subwindow with filtering capabilities, browing by decoder tags, auto-stacking of decoders where required, and more.
  • A new decoder "binary" output subwindow can show/save "OUTPUT_BINARY" type decoder data in various (decoder-specific) formats (WAV, PCAP, PNG, and many others). This also features a simple "hex view" for the data.
  • It is now possible to show/hide individual decoder annotation rows, and individual annotation classes. This is very handy when you're debugging a specific issue and only want to see certain classes of decoder annotations, e.g. "show me only CRC errors", "show me only parity errors and frame errors", or "show me only I²C NACKs" etc. etc.
  • Lots of UI and functionality improvements regarding cursors and markers.
  • Various new handy key shortcuts for zooming, moving around in the data, placing cursors, etc.
  • Various drawing and decoder/annotation performance improvements.

For further information about some of the new features please also check out these recent blog posts:

And of course, as usual, there are also quite a number of bugfixes and other minor improvements all over the place.

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

Even more PulseView features you might have missed

In this last installment of the "features you should know about" series of posts before the upcoming PulseView release, we'd like to first show you the current state of our decoder output view. As you may have guessed from the name, it's a new type of view and with that it can be created using the "create new view" button which you can find on the left of the toolbar.

Once opened, you need to select a decoder for it to show anything. Not any decoder will do, however, it has to be a decoder that emits binary data - for example I2C, I2S, EEPROM24xx, SPI or UART. Having acquired some I2S data and using the I2S protocol decoder lets you have the sound data as raw .wav file data, for example:

Using the save icon at the top then lets you save this data either as a binary file (in this case creating a valid .wav file) or various types of hex dumps. If you want to only save a certain part of the binary data, simply select that part before saving.

You may have noticed that the bytes are grouped by color somehow. The meaning behind this is that every chunk of bytes emitted by the protocol decoder receives one color, the next chunk another color and so on. As there are currently three colors, the cycle repeats. This makes it easier to visually organize the data that you see - in the case of the I2S decoder, the header has one color because it's sent out in one go and following that, every sample for left/right consists of 4 bytes with the same color since they're sent out one by one.

In the future, we'll use this view to let you do more things. For example, it would be useful to reconstruct EEPROM contents from observing the wire and so that's just what we'll allow you to do. Also, we're going to support MIME types so that protocol decoders can describe the binary data they're sending out. In the case of I2S, this will allow PulseView to offer media playback directly and in the case of LCD display decoders will allow you to immediately see what the display would show.

Last but not least, we'd like to point out that you now can show and hide not only individual protocol decoder rows but also the annotation classes that are assigned to them. To do so, simply click on the arrow or label of the row you want to customize.

From that menu, you can either show/hide the entire row or choose the annotation classes you want to see. Everything is visible by default but if you want to focus on specific protocol messages or status annotations like warnings or errors, this should help. Also, if you are examining really long traces, disabling annotations for the most-often occuring type (e.g. bit annotations for SPI) then drawing performance will increase, too.

In the future, we'll also let you do more things from there, like exporting annotations. If there's something else you'd like to see available from there, let us know!


More PulseView features you might have missed

Just like in the previous blog post, we would like to make you aware of features that you may not have known about yet. The first one seems kind of minor but may not be so minor to people that don't speak English - translations. Currently, only German is supported (because we're German, duh) and so we'd appreciate if you'd supply translation files for other languages that we can include. Please check for instructions on how to do that.

Next up we have some additional marker functions that were supplied by Martin Miklos. He added an auto-delta feature that shows you the time difference to all other timer markers when you hover over one:

Also, he added quick-access hotkeys for the left and right cursor boundaries which we have attached to the keys '1' and '2', respectively. This means that instead of having to re-arrange the cursor boundaries right after enabling it, you may now simply press '1' and have the left side of the cursor follow your mouse. Clicking or pressing escape puts it down. Then, you may do the same with the other side by pressing '2'. This should make using the cursor much faster.

In the spirit of efficiency, we also elimiated the need to enable the cursor altogether. Simply press '1' or '2' and the cursor will be enabled automatically with the left or right boundary following your mouse.

We appreciate his and all other contributions, so if you have something you'd like to implement, swing by our IRC channel to discuss and we'll help you make most efficient use of your skills when contributing :)

PulseView features you might have missed

Users of the nightly PulseView builds may have noticed a while ago but we haven't publicly documented it up until now: decode traces now have a context menu that you can access by right-clicking on a decoder trace.

The most prominent feature here is to export annotations to a text file and this is what I want to highlight in this post. With this feature, you can export annotations and post-process them, allowing you to use the data in whatever way you need. Aside from the obvious choices presented to you by the context menu, you can customize the output in the settings dialog using a format string:

The default format string probably contains more than you need, so feel free to adjust it to your liking. For example, the string "%s %d: %1" will generate the following output for the example above: "253-471 DS1307: Read date/time: Sunday, 10.03.2013 23:35:30"

Unannounced until now as well was the new protocol decoder selection subwindow. Clicking on the "Add Decoder" button or simply pressing its hotkey 'd' will now get you this:

From there, you can either start typing away to apply a filter or browse through the available protocol decoders. Do note that in contrast to the previous menu that you were shown, you now see all protocol decoders - both stacked and unstacked. If you choose to add a stacked one, PulseView will try to figure out which stacked decoder you need. In case it's ambiguous, it'll ask you which one you want to use.

In case you already know what you want, you can simply press 'd', type the name of the protocol decoder, press enter and when followed up by the escape key, the selection subwindow will close again. Then, you'll have added the decoder of your choice without having to click even once.

We hope you find these features useful and as always: if there's something you find amiss or that doesn't work the way you expect, please file a bug in the bug tracker so we can talk about it:

libsigrok 0.5.2 released!

We're happy to announce the release of libsigrok 0.5.2. Tarballs are available from the Downloads page, as usual.

This is a "minor" release that doesn't add, change or remove any public API functions, so all existing clients will continue to work (without even the need to recompile).

The following hardware is now (additionally) supported:

  • Logic analyzers: Microchip PICkit2, Sysclk SLA5032
  • Multimeters: Agilent 34405A, Agilent U127x, HP 34401A, Keysight 34465A, MASTECH MS2115B, Mooshimeter
  • Programmable power supplies: BK Precision 9130, HP 661xC, HP 66312A, HP 663xA, Korad KA3005P/KD6005P, Manson HCS-330x, RND 320-KD3005P, Stamos S-LS-31, TENMA 72-2535 V2.1, Voltcraft DPPS-32-15
  • Oscilloscopes: Agilent DSO1000B series, Hameg HMO3522, Rigol MSO5000 series, R&S HMO1000/RTA4000/RTB2000/RTC1000/RTM3000 series, YiXingDianZi MDSO
  • LCR meters: MASTECH MS5308, PeakTech 2165, UNI-T UT612, Voltcraft 4080
  • Thermometers: MASTECH MS6514

Various existing hardware drivers have also received numerous fixes and improvements.

This release also includes improved (and portable) USB HID support via HIDAPI, and Bluetooth/BLE support (currently Linux-only via BlueZ).

There have also been quite a few bugfixes, documentation fixes, portability fixes, build system improvements, performance 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.

MASTECH MS6514 support

libsigrok now supports the MASTECH MS6514 digital thermometer.

This is a device with two thermocouple inputs and USB connectivity (SiLabs CP2102 based). It supports K,J,T,E,R,S,N thermocouple types.

A teardown and the protocol description are available on the device's wiki page, if you're interested.

The driver was contributed by Dave Buechi, thanks a lot!

Bluetooth and BLE support in libsigrok

libsigrok recently gained support for Bluetooth Classic and BLE based devices.

The libsigrok code contains a generic API that individual drivers can use, as well as OS-specific backend implementations of that API.

Currently only a Linux backend (based on BlueZ) has been implemented, but we're happy about patches to implement backends for other OSes.

So far the following Bluetooth/BLE devices are supported:

  • EEVBlog 121GW (based on Silicon Labs BLE112), contributed by Gerhard Sittig, thanks!
  • Mooshim Engineering Mooshimeter (based on TI CC2540), contributed by Derek Hageman, thanks!
  • Some multimeters with certain Bluetooth Classic based interfaces

More devices can be added later, of course. As always, contributions are welcome!

The Bluetooth/BLE support code was contributed by Gerhard Sittig, thanks a lot!

libsigrokdecode 0.5.3 released!

We're happy to announce the release of libsigrokdecode 0.5.3. Tarballs are available from the Downloads page, as usual.

This is a "minor" release that doesn't add, change or remove any existing public API functions, so all existing clients will continue to work (without even the need to recompile).

The following new protocol decoders are now available:

  • lin: Local Interconnect Network (LIN) protocol
  • x2444m: Xicor X2444M/P nonvolatile static RAM protocol
  • ds2408: 1-Wire 8-channel addressable switch
  • cc1101: Low-power sub-1GHz RF transceiver chip
  • enc28j60: Microchip ENC28J60 10Base-T Ethernet controller protocol
  • pca9571: NXP PCA9571 8-bit I²C output expander
  • seven_segment: 7-segment display protocol
  • amulet_ascii: Amulet Technologies LCD controller ASCII protocol
  • tdm_audio: TDM multi-channel audio protocol
  • signature: Annotate signature of logic patterns
  • nes_gamepad: NES gamepad button states
  • flexray: Automotive network communications protocol
  • ir_rc6: RC-6 infrared remote control protocol
  • ieee488: IEEE-488 General Purpose Interface Bus (GPIB/HPIB or IEC)
  • hdcp: HDCP protocol over HDMI

In total, we now support 109 different protocol decoders. If you're working on additional PDs, please send patches our way!

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

New protocol decoder: hdcp

libsigrokdecode now supports yet another protocol decoder: hdcp.

This one stacks on top of the i2c decoder and decodes the High-bandwidth Digital Content Protection (HDCP) protocol mapped to HDMI.

Some example traces are available in the sigrok-dumps repo and some test-cases in the sigrok-test repo, as usual.

The decoder was contributed by Dave Craig, thanks a lot!


Subscribe to The ever-expanding world of sigrok RSS