Picoclaw hardware

Read and control I2C and SPI peripherals on Sipeed boards (LicheeRV Nano, MaixCAM, NanoKVM).

install
source · Clone the upstream repo
git clone https://github.com/sipeed/picoclaw
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/sipeed/picoclaw "$T" && mkdir -p ~/.claude/skills && cp -r "$T/workspace/skills/hardware" ~/.claude/skills/sipeed-picoclaw-hardware && rm -rf "$T"
manifest: workspace/skills/hardware/SKILL.md
source content

Hardware (I2C / SPI)

Use the

i2c
and
spi
tools to interact with sensors, displays, and other peripherals connected to the board.

Quick Start

# 1. Find available buses
i2c detect

# 2. Scan for connected devices
i2c scan  (bus: "1")

# 3. Read from a sensor (e.g. AHT20 temperature/humidity)
i2c read  (bus: "1", address: 0x38, register: 0xAC, length: 6)

# 4. SPI devices
spi list
spi read  (device: "2.0", length: 4)

Before You Start — Pinmux Setup

Most I2C/SPI pins are shared with WiFi on Sipeed boards. You must configure pinmux before use.

See

references/board-pinout.md
for board-specific commands.

Common steps:

  1. Stop WiFi if using shared pins:
    /etc/init.d/S30wifi stop
  2. Load i2c-dev module:
    modprobe i2c-dev
  3. Configure pinmux with
    devmem
    (board-specific)
  4. Verify with
    i2c detect
    and
    i2c scan

Safety

  • Write operations require
    confirm: true
    — always confirm with the user first
  • I2C addresses are validated to 7-bit range (0x03-0x77)
  • SPI modes are validated (0-3 only)
  • Maximum per-transaction: 256 bytes (I2C), 4096 bytes (SPI)

Common Devices

See

references/common-devices.md
for register maps and usage of popular sensors: AHT20, BME280, SSD1306 OLED, MPU6050 IMU, DS3231 RTC, INA219 power monitor, PCA9685 PWM, and more.

Troubleshooting

ProblemSolution
No I2C buses found
modprobe i2c-dev
and check device tree
Permission deniedRun as root or add user to
i2c
group
No devices on scanCheck wiring, pull-up resistors (4.7k typical), and pinmux
Bus number changedI2C adapter numbers can shift between boots; use
i2c detect
to find current assignment
WiFi stopped workingI2C-1/SPI-2 share pins with WiFi SDIO; can't use both simultaneously
devmem
not found
Download separately or use
busybox devmem
SPI transfer returns all zerosCheck MISO wiring and device power
SPI transfer returns all 0xFFDevice not responding; check CS pin and clock polarity (mode)