MCPcopy Index your code
hub / github.com/dotcypress/upico

github.com/dotcypress/upico @0.2.1

Chat with this repo
repository ↗ · DeepWiki ↗ · release 0.2.1 ↗ · + Follow
50 symbols 75 edges 7 files 0 documented · 0%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

μPico

What is it?

uPico is a RP2040 powered expansion card designed to enhance the capabilities of Clockwork's uConsole.

⚠️ Only R-01 and CM4 core are supported by control application. Work in progress for A04/A06 core modules.

Second project name is atto, cause 10−6 * 10-12 = 10-18 🤓

Features

  • Internal Speakers Support
  • Type-C (USB 2.0) port with programmable power switch and overcurrent protection
  • 3.3V and 5V external power out with programmable switch and overcurrent protection
  • RP2040 with extenal double-double PMOD compatible connector
  • RP2040 controllable LED

Resources

I sell on Tindie

Control app installation

  1. Download latest build from Releases page
  2. Extract installer: mkdir dist && tar -xzf upico_%version%.%core%.tar.gz -C dist
  3. Install: cd dist && sudo ./install.sh
  4. Cleanup: cd .. && rm -rf dist
  5. Print help: upico help

Building control app from sources

  1. Install rustup by following the instructions at https://rustup.rs
  2. Clone this repo: git clone git@github.com:dotcypress/upico.git && cd upico
  3. Build: cargo build --release
  4. Install app: sudo cp target/release/upico /usr/local/bin/
  5. Install service: sudo cp upico.service /etc/systemd/system/
  6. Enable service: sudo systemctl enable upico
  7. Start service: sudo systemctl start upico
  8. Setup uPico extender USB device: echo 'SUBSYSTEM=="usb",ATTRS{idVendor}=="1209",ATTRS{idProduct}=="bc07",MODE="0660",GROUP="plugdev"' > /etc/udev/rules.d/50-upico-permissions.rules
  9. Reload udev: udevadm control --reload-rules
  10. Print help: upico help

Flash firmware

  1. wget https://rptl.io/pico-blink
  2. upico install pico-blink or upico install -m pico-blink if automount is disabled for hot-plug devices.

See other examples: https://github.com/raspberrypi/pico-examples

High level design diagram

GPIO Header Pinout

╔══════╦══════╗
║ AUX  ║ AUX  ║
╠══════╬══════╣
║ VDD  ║ VDD  ║
║ GND  ║ GND  ║
║ IO3  ║ IO7  ║
║ IO2  ║ IO6  ║
║ IO1  ║ IO5  ║
║ IO0  ║ IO4  ║
╠══════╬══════╣
║ IO27 ║ IO29 ║
║ IO26 ║ IO28 ║
║ IO18 ║ IO19 ║
╠══════╬══════╣
║ VDD  ║ VDD  ║
║ GND  ║ GND  ║
║ IO11 ║ IO15 ║
║ IO10 ║ IO14 ║
║ IO9  ║ IO13 ║
║ IO8  ║ IO12 ║
╚══════╩══════╝

Errata

CM4 core & uPico PCB rev:0x02

  • Overcurrent reporting feature isn't supported.

License

Licensed under either of

  • Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
  • MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Core symbols most depended-on inside this repo

sleep
called by 7
src/main.rs
set_mode
called by 4
src/extender.rs
set_power_enabled
called by 4
src/gpio.rs
print_power_state
called by 3
src/main.rs
parse_power_line
called by 3
src/main.rs
wait_for_path
called by 3
src/main.rs
mount_pico
called by 3
src/main.rs
cli
called by 2
src/main.rs

Shape

Method 27
Function 10
Class 9
Enum 4

Languages

Rust100%

Modules by API surface

src/extender.rs12 symbols
src/service.rs10 symbols
src/gpio.rs10 symbols
src/main.rs9 symbols
extender/src/upico.rs5 symbols
extender/src/main.rs4 symbols

For agents

$ claude mcp add upico \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact