PicoMSO is an RP2040/RP2350-based mixed-signal instrument that combines a hardware-triggered logic analyzer and oscilloscope into a single firmware and libsigrok-compatible device.
It enables synchronized digital and analog capture with deterministic, hardware-level triggering using PIO and DMA.
- Mixed-signal capture (logic + analog in one session)
- Deterministic hardware triggering (PIO + DMA)
- No sample loss or software-trigger latency
- Seamless integration with libsigrok and PulseView
- Support for RP2040 and RP2350
- Prebuilt PicoMSO Desktop binaries for easy setup
- Channels: 16 digital
- Max sample rate: up to 200 MHz
- Capture depth:
- RP2040: up to 30 ksamples
- RP2350: up to 60 ksamples
- Pre-trigger buffer: up to 4 ksample
- Triggering: level and edge (hardware, real-time)
- Channels:
- 1 × 12-bit
- 2 × 8-bit (simultaneous)
- Max sample rate: up to 2 MS/s
- Pre-trigger: hardware circular buffer
| MCU | Features | Capture depth |
|---|---|---|
| RP2040 | Full feature set | Standard |
| RP2350 | Same + extended RAM | Increased |
- Analog enabled → max 2 MS/s
- Logic-only → up to 200 MHz
Requests beyond limits are rejected by the driver.
PicoMSO implements triggering entirely in hardware using PIO + DMA:
- No firmware latency
- No missed samples
- Fully deterministic capture start
This is a key difference compared to host-triggered devices.
Download from:
https://github.com/dgatf/PicoMSO/releases
Steps:
- Hold BOOTSEL
- Plug USB
- Copy
.uf2toRPI-RP2 - Done
Prebuilt desktop binaries with PicoMSO support are available here:
https://github.com/dgatf/pulseview/releases
Available packages:
- Linux: AppImage
- Windows: portable ZIP package
- macOS: DMG package
This is the recommended way to use PicoMSO.
- Connect your PicoMSO device via USB
- Launch PicoMSO Desktop
- Select the PicoMSO device from the device list
- Configure channels, samplerate, and trigger
- Click Run
- Linux: if the device is not detected, install the appropriate udev rules under
/etc/udev/rules.d/and reconnect the device. - Windows: you may need to install a WinUSB-compatible driver using Zadig.
- Prebuilt PicoMSO Desktop binaries are the recommended installation method.
Example Linux setup:
sudo cp udev/99-picomso.rules /etc/udev/rules.d/
sudo udevadm control --reload-rules
sudo udevadm triggerPicoMSO works directly with PulseView for interactive visualization of mixed-signal captures.
For development details and manual host-side setup, see:
git submodule update --init --recursive
cmake -S firmware/app -B build/picomso
cmake --build build/picomsoFor best results on high-speed logic signals:
- Add ~600 Ω series resistor
- Optional RC filtering for noisy environments
This significantly improves trigger stability and reduces glitches.
PicoMSO is stable and fully functional for core mixed-signal capture.
Planned improvements:
- Analog triggering
- Enhanced RP2350 support
- Extended capture configurations
GPL v3 (see LICENSE file)

