Skip to content

Protocol decoders

Julian Decker edited this page Sep 16, 2026 · 2 revisions

Protocol decoders

The application runs the unmodified pd.py decoders of libsigrokdecode natively in Python — over 130 of them ship with it, from I²C, SPI and UART to CAN, USB and the mos6502 and c64bus decoders for retro computers.

Adding a decoder

  1. Add decoder… in the panel on the right, pick a protocol.
  2. Assign the channels. Inputs whose name matches a channel name of the capture are assigned automatically — another reason to name channels before capturing.
  3. Set the options (bit rate, word size, address format …).

Decode automatically re-runs the decoders after every capture; Decode now does it on demand. Decoders that consume the output of another one (e.g. a display decoder on top of SPI) can be stacked with the stack button.

Reading annotations

Each decoder produces one or more annotation rows above the waveform.

Annotation rows of the C64 bus decoder above the waveform

  • Hover an annotation to see how its value is composed: the samples it covers are marked in every view, a dashed line shows where the decoder read the value, and every channel it read shows its level (A15 = 1 (+$8000)). Buses such as A0…A15 also show their value.
  • Click the name of a row to open it as a list in a separate window — sample, time, duration, type and value, with a filter and Copy / Copy values. This is the fastest way to read long rows such as a disassembly.

The annotation row as a list

  • Double-click an annotation to open that list with the entry selected. Selecting an entry jumps the waveform to it.

Where decoders are searched

In this order — the first decoder with a given id wins:

  1. paths given with --decoders (repeatable)
  2. the environment variable PIPILOGICANALYZER_DECODERS
  3. ./decoders in the working directory
  4. decoders in the project directory
  5. decoders inside the installed package (the ready-to-run builds)
  6. <settings directory>/decoders
  7. system paths of libsigrokdecode (/usr/share/libsigrokdecode/decoders, PulseView on Windows, Homebrew on macOS)

Help → Decoder search paths shows the directories and how many decoders were loaded. To add your own, drop it into <settings directory>/decoders/<id>/.

Decoders are Python files that are executed. Treat a decoder from an untrusted source like any other software you install.

Clone this wiki locally