sigrok logic analyzer software

I have testes several logic analyzers (both commercial and DIY)  and software for them. I would like to see on this Open Source world is some kind of common format logic analyzer data presentation and maybe common API for accessing the information. In this way it would be easy to write all kinds of applications that decode data and hardware that captures the data independently. I would want something like what Wireshark did for network traffic analyzing – open source and easily expandable software.

Not I think I have found one software that seems to match those needs, and it is called sigrok.

When sigrok project started, the developers focused on logic analyzers because those devices used to be expensive. Nowadays heap FX2-based boards that work with sigrok can be had for as low as $15, and there is even hardware specifically sold for this software. The scope has expanded as Sigrok can also handle analog signals and the developer consider any kind of test and measurement equipment in scope of the project; “if it can be queried or controlled, we’ll take it on“. Nowadays sigrok is a software suite for extracting data collected by various types of analyzers and displaying them or analyzing them using protocol decoder plugins.

The sigrok project aims at creating a portable, cross-platform, Free/Libre/Open-Source signal analysis software suite that supports various device types. At the current state sigrok is a portable, cross-platform, free open source signal analysis software suite that supports various device types, such as logic analyzers, MSOs, oscilloscopes, multimeters, LCR meters, sound level meters, thermometers, hygrometers, anemometers, light meters, DAQs, data loggers, function generators, spectrum analyzers, power supplies, IEEE-488 (GPIB) interfaces, and more. It supports a wide variety of hardware and many protocol decoders (new decoders can be written in Python).

This suite consists of several sub-projects:

I write in this article mostly about PulseView and sigrok-cli. They at  downloadable for Linux, Windows and OS X from http://sigrok.org/wiki/Downloads.  This video introduces how to use sigrok PulseView: Cheap logic analyzer + Sigrok pulseview = timesaver (LHT00SU1)

I decided to test sigrog on Windows. Sigrok provides nightly Windows installers for sigrok-cli and PulseView. PulseView is a Qt based logic analyzer, oscilloscope and MSO GUI for sigrok. PulseView can record signals from suitable device and display then nicely on the screen. PulseView software provides also decoders for many popular types of communication protocols including UART, CAN bus, I2C, SPI, JTAG, PWM, etc.

For initial testing I used first the Demo device, that generates semi-random signal you can look at without need for any hardware. I did the first tests with this Demo signal.

sigrog

 

To be able to record real world signals, I need some supported hardware that can capture signals. Luckily I had several hardware that should be suitable. First I tried PulseView Windows to work with 8 logic channel Saelae clone device. It worked pretty much  “plug and play” when I just plugged it in and selected to use FX2-based boards driver fx2lafw: Sigrok found the device with the drivers I had in my computer.

Next I tried to do the same with with USBee AX clone, that should be compatible (I think), but did not work “plug and play” as PulseView failed to find it. It seems that it would need some more work with the drivers. At the moment I did not want to mess up with the drivers as described at How to use it with PulseView (I think I would risk compatibility with some other software doing that). Maybe some later time.

Next I tried RGB LED decoder with signal captured from my WS2812 addressable LEDs test circuit.

pulseview_rgbled

 

PulseView has a quite good list of supported protocol decoders (PDs) as the libsigrokdecode library ships with a collection of various protocol decoders out of the box. If that is not enough for your special needs, you can write your own too, of course; see Protocol decoder HOWTO and Protocol decoder API for details. Every protocol decoder is a Python module and has its own subdirectory in libsigrokdecode’s decoders directory. Protocol decoder HOWTO offers a minimalistic example of how a protocol decoder looks like.

 

Sigrok links:

Sigrok Downloads

Sigrok at GitHub

https://sigrok.org/wiki/PulseView

https://sigrok.org/wiki/Supported_hardware

http://sigrok.org/wiki/Input_output_formats

https://en.wikipedia.org/wiki/Sigrok

https://www.sigrok.org/blog/blog

 

Related articles on signal analysis:

Signal analysis using Sigrok blog posting tells how to install Sigrok on Ubuntu and and capture signals with command-line utilities.

Rocking with sigrok article gives introduction to using sigrok commant line tools in Linux.

Logic analyzer: visualizing latency between two digital signals in real time with sigrok and matplotlib tells how to manipulate data extracted fromlogic analyzer with Python, to view the latency between two digital signals

High-Level Automated Hardware Debugging article shows how to use logic analyzers based on the FX2 chip with sigrok to debug hardware.

Collectd Wiki Plugin:sigrok page tells that sigrok plugin is a fully fledged libsigrok client, and can use any sigrok supported hardware to feed measurements to collectd and output data to RRDtool.

Sigrok: Using Logic to Debug Logic presentation slide set from Linux Foundation event gives introduction to usign sigrok

Hackaday sigrok postings

 

Information on logic analyzer hardware options:

fx2lafw is an open-source firmware for Cypress FX2 chips which makes them usable as simple logic analyzer hardware. The fx2lafw firmware is meant to work on any FX2-based hardware, including logic analyzers, FX2 eval boards, or other hardware which has this chip on-board.

How to use it with PulseView article tells how to use cheap “USBEE AX” logic analyzer with PulseView on Windows (tells the tricks how to configure Windows drivers).

Hobby Components low cost 8 channel logic analyser was first dedicated hardware for sigrok. Together with sigrok’s PulseView or sigrok-cli (command line version) software you can capture up to 8 digital logic channels at sample rates up to 24MHz.

Arduino logic analyser article tells how you can turn Arduino Uno R3 board to open logic sniffer compatible device (that should be supported with sigrok). You need code from Implementation of a SUMP compatible logic analyzer for the Arduino.

USB-PD Sniffer article describes a USB-PD sniffing dongle with Type-C connectors.You can use the opensource Sigrok framework to acquire and decode USB Power Delivery traces with the USB-PD dongle.

Raspberry PI Logic Sniffer project turns the Raspberry PI into a logic sniffer that is compatible with sigrok. The logic sniffer runs on “bare metal”

A BeagleBone Logic Analyzer article tells that BeagleLogic realizes a logic analyzer on the BeagleBone Black using the Programmable Real-Time units and matching firmware and Linux kernel modules on the BeagleBone Black. BeagleLogic Turns your BeagleBoard into a 14-channel 100Msps Logic Analyzer page tells that with the sigrok project, BeagleLogic gets support for software triggering and decoding a large variety of digital communication protocols.

 

Related postings in this blog:

http://www.epanorama.net/newepa/2012/10/10/low-cost-logic-analyzers/

http://www.epanorama.net/newepa/2010/10/26/saelae-logic-analyzer/

http://www.epanorama.net/newepa/2013/01/28/debugging-rs-232-with-logic-analyzer/

http://www.epanorama.net/newepa/2013/02/11/open-logic-sniffer-software-and-hardware/

http://www.epanorama.net/newepa/2014/06/17/ht-usbee-axpro-review/

http://www.epanorama.net/newepa/2012/10/11/diy-logic-analyzers/

 

