Skip to the content
4 layers58.4 × 67.3 mmPico de gallo, the printed circuit board in 3D

A tool for testing Embedded Rust drivers for discrete I2C/SPI components.

Size
58.4 × 67.3 mm
Copper layers
4
Thickness
1.6 mm
Parts
15
Nets
46
Pads
126
Tracks, vias
228, 30
Pours
31
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
21 Aug 2025
Updated
5 Nov 2026

Overview

Pico de gallo is an open-source printed circuit board by OpenDevicePartnership, from the OpenDevicePartnership/pico-de-gallo repository on GitHub, published under the MIT licence. It is a 4-layer board of 58.4 × 67.3 mm with 15 parts on 46 nets, routed with 228 tracks and 30 vias.

Its parts include 5 resistors, 1 capacitor and 1 connector. It belongs with the interfaces and adapters boards and the RP2040 boards of this library.

README

README.md

check no-std book crates.io crates.io crates.io crates.io crates.io crates.io

Pico de Gallo

A USB bridge that turns a Raspberry Pi Pico 2 into a host-accessible I²C, SPI, UART, GPIO, PWM, ADC, and 1-Wire interface. Write and test embedded Rust drivers on your development machine without cross-compiling or flashing firmware to a target board.

Overview

Pico de Gallo provides:

  • I²C: read, write, write-then-read, bus scanning, and transaction batching
  • SPI: read, write, full-duplex transfer, write-then-read, and transaction batching
  • UART: read, write, flush, and baud rate configuration
  • GPIO: digital input/output, edge event monitoring (subscribe/unsubscribe)
  • PWM: 4-channel PWM output with configurable frequency and duty cycle
  • ADC: 4 GPIO-based analog inputs (12-bit)
  • 1-Wire: bus reset, read, write, strong pullup, and ROM search (PIO hardware)
  • Configuration: runtime I²C/SPI/UART/PWM frequency and SPI mode changes

All communication uses postcard-rpc over USB — a compact, typed, binary RPC protocol.

Book

The Pico de Gallo Book covers hardware assembly, firmware flashing, and a step-by-step guide to writing an embedded device driver using Pico de Gallo.

Crates

CrateDescription
pico-de-gallo-firmwareEmbassy-rs firmware for the RP2350
pico-de-gallo-libAsync host library (requires tokio)
pico-de-gallo-halembedded-hal + embedded-hal-async implementation
pico-de-gallo-ffiC FFI bindings (shared library + header)
galloCLI application for batch-mode access
gallo-mcpMCP server exposing the device to AI agents
pico-de-gallo-internalShared wire-protocol types (internal)

Firmware

Embassy-rs firmware for the RP2350 that exposes I²C, SPI, UART, and GPIO peripherals over USB via postcard-rpc endpoints.

Two mutually exclusive board-revision features select the target. hw-rev2 (v1.1 and later) is the default. hw-rev1 (v1.0) is deprecated — it stays supported, built in CI, and published as firmware-rev1.uf2, with removal no earlier than 2031-09-01 — and must now be requested explicitly with --no-default-features --features hw-rev1. See crates/pico-de-gallo-firmware/README.md for build commands and Revisions for the policy.

Library

Async host-side library wrapping the postcard-rpc transport. Provides typed methods for every firmware endpoint. Requires the tokio runtime.

HAL

Implements both embedded-hal and embedded-hal-async traits — including I2c, SpiBus, SpiDevice, GPIO digital I/O, delay, and embedded-io Read/Write for UART (0.6 and 0.7, selectable by Cargo feature) — so embedded device drivers written against those traits can be tested on a host machine with real hardware attached to the Pico de Gallo.

App

Command-line tool (gallo) for interactive and batch-mode I²C/SPI/UART/GPIO access. Supports hex, binary, and ASCII output formats.

FFI

C-compatible shared library wrapping the Rust host library. Generates a C header via cbindgen. Suitable for integration into C/C++/Python/etc. projects.

Internal

Shared wire-protocol crate defining all postcard-rpc endpoints, request and response types, and constants. Used by both firmware and host crates.

Zephyr

Zephyr module that lets a Zephyr application running on native_sim drive real I²C, SPI, and GPIO peripherals through the pico_de_gallo shield — so you can write and debug a Zephyr driver on your laptop against real silicon, without cross-compiling or flashing. See zephyr/README.md for the full guide; the module is documented there rather than in the book, by the carve-out recorded in AGENTS.md §15.1.

Hardware

KiCAD schematic and PCB design for a Pico 2 daughter board. The v1.1 board features a single keyed 2x12 shrouded header that routes all 20 firmware signals with on-board I²C pull-ups and ADC input protection.

Additionally, a breadboard adapter is provided in the respective subfolder. This adapter allows connecting all Pico de Gallo pins to a breadboard with a single ribbon cable.

Case

3D-printable snap-fit enclosure (FreeCAD) in two parts — body and lid.

Parts

15
QtyValueFootprintReferences
4MountingHoleMountingHole:MountingHole_3.2mm_M3H1, H2, H3, H4
3100Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR3, R4, R5
24.7kResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR1, R2
1100nFCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC1
1Conn_02x12_Odd_EvenConnector_IDC:IDC-Header_2x12_P2.54mm_VerticalJ1
1NetTie_2NetTie:NetTie-2_SMD_Pad0.5mmNT1
1RaspberryPi_PicoModule:RaspberryPi_Pico_Common_UnspecifiedA1

The 13 most common of 15 parts.

More from OpenDevicePartnership/pico-de-gallo

1
  • 4 layers44.5 × 59.5 mmBreadboard adapter, the printed circuit board in 3D

    Breadboard adapter

    OpenDevicePartnership/pico-de-gallo

    A tool for testing Embedded Rust drivers for discrete I2C/SPI components.

    4 parts21MIT

Similar boards

  • 4 layers29 × 50.3 mmLg hvac esp32, the printed circuit board in 3D

    Lg hvac esp32

    JanM321/esphome-lg-controller

    Wired controller for LG HVAC units using ESPHome and ESP32

    15 parts2920BSD
  • 4 layers33.5 × 49 mmProbecard mmcx, the printed circuit board in 3D

    Probecard mmcx

    azonenberg/starshipraider

    Open hardware test equipment

    15 parts193BSD-3-Clause
  • 4 layers28.3 × 54 mmPCB2, the printed circuit board in 3D

    PCB2

    lukasloetkolben/OpenpilotHardware

    Welcome to the Openpilot Hardware Collection!

    15 parts95MIT
  • 4 layers59 × 32 mmCp pi if fit shield, the printed circuit board in 3D

    Cp pi if fit shield

    niklasekstrom/clockport_pi_interface

    Amiga clock port to Raspberry Pi interface

    15 parts61GPL-3.0
  • 4 layers19.5 × 10.5 mmUniversalStepDown, the printed circuit board in 3D

    UniversalStepDown

    RoboticsBrno/RB0005-UniversalStepDown

    Universal step-down module

    15 parts26CC-BY-SA-4.0
  • 4 layers114 × 52 mmLED heatplate, the printed circuit board in 3D

    LED heatplate

    lenaschimmel/bestelampe

    Die beste Lampe

    15 parts18
  • 4 layers41 × 20.5 mmQspi mitm, the printed circuit board in 3D

    Qspi mitm

    azonenberg/dumptruck

    FPGA based dumper for flashes and more

    15 parts17BSD-3-Clause

Questions

How big is the Pico de gallo PCB?

It measures 58.4 × 67.3 mm and has 4 copper layers, 1.6 mm thick.

What parts does the Pico de gallo use?

15 parts. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the Pico de gallo KiCad files?

From the OpenDevicePartnership/pico-de-gallo repository on GitHub, at the commit this page was made from: the board is hardware/pico-de-gallo.kicad_pcb and its schematic hardware/adapters/breadboard_adapter/breadboard_adapter.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Pico de gallo design in my own project?

Its repository publishes it under the MIT licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).