
Breadboard adapter
OpenDevicePartnership/pico-de-gallo
A tool for testing Embedded Rust drivers for discrete I2C/SPI components.

A tool for testing Embedded Rust drivers for discrete I2C/SPI components.
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.
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.
Pico de Gallo provides:
All communication uses postcard-rpc over USB — a compact, typed, binary RPC protocol.
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.
| Crate | Description |
|---|---|
pico-de-gallo-firmware | Embassy-rs firmware for the RP2350 |
pico-de-gallo-lib | Async host library (requires tokio) |
pico-de-gallo-hal | embedded-hal + embedded-hal-async implementation |
pico-de-gallo-ffi | C FFI bindings (shared library + header) |
gallo | CLI application for batch-mode access |
gallo-mcp | MCP server exposing the device to AI agents |
pico-de-gallo-internal | Shared wire-protocol types (internal) |
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.
Async host-side library wrapping the postcard-rpc transport. Provides typed methods for every firmware endpoint. Requires the tokio runtime.
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.
Command-line tool (gallo) for interactive and batch-mode I²C/SPI/UART/GPIO
access. Supports hex, binary, and ASCII output formats.
C-compatible shared library wrapping the Rust host library. Generates a C header via cbindgen. Suitable for integration into C/C++/Python/etc. projects.
Shared wire-protocol crate defining all postcard-rpc endpoints, request and response types, and constants. Used by both firmware and host crates.
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.
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.
3D-printable snap-fit enclosure (FreeCAD) in two parts — body and lid.
| Qty | Value | Footprint | References |
|---|---|---|---|
| 4 | MountingHole | MountingHole:MountingHole_3.2mm_M3 | H1, H2, H3, H4 |
| 3 | 100 | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R3, R4, R5 |
| 2 | 4.7k | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R1, R2 |
| 1 | 100nF | Capacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolder | C1 |
| 1 | Conn_02x12_Odd_Even | Connector_IDC:IDC-Header_2x12_P2.54mm_Vertical | J1 |
| 1 | NetTie_2 | NetTie:NetTie-2_SMD_Pad0.5mm | NT1 |
| 1 | RaspberryPi_Pico | Module:RaspberryPi_Pico_Common_Unspecified | A1 |
The 13 most common of 15 parts.

OpenDevicePartnership/pico-de-gallo
A tool for testing Embedded Rust drivers for discrete I2C/SPI components.

JanM321/esphome-lg-controller
Wired controller for LG HVAC units using ESPHome and ESP32




niklasekstrom/clockport_pi_interface
Amiga clock port to Raspberry Pi interface

RoboticsBrno/RB0005-UniversalStepDown
Universal step-down module


It measures 58.4 × 67.3 mm and has 4 copper layers, 1.6 mm thick.
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.
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.
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).