Multi-Bus Adaptor Firmware and Client Code for macOS and Linux
Latest Release: 1.3.0
New Version
About Depot
Depot comprises firmware and client code that allows you to connect a multi-bus adaptor board to your Mac or Linux computer and communicate with I²C and 1-Wire peripheral devices wired up to the adaptor.
The adaptor is a Raspberry Pi RP2040-based board, such as the Pico, running the Depot firmware. The adaptor relays commands from client apps to peripheral devices, be they sensors, displays, actuators, storage chips, or whatever.
The Mac or Linux box connects to the adaptor over USB.
Documentation
The Depot firmware is documented separately in the documentation section.
cli2c
Depot builds on and extends the older cli2c tool, and its version numbering is therefore consistent with the older code.
Why Depot?
Because it’s a place in which you’ll find lots of buses.
Install Depot
Important WE STRONGLY RECOMMEND YOU BUILD THE FIRMWARE WITH PICO SDK 1.5.0 OR ABOVE.
- Clone the Depot repo and navigate to the repo directory.
cmake -S . -B firmware-buildcmake --build firmware-build- Transfer the firmware to the specific board you are using:
./deploy.sh /path/to/device firmware-build/firmware/pico/firmware_pico_rp2040.uf2./deploy.sh /path/to/device firmware-build/firmware/qtpy/firmware_qtpy_rp2040.uf2./deploy.sh /path/to/device firmware-build/firmware/promicro/firmware_promicro.uf2./deploy.sh /path/to/device firmware-build/firmware/tiny/firmware_tiny2040.uf2./deploy.sh /path/to/device firmware-build/firmware/trinkey/firmware_trinkey2040.uf2
The bundled deploy script, deploy.sh, tricks the RP2040-based board into booting into disk mode, then copies across the newly build firmware. When the copy completes, the RP2040 automatically reboots. This saves of a lot of tedious power-cycling with the BOOTSEL button held down.
Debug vs Release
You can switch between build types when you make the cmake call in step 2, above. A debug build is made by default, but you can make this explicit with:
cmake -S . -B firmware-build -D CMAKE_BUILD_TYPE=Debug
For a release build, which omits the UART debugging code, call:
cmake -S . -B firmware-build -D CMAKE_BUILD_TYPE=Release
Follow both of these commands with the usual:
cmake --build firmware-build
Build the Client Apps
macOS
You can build the code from the accompanying Xcode project files:
cli2c.xcodeproj— Containscli2c.segmentandmatrix.cliwire.xcodeproj— Containscliwire,ds18b20andSensor(GUI).
In each case:
- Archive the project.
- Save the build products on the desktop.
- Copy the binary artifacts to your preferred location listed in
$PATH.
Linux
- Navigate to the repo directory.
cd linuxcmake -S . -B client-buildcmake --build client-build- Copy the binary artifacts from the
client-builddirectory to your preferred location listed in$PATH.
The Client Apps
The following client apps are provided:
| App | Description | Platform(s) | Docs |
|---|---|---|---|
cli2c | A CLI utility for generic I²C use | macOS, Linux | Link |
matrix | A CLI utility to operate Holtek HT16K33-based matrix displays via I²C | macOS, Linux | Link |
segment | A CLI utility to operate Holtek HT16K33-based segment displays via I²C | macOS, Linux | Link |
cliwire | A CLI utility for generic 1-Wire use | macOS, Linux | Link |
ds18b20 | A CLI utility to sample an Analog Devices 1-Wire DS18B20 temperature sensor | macOS | Link |
Sensor | A GUI app to sample an Analog Devices 1-Wire DS18B20 temperature sensor | macOS | Link |
All of these apps run on macOS and Linux with the exception of ds18b20 (written in Swift) and Sensor (a Swift-based macOS GUI app):
Every app makes use of common serial driver and bus driver code so you can view the apps as examples as much as tools that are ready to use.
Source Code
You can view Depot’s source code at GitHub.
Release Notes
- 1.3.0 10 August 2026
- Firmware: add initial support for Adafruit Feather RP2040.
- Firmware: fixed an incorrect handling of signal.
- Firmware: fixed some potential buffer overflows in the I²C and 1-Wire pathways.
- Firmware: switched from
sprintf()tosnprintf()for greater resilience. - Firmware: removed dead lines, unnecessary comments, extra semi-colons.
- Firmware: applied consistent variable naming.
- Firmware: reduced cross-directory coupling.
- Firmware: replaced literals with
#defines. - Firmware: removed duplication across the various
CMakeLists.txtfiles. - Firmware: correct STEMMA usage and
CMakeLists.txtnotes. - Clients: fix use of
vfor a command and for version information. - Examples: add
README.mdnote about need for virtual environment to run Python examples. - Examples: add
mcp9808_temp_disp_cli2c.pyPython example.
- 1.2.3 16 July 2026
- Interim release with minor changes as I get back into the codebase.
- Firmware: add provisional Pico 2 support.
- Firmware: refactor excessive use of
#includestatements.
- 1.2.2 23 April 2023
- Support the Pico SDK’s
PICO_BOARDenvironment variable to select specific firmware targets. - Support the Arduino Nano RP2040 Connect.
- Support the Pico SDK’s
- 1.2.1 21 March 2023
- Add LTP-305 example.
- 1.2.0 17 March 2023
- Renamed Depot from cli2c.
- Add 1-Wire support.
- Add 1-Wire client apps
cliwire,ds18b20andSensor. - Many under-the-hood improvements and fixes.

Comments
Nothing yet. Say the first thing.
Sign in to join the conversation.