Install the local toolchain and helper apps:
scripts/bootstrap_macos.shThat setup expects:
cmakeninjapicotool- an Arm embedded GCC toolchain
If Homebrew's default embedded compiler is missing nosys.specs on your machine, use the workspace-local fallback:
scripts/extract_local_toolchain.shscripts/clone_deps.shExpected directories:
third_party/pico-sdkthird_party/pico-examplesthird_party/pimoroni-picothird_party/pimoroni-pico-rp2350
scripts/configure_firmware.sh
cmake --build build/picoMain outputs:
build/pico/claude_buddy_pico.uf2build/pico/claude_buddy_pico_smoke.uf2build/pico/claude_buddy_ble_smoke.uf2
The safest fallback workflow on this prototype was:
- Disconnect the battery.
- Hold
BOOTSEL. - Plug USB into the Mac.
- Wait for
RP2350to mount. - Copy the UF2.
There was also a battery-connected method that worked on this hardware:
- Leave the battery connected.
- Plug USB into the Mac first.
- Hold
BOOTSEL. - While holding
BOOTSEL, press and hold the LiPo SHIM side button near the USB end. - Wait for
RP2350to mount.
Example:
cp build/pico/claude_buddy_pico.uf2 /Volumes/RP2350/Use this first when you only want to verify:
- screen draw
- A/B/X/Y buttons
- RGB LED
- USB / VSYS readings
Use this when debugging:
- BLE discovery
- passkey pairing
- Claude Desktop connection
- Buddy
statuspayload shape
Use this for the real Pico Buddy firmware:
- Buddy UI
- secure pairing flow
- approvals
- demo mode
- dock clock
- flash-backed settings/stats
- single installed pushed character pack
- Turn on Developer Mode in Claude Desktop.
- Open
Developer -> Open Hardware Buddy... - Click
Connect - Select
Claude Pico - Complete the passkey flow if prompted
The Claude Desktop Name field changes the large device name shown on the Pico. The smaller owner label comes from the Buddy owner value that Claude Desktop or the bridge sends.
On-device settings are available with Hold A.
For the full on-device UI walkthrough, see user-guide.md.
If the Hardware Buddy menu is hidden on a Claude Desktop build, verify the app feature exposure first before assuming the Pico firmware is at fault.
- Final firmware targets
pico2_w. - Battery sampling uses
GPIO29 / ADC3forVSYS. - USB presence uses CYW43
WL GPIO 2. - The display RGB LED pin mapping in docs vs code has been inconsistent historically, so test it on-device rather than trusting old snippets.