CLI tool
pico-coder/sigrok-pico avatar
pico-coder/sigrok-pico

sigrok-pico turns a Raspberry Pi Pico into a 21-channel logic analyzer and scope

Use a raspberry pi pico/pico2 (rp2040/rp2350) as a logic analyzer and oscilloscope with sigrok

1,116 stars131 forksCGPL-3.0

At a glance

What is it?
sigrok-pico implements a sigrok driver for the RP2040 and RP2350 over the Pico SDK's CDC serial library, and it was merged into mainline sigrok in September 2023, so the supported way to install it is from sigrok.org rather than from this repository. The repository keeps the firmware, a digital function generator for testing, an unofficial Windows PulseView installer, and a directory of prebuilt UF2 files.
Who is it for?
sigrok-pico fits a maker or hardware engineer who wants a cheap logic analyzer and oscilloscope that plugs into PulseView or sigrok-cli, and who already has a Pico and can flash UF2 files. It does not fit someone who wants the plugin installed from a third-party source, because the supported path is the mainline sigrok package, and the bundled PulseView installer is explicitly unofficial.
Can I use it commercially?
Yes, with conditions. GPL-3.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
Is it still maintained?
Yes. The repository last received commits 76 days ago.
What is it written in?
Mainly C, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 22, 2026, and from our analysis. They are not legal advice.

Editorial analysis

The supported install is mainline sigrok, not this repository

The Status section is short and it changes the framing of the whole project. The driver was merged to mainline sigrok in September 2023, and you should install from sigrok.org/downloads. There is a version caveat stated immediately after: PulseView 0.4.2 and sigrok-cli 0.7.2 do not support sigrok-pico.

So the practical workflow is: take the sigrok-pico driver from a current sigrok or PulseView release, flash the firmware onto the board, and select the driver in the application. The README points to the Getting Started page for the details, and the Quick Links table routes the reader to three documents, USER_GUIDE.md for getting started and analyzer operations, TECHNICAL.md for the serial protocol and build instructions, and pulseview/Readme.md for the Windows installer.

The version caveat is the one thing worth internalising. A distribution that ships PulseView 0.4.2 will not list the driver at all, and the workaround the README offers is to use a newer version or the unofficial Windows installer in this repository. That is why the Windows installer exists here at all, and why it is labelled unofficial.

The repository is therefore in an unusual position. It is not the place the project lives any more, it is the place the history and the supporting material live, and its job is to point you at the right upstream package and then explain the parts that the upstream documentation does not cover, which is the firmware.

For the audience, this is a hardware project rather than a software one. The description is a Raspberry Pi Pico as a logic analyzer and oscilloscope with sigrok, and the topics attached to the repository are the hardware side, with the C code, the Pico SDK and the sigrok driver.

The Pico talks to the host over USB CDC serial

The Overview section describes the implementation precisely. This project implements a sigrok driver for the Raspberry Pi PICO RP2040 using the PICO SDK CDC serial library, and it works with both PulseView, the graphical interface, and sigrok-cli, the command-line one.

The CDC part is the key to the design. The Pico enumerates as a serial device over USB, and the driver communicates with it as a serial port rather than as a USB instrument with a custom protocol. That has a practical consequence for anyone setting this up, which is that the host has to be able to open a serial port to the device, and the PulseView instructions say to select the raspberrypi_pico driver and configure the serial port.

Using a serial link rather than a custom USB protocol is a deliberate trade. CDC is well supported, it works on every platform that can open a serial port, and it does not need a kernel driver or a libusb filter on the host. What you give up is the bandwidth of a dedicated USB endpoint, and for a logic analyzer that is a real trade, because a logic analyzer is a device that moves a lot of samples a short distance. The README does not quantify it, and the capture rates you can expect are a question for the Getting Started page.