7 Comments

  1. Tomi Engdahl says:

    Everything You Need To Know About Logic Probes
    http://hackaday.com/2017/07/29/everything-you-need-to-know-about-logic-probes/

    comprehensive treasure trove of information regarding a subject that we should all know more about — sniffing logic signals. Sure, it’s a long video, but [Joel] of [OpenTechLab] leaves no stone unturned.

    At the center of the video is the open-source sigrok logic capture and analyzer. It’s great because it supports a wide variety of dirt cheap hardware platforms, including the Salae logic and its clones. Logic is where it shines, but it’ll even log data from certain scopes, multimeters, power supplies, and more. Not only can sigrok decode raw voltages into bits, but it can interpret the bits as well using protocol decoder plugins written in Python. What this all means is that someday, it will decode everything. For free.

    [Joel] knows a thing or two about sigrok because he started the incredibly slick PulseView GUI project for it, but that doesn’t stop him from walking you through the command-line interface, which is really useful for automated data capture and analysis, if that’s your sort of thing. Both are worth knowing.

    In our opinion sigrok, and the el cheapo hardware logic probes that it supports deserve a place in every hacker’s toolbox. This video is the best introduction to the software, and the topic in general, that we’ve ever seen.

    [001] Sigrok and Logic Analyzers
    https://www.youtube.com/watch?v=dobU-b0_L1I

    Reply
  2. Tomi Engdahl says:

    Cheap logic analyzer + Sigrok pulseview = timesaver (LHT00SU1)
    https://www.youtube.com/watch?v=KiDDL5xtnG0

    Cheap logic analyzer SPI i2c UART
    https://www.youtube.com/watch?v=rR5cEFRO9_s

    Reply
  3. Tomi Engdahl says:

    Getting Started with a $10 Logic Analyzer using Sigrok and PulseView
    https://www.youtube.com/watch?v=z8Tdz7eQ8n4

    Reply
  4. Tomi Engdahl says:

    Using a Logic Analyzer to Generate Screenshots from a Game Boy
    http://hackaday.com/2017/08/01/using-a-logic-analyzer-to-generate-screenshots-from-a-game-boy/

    Wouldn’t you like to go back to a dead handheld and extract the proof of your 90s-era high scores? Of course you would.

    [svendahlstrand] bought his first logic analyzer, a Logic 8 from Saleae and decided to play around with an old Game Boy. He opened up the handheld with a tri-point screwdriver and hooked six wires up to the LCD data bus, generating screen shots from the logged data. He got screens from Solomon’s Club, Mole Mania, Kid Dracula, and more.

    After figuring it out he posted his LCD sniffing tutorial to GitHub, where he also has a C program for manually piecing together the screen shots, pixel by pixel.

    Sniff your Game Boy’s LCD using a logic analyzer
    https://github.com/svendahlstrand/game-boy-lcd-sniffing

    Reply
  5. Tomi Engdahl says:

    New protocol decoder: USB request
    https://www.sigrok.org/blog/new-protocol-decoder-usb-request

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

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

    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

    Reply
  6. Tomi Engdahl says:

    USB-PD Sniffer
    https://www.chromium.org/chromium-os/twinkie

    This page describes a USB-PD sniffing dongle with Type-C connectors.
    The dongle can be supported by Chrome devices as part of a USB-Type C implementation.

    Capturing traces with the Sigrok tool

    Reply
  7. Tomi Engdahl says:

    Hands-on review: Analyze signals with free, open-source sigrok PulseView
    https://www.electronicproducts.com/Software/Development_Tools_and_Software/Hands_on_review_Analyze_signals_with_free_open_source_sigrok_PulseView.aspx

    Sigrok is an awesome signal analysis software suite that works with a broad range of interfaces and instruments

    The sigrok project is creating a portable, cross-platform, free and open-source signal analysis software suite that supports a wide variety of signal acquisition hardware, including logic analyzers, multimeters, oscilloscopes, and the like. While the suite contains several front-end subprojects, including sigrokcli (a command-line interface to manipulate sigrok), and sigrokqt (a Qt-based GUI to manipulate sigrok), in this article, I am concentrating on sigrok’s PulseView, an oscilloscope, logic analyzer, and mixed-signal (MSO) GUI front end.

    The sigrock software consists of the following components:

    Libsigrok: a shared library written in C, which contains the general infrastructure for handling logic analyzer data in a streaming fashion. It also contains the individual hardware drivers, which add support for various logic analyzers.
    Libsigrokdecode: a shared library written in C, which contains the protocol decoder infrastructure and the protocol decoders themselves, which are written in Python.
    Sigrokcli: a command-line front end, which uses both libsigrok and libsigrokdecode. It can acquire samples from logic analyzers and output them in various formats into files or to stdout and/or run protocol decoders on the acquired data.
    Sigrokqt: a Qt-based GUI for sigrok, using both libsigrok and libsigrokdecode. This is intended to be a cross-platform GUI (it runs fine and looks native on Linux, Windows, and Mac OS X) supporting data acquisition and protocol decoding.

    PulseView under Windows
    One of the first things to notice is that the sigrok suite needs some kind of hardware to interface to the signals you want to examine. In order to use libsigrok (via a sigrok front end) on Windows, then, you need to install the proper driver for the desired device. If the device is connected through a (virtual) COM port, libsigrok doesn’t need a special driver; only the driver provided by the manufacturer is required.

    USB is a different story, however. The device-specific USB driver shipped with vendor software is, in almost all cases, not going to work. Hence, you will need to install the WinUSB driver using the “Zadig” executable from the libwdi project. Fortunately, the PulseView installers ship with Zadig executable files for total convenience, and they’re accessible via the Windows “Start” menu.

    Reply

Leave a Comment

Your email address will not be published. Required fields are marked *

*

*