Skip to content

Multi device sets

deckerjulian edited this page Oct 6, 2026 · 3 revisions

Multi device sets

Two to five Pico boards can work as one logic analyzer, a multi device set: 48 to 120 channels captured together (Interceptor boards add 28 channels each). This page covers the wiring, connecting the boards, triggering and how openSciLab aligns the boards after every capture. It is also how a Commodore 64 is captured at its expansion port (C64 bus).

What a set can do

A set captures into the buffers of its boards: every board captures at the same rate and stores its channels, and openSciLab joins them into one capture. With Pico boards, board 1 has channels 1–24, board 2 channels 25–48, and so on.

A set only captures. Streams, the state mode, blast mode and bursts, test signals of the board and the pins of the boards (GPIO, PWM, analog inputs, generators) are not available for a set; use the boards one by one for those. The self-test runs on every board of the set.

What you need

  • 2 to 5 boards with the openSciLab Pico firmware, all with the same version (a set with different versions is refused; see Firmware).
  • Every board on USB (not WiFi).
  • One ground for all boards and the device under test.
  • The trigger line between the boards (below).

The inputs and the trigger input of the boards tolerate 3.3 V. A 5 V system such as a Commodore 64 needs a level shifter or a voltage divider – on the trigger input as well.

Wiring

Connect the trigger output of one board to the trigger input of the others:

Board Trigger output → trigger input
Raspberry Pi Pico, Pico 2, Pico W, Pico 2 W GP0 → GP1
RP2040-Zero GPIO 17 → GPIO 18
LogicAnalyzer Interceptor GPIO 0 → GPIO 1

On every board both pins are linked, so the trigger pins of all boards form one line. Whichever board evaluates the trigger drives that line and starts the others. In the pin table of a board these two pins are reserved (trigger output of a multi-board set, trigger input of a multi-board set). The self-test checks the link between them on each board (TRIGGER_LINK).

Connecting the boards

With Multiple devices... – in the device list under Available, or in Devices → Connect... under Add by hand. The dialog Connect multiple devices lists the Available ports with their Port, Device, Serial number and USB location: identical boards differ only by their serial number (the unique board ID) and the USB socket they are plugged into. Under Device order choose the port of Device 1 (master):, Device 2: and so on (Not used for the rest), then Connect.

With Autodetect – when several boards are plugged in, the device list offers Autodetect (2 analyzers) (or 3, 4, 5). It asks Several analyzers found: Combine into a multi device set or use only one board. For a set, the dialog Multi device set gives each board its Position (Device 1 (master), Device 2, ...). The order is remembered for these boards by their serial numbers, so the next autodetect connects the set at once. Devices → Forget multi device sets... forgets the remembered orders.

Device 1 is the master: the other boards are aligned to it. The set is one device with one device card and one data view.

On the command line and in flows the address of a set lists its ports, e.g. pico-multi:/dev/ttyACM0,/dev/ttyACM1 (the first board is the master).

Triggering

The board that owns the trigger channel evaluates the trigger and starts the other boards through the trigger line. In the capture settings the channels are named with their board, e.g. Channel 25 (board 2).

Trigger Where it can run
Edge on a channel on any board: that board drives the trigger output on the edge
Pattern on any board, within one group of consecutive trigger inputs of that board: channels 1–21 or 22–24 of a Pico board (25–45 or 46–48 on board 2, ...), 1–16, 17–20 or 21–24 of an RP2040-Zero, 1–24 or 25–28 of an Interceptor. Up to 16 channels, 5 with Fast matching (max. 5 bits). A pattern cannot span two boards.
External trigger (every board) the trigger signal goes to the trigger input of every board, and each board waits for the edge itself – all boards start together, without a trigger delay to compensate

The board that evaluates the trigger has to capture at least one channel itself; the capture settings say so (Board 2 evaluates the trigger, so it has to capture at least one channel ...).

A pattern trigger compares levels: if the pattern already matches when the capture starts, it triggers at once.

Aligning the boards

The other boards are started through a wire. openSciLab compensates the fixed delay of the trigger, but a board can still start a sample early or late, and the crystals of the boards drift apart by a few samples over a full buffer. After every capture of a set, openSciLab corrects this:

  • Reference line (exact): connect one signal of a slave board also to a free input of the master, and name that channel like the slave's channel plus ref. The standard profile C64 expansion port - board B (master) + board A (slave) has A0 (Y) ref on CH15 of board B for A0 of board A. Offset and drift are measured from the two copies.
  • Clock (estimate): without a usable reference line, the offset is estimated from a clock channel on the master named Φ2, PHI2, CLK or clock. The address lines of a synchronous bus change only after the falling clock edge, so a slave is moved by the smallest amount that leaves no address changes in the two samples before the clock edges.

After a capture the reference line is used when it is there. The status bar and the row Alignment on the Capture tab of the data view name the method and the correction, e.g. board 2 moved by -1 samples (reference A0 (Y) ref).

Data → Align boards measures again on the samples as captured – also for a capture of a set opened from a file. When several methods are possible, the dialog Align boards offers each board the methods it found (Reference line ... (exact), Clock ... (estimate)) or Leave unchanged; Align applies them. Without a reference line or a clock channel the boards cannot be aligned, and openSciLab says what is missing.

Without hardware

Simulated boards can be combined into a set as well and are captured like a real one. In the device list open the group Simulators and choose the multi device entry (Simulated multi device... in Devices → Connect...). The dialog Simulated multi device asks for the Board (a simulator profile, e.g. the Pico) and the number of Boards (2 to 5) and shows the number of channels in total. Its address is sim:pico*2 for two simulated Picos; in flows the channels of board 2 are called B2.GP2 and so on.

  • The template Multi board (Templates → Advanced) captures two simulated Picos as one analyzer with 48 channels and measures the time between the edges of the two boards.
  • On the Signals tab of a simulated set of two Picos, the scenario C64 bus puts a Commodore 64 running a small program on the channels of the profile C64 expansion port. Load that profile (Profiles → Standard profiles on the device card or in the data view) and capture: the C64 bus decoder disassembles what it ran.

See Simulators for more about simulated devices.

Clone this wiki locally