The second half of the design is that the analysis happens on the host, in sigrok, using the generic protocol handlers. The Pico's job is to sample and ship, and the decoding of protocols, the trigger and the display are sigrok's. That is why the same hardware works with both the GUI and the command-line tool, and it is why the project is a driver rather than an application.

21 digital channels and 3 analog, with mixed-mode capture

The channel counts are stated in the Overview and they are worth reading carefully, because they are the specification of the device you are buying.

* 21 digital channels, D2 through D22. * 3 analog channels, A0 through A2. * Mixed-mode capture, combining digital and analog.

The digital range starts at D2 rather than D0, which reflects the pins the Pico reserves for its own use, and the analog channels are the Pico's ADC inputs, so the three analog channels are sampled by the microcontroller's own converter rather than by an external front end. That is a meaningful limitation for anyone who needs a real oscilloscope front end, and it is the reason the description lists oscilloscope and logic analyzer together rather than claiming a bench instrument.

The firmware prebuilt files expand on the channel count in a useful way, since they are separate builds rather than one firmware with a runtime setting.

| File | Description | |------|-------------| | pico_baseline.uf2 | Standard firmware | | pico_dig26.uf2 | 26-channel digital | | pico_dig32.uf2 | 32-channel digital | | pico2_*.uf2 | PICO 2 variants |

So the baseline firmware is the 21-channel one, and there are 26-channel and 32-channel digital builds for boards with more exposed pins. The pico2_* files are the variants for the second-generation board, and the file listing does not break those down further, so the exact channel counts of the PICO 2 builds have to be read from the release directory.

The mixed-mode capture is the feature that makes the analog channels more than an afterthought, since a capture with digital and analog channels interleaved is what you need for a signal that has both a logic level and a waveform on it.

Firmware ships as UF2, and the VS Code extension builds your own

There are two ways to get firmware onto the board, and the README gives both.

The first is to download a pre-compiled UF2 file from pico_sdk_sigrok/release/, which covers the baseline, the 26-channel and 32-channel digital builds and the PICO 2 variants. Dragging a UF2 onto the Pico in bootloader mode is the standard way to flash it, and it means the reader does not need a toolchain at all.

The second is to build it, which the README describes as straightforward using the VSCode extension. The steps are to install the Raspberry Pi Pico Project extension in VSCode, import the project using the extension, select the latest SDK version when prompted, select the board type, for example pico or pico2, and then click Run Project (USB) to build and flash.

text
1. Install the "Raspberry Pi Pico Project" extension in VSCode
2. Import the project using the extension
3. Select the latest SDK version when prompted
4. Select the board type (e.g., `pico` or `pico2`)
5. Click "Run Project (USB)" to build and flash

For command-line builds and more details, the README points at TECHNICAL.md, which is also where the serial protocol is described. That is the right place to look if you want to script the build, since the VS Code extension path is a GUI flow and the repository is a C project with a firmware directory.

The board type selection matters more than it looks, because the RP2040 and the RP2350 that is in the PICO 2 are different chips, and the firmware is not interchangeable between them. The pico2_* files in the release directory exist for exactly that reason.

The Windows installer is unofficial, and there is a function generator too

Two directories in the repository do work that the upstream project does not.

The first is pulseview/, which holds a Windows installer for PulseView, and it is labelled unofficial in the directory listing itself. The reason it exists is the version constraint, since PulseView 0.4.2 does not support sigrok-pico, and the README points at this installer as the alternative for people who cannot move to a newer version. The build workflow badge in the README header is the one for this installer.

The second is pico_pgen/, described as a digital function generator for testing. That is a small but smart addition, because a logic analyzer with nothing to analyse is hard to evaluate. A digital pattern generator on the same board lets you drive known signals into the inputs and check that the analyser decodes them, which is the fastest way to confirm that the wiring, the sample rate and the trigger are doing what you expect.

The directory structure in the README is the whole map of the project.

code
sigrok-pico/
├── pico_pgen/              # Digital function generator for testing
├── pico_sdk_sigrok/        # RP2040 firmware (see release/ for UF2 files)
└── pulseview/              # Windows installer (unofficial)

Two of the three directories exist to serve a platform or a use case that the mainline package does not cover, and the third is the firmware itself. That is a fair summary of where this project sits now: the driver is upstream, and what remains here is the hardware-specific material that upstream does not carry.

GPL-3.0, and a repository whose work has moved upstream

The licence is GPL-3.0, and the README simply says to see LICENSE for details. That is a licensing fact rather than legal advice, and for a driver and firmware the copyleft terms are the usual ones: you can use and modify it, and distributing a modified version carries the source obligation.

The maintenance picture is the interesting part, and it is not a story of a stalled project. The driver was merged into mainline sigrok in September 2023, which means the actual driver work happens in the sigrok project now, with the sigrok-pico directory here kept in step or superseded by it. The repository is not archived, the default branch is main, and the last push was on 2026-08-07, so the remaining material, the firmware and the Windows installer, is still being touched.

There are no GitHub releases, and the release tags in the metadata are the upstream PDFium-style revision numbers from another project rather than versions of this one. The prebuilt firmware is distributed as files in the release directory of the repository rather than as tagged releases, which is the arrangement that a firmware directory tends to use.

So the version to track is not this repository's tags but the sigrok release that contains the driver, and the thing to watch in this repository is the firmware and the unofficial Windows installer. A reader picking this up should start with the Getting Started page, because the README's own first instruction is to start there.

The last thing the README says, and it is a good note to end on, is the reminder that PulseView 0.4.2 does not support sigrok-pico, and that the alternative is a newer version or the unofficial Windows installer in the pulseview directory.

Editorial conclusion

sigrok-pico fits a maker or hardware engineer who wants a cheap logic analyzer and oscilloscope that plugs into PulseView or sigrok-cli, and who already has a Pico and can flash UF2 files. It does not fit someone who wants the plugin installed from a third-party source, because the supported path is the mainline sigrok package, and the bundled PulseView installer is explicitly unofficial. Before you start, read the Getting Started page, check that your PulseView is newer than 0.4.2, and use the prebuilt UF2 matching the channel count you need rather than building the firmware first.

Frequently asked questions

How do I install sigrok-pico?

It was merged into mainline sigrok in September 2023, so the supported route is to install from sigrok.org/downloads. PulseView 0.4.2 and sigrok-cli 0.7.2 do not support sigrok-pico, so use a newer version or the unofficial Windows installer in the pulseview/ directory of this repository.

How many channels does the Raspberry Pi Pico logic analyzer have?

The README lists 21 digital channels, D2 to D22, and 3 analog channels, A0 to A2, with mixed-mode capture combining digital and analog. Prebuilt firmware includes a baseline build, a 26-channel and a 32-channel digital build, and PICO 2 variants.

How do I get the firmware onto the Pico?

Either flash a pre-compiled UF2 file from pico_sdk_sigrok/release/, or build it with the Raspberry Pi Pico Project extension in VSCode: install the extension, import the project, pick the latest SDK version and the board type such as pico or pico2, then use Run Project (USB) to build and flash. Command-line build details are in TECHNICAL.md.

What is the pico_pgen directory for?

It holds a digital function generator for testing, which lets you drive known digital signals into the analyser inputs so you can check the wiring, the sample rate and the trigger. It is a testing aid rather than part of the driver.

Does sigrok-pico work with sigrok-cli as well as PulseView?

Yes. The project implements a sigrok driver for the RP2040 using the PICO SDK CDC serial library, and it works with both PulseView, the graphical interface, and sigrok-cli, the command-line tool, with PulseView being the recommended graphical interface.

Official sources

  1. Issues
  2. License: GPL-3.0
  3. pico-coder/sigrok-pico on GitHub
  4. README
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/pico-coder-sigrok-pico.svg)](https://hysenlabs.com/projects/pico-coder-sigrok-pico